hdparmを使用してすべてのデバイスのUSB読み取り時間を測定します

hdparmを使用してすべてのデバイスのUSB読み取り時間を測定します

マウントされているすべての USB デバイスの読み取り時間を測定したいと思います。

見つかったこれはhdparmこれに適しています:

$ sudo hdparm -tT /dev/sdb1

しかし、複数のデバイスを接続して反復処理したいのですが、/dev/bus/usb/<bus>/<address>エラーが発生します。

$ sudo hdparm -tT /dev/bus/usb/003/002
read(2097152) returned 62 bytes
 BLKGETSIZE failed: Operation not permitted
BLKFLSBUF failed: Operation not permitted

(バスと住所は で見つけましたlsusb。)

このアプローチを機能させるにはどうすればよいですか?

答え1

次のようなことができます:

for i in $(cat /proc/partitions | grep -v "[0-9]$\|name" | awk '{ print $4 }'); do hdparm -tT /dev/"$i"; done

これは をループし/proc/partitions、デバイス名を取得してから、それらの値を に渡しますhdparm。 は、パーティションではなくデバイス上で実行されることを目的としています (例: /dev/sda ではなく /dev/sda1)。

上記のコマンドは、既存のハードドライブと USB デバイスにも適用されます。それらを除外するには、 の部分を変更します。上記のコマンドは、 で終わらない、または という単語を含まないgrep -vすべての行を表示します。digitname

たとえば、除外したいハードドライブが 2 つ (/dev/sdaおよび/dev/sdb) ある場合、上記のコマンドを次のように変更できます。

for i in $(cat /proc/partitions | grep -v "[ab0-9]$\|name" | awk '{ print $4 }'); do hdparm -tT /dev/"$i"; done

関連情報