linux fio IO-speed 测试混淆结果

linux fio IO-speed test confusing result

我使用闪存驱动器上的工具 fio 运行 在 kubuntu 18.04 上进行了一些 IO 测试 (/dev/sdc1),以测量我的设备在不同情况下的读写速度。但过了一会儿,我得到了这些非常混乱的结果。他们在设备的网站上说,写入速度高达 150MB/s(参见 link)。但是我得到了更高的结果(见图 1),我得到了 bw = 151974KB/s 的写作。我也在我的 Windows PC 上测试了该设备,得到了不同的结果,比如 ~100 MB/s,这更真实。这怎么可能?我还列出了 lsblk 和 blkid 的输出(见图 2)。 这是我的命令行:

   sudo fio --rw=write --name=test1 --size=100M --direct=1 --bs=1024k --filename=/dev/sdc1 --allow_mounted_write=true

https://www.sandisk.com/home/usb-flash/extreme-go-usb

Linux fio benchmark result Linux output lsblk blkid

(注意:这不是编程问题 - 也许您打算 post 将其发送到 https://serverfault.com/ or https://superuser.com/ 之类的地方?)

您的块大小很大,因此您可能会迫使内核将其拆分成更小的块。通常您打算使用您知道不会被分解的特定块大小来检查性能,因此这可能是一个警告信号。但是,当您不使用并行 threads/process 或异步 ioengine 时,这是一种根据提交到磁盘的内容强制并行的方法,因此如果您了解自己在做什么,这样做是有效的做!

从技术上讲,您写入的内容并不多(只有 100 MB),因此当您绕过 Linux 内核的缓存时,您可能会发现您的写入最终进入了 SSD 的缓存。你没有说你有哪个 SSD,但有些可以有 100 兆字节的非易失性缓存,所以如果你的所有数据都在那里,你将获得不切实际的速度。

另一个问题是您不知道 SSD 何时需要进行垃圾回收。如果它有 "unwritten" space 的负载,那么它可能比必须进行大量改组才能接受新写入时运行得更快。

请注意,正确地对 SSD 进行基准测试并不简单。例如,初学者请参阅 https://www.snia.org/sites/default/education/tutorials/2011/fall/SolidState/EstherSpanjer_The_Why_How_SSD_Performance_Benchmarking.pdf and https://www.snia.org/sites/default/files/technical_work/PTS/SSS_PTS_2.0.1.pdf。祝你好运!