【问题标题】:linux fio IO-speed test confusing resultlinux fio IO-speed测试混淆结果
【发布时间】:2018-10-23 06:29:29
【问题描述】:

我在 kubuntu 18.04 上使用我的闪存驱动器 (/dev/sdc1) 上的工具 fio 运行了一些 IO 测试,以测量我的设备在不同环境下的读写速度。但过了一段时间,我得到了这些真正令人困惑的结果。他们在设备的网站上说,写入速度高达 150MB/s(见链接)。但我得到了更高的结果(见图 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

【问题讨论】:

  • 您好!您的问题最好在 serverfault.comsuperuser.com 之类的网站上提出。此外,由于您没有包含您运行的完整 fio 命令行,因此很难有意义地谈论您的测试方法是否存在错误(我无法判断您的 I/O 是否只是进入 ram 缓存和稍后写回)...
  • 感谢您的评论,我更新了我的帖子
  • allow_mounted_write=true - 哎呀!你确定你真的想要这个吗?卸载安装在/dev/sdc 上的任何东西然后运行fio 不是更安全吗?内核不会对你在背后破坏那些文件系统块感到满意......

标签: linux ubuntu io ubuntu-18.04


【解决方案1】:

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

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

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

另一个问题是您不知道您的 SSD 何时必须进行垃圾收集。如果它有大量“未写入”的空间,那么它可能会比它必须做大量的洗牌来接受新的写入时更快。

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

【讨论】:

  • 非常感谢!!!!我确实设置了错误的块大小并且好几天都没有看到它。我会尝试一个新的测试,看看它是否已修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多