我查过这个hdparm
命令,但所有的例子都是用于测试磁盘的。不确定它是否可以用于测试外部 USB 设备(特别是 USB 闪存盘)。
我现在正在使用这个代码:
dd if=/dev/zero of=/media/storage/speed_test.txt bs=100K count=1k
sudo /sbin/sysctl -w vm.drop_caches=3
dd if=$/media/storage/speed_test.txt of=/dev/null bs=100K count=1k
我应该预期的读写速度范围是多少?我的写入速度约为 900 MB/s,读取速度约为 500 MB/s,我认为这些数字太高了。我清除缓存的方式是否正确?我可以使用哪些其他命令来测试速度?
更新:
谢谢user427539
的回答和zloster
的评论,我现在对速度有了更准确的测量。我正在用 16GB 的 USB 闪存棒进行测试,我正在写入和读取 1 GB 的数据。我的写入速度为 22 MB/s,读取速度为 46 MB/s。但是,对于 USB3 闪存设备来说,这样的速度是不是太慢了?为什么速度会这么低?
答案1
首先,您写入的数据只有 100MB。磁盘和控制器也有一个您不会丢弃的缓存,因此您需要进行更大规模的测试,以确保这些缓存不会破坏结果。
将其增加至少 1GB。也许可以通过更改为 bs=1M。为了确保万无一失,我通常使用 10GB 进行测试。
然后,您需要确保数据确实到达磁盘,在第一行末尾添加“conv = fdatasync”即可执行此操作。
至于正常速度,USB2 设备/端口通常为 10 到 20 MB/秒。USB3 设备应为 50 到 150MB/秒。如果我看到新设备达到 120MB/秒,我会非常高兴。这是 7.2GB/分钟,速度非常快。
但请注意,旋转磁盘的读写速度取决于磁头下方盘片的旋转速度。因此,如果您知道密度(位/英寸),则可以计算数据速度:
吞吐量 = 半径 * 2PI * 密度 * RPM
您实际上无法控制密度,但可以控制 RPM,RPM 越高,原始速度越快。
另外,请注意,盘片的半径会根据磁头的位置而变化。外轨的半径可能约为 1.75 英寸,但内轨的半径只有 0.75 英寸。这意味着当您从外轨移到内轨时,驱动器的速度会真正减慢。Virgin 驱动器通常先将数据写入外轨,因此一开始速度会快得多。随着驱动器的容量越来越大,速度会越来越慢。我经常看到驱动器几乎已满时性能下降 50%。