使用 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部分。上面的命令將顯示所有不以 a 結尾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

相關內容