Измерьте время чтения USB для всех устройств с помощью hdparm

Измерьте время чтения USB для всех устройств с помощью hdparm

Я хотел бы измерить время чтения всех подключенных 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. Команда выше отобразит все строки, которые не заканчиваются на digitили содержат слово name.

Например, если у вас есть два жестких диска, которые вы хотите исключить ( /dev/sdaи /dev/sdb), приведенную выше команду можно изменить следующим образом:

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

Связанный контент