1

在 btt 结果的情况下,我最熟悉

  • Q2D 延迟 - 从请求提交到设备的时间
  • D2C 延迟 - 处理请求的设备延迟
  • Q2C 延迟 - 总延迟,Q2D + D2C = Q2C

我需要帮助比较 FIO 报告的延迟与 Btt 工具。在 FIO 结果中有

  • 提交延迟或 Slat
  • 完成延迟或 Clat
  • 总延迟或 lat

我确实阅读了一些关于 FIO 结果的文章,但我仍然不清楚 slat、clat 和 lat 是什么意思?

如果磁盘延迟较高或请求排队延迟较高,FIO 结果能否提供见解?

FIO 中报告的“Slat”或“Clat”或“lat”是否与 Q2D、C2D 或 Q2C 直接可比?

可能这两个工具没有直接可比性,在这种情况下你能解释一下为什么吗?

谢谢

4

1 回答 1

1

这在很大程度上取决于使用的 ioengine 以及您是否使用direct=1. 假设--ioengine=libaio --direct=1

  • slat 大约是 Q2D。
  • clat大致是D2C。
  • lat 大约是 Q2C。

您需要一个异步 ioengine,因为同步 ioengines 阻止提交直到 I/O 完成(请参阅http://fio.readthedocs.io/en/latest/fio_doc.html#interpreting-the-output的 slat 部分)而异步ioengines 可以与接收 I/O 完成通知分开提交。你需要它,direct=1因为没有它你的 I/O 只会进入 Linux 页面缓存,甚至可能不是异步的(即使 ioengine 是异步的!) - 请参阅http://fio.readthedocs.io/en的 libaio 部分/latest/fio_doc.html#cmdoption-arg-ioengine了解详情。

还要记住,在 fio 提交之后,你不知道块层会对 I/O 做什么。在某些情况下,它可能会选择将 I/O 合并在一起(例如,I/O 是连续的并且足够靠近)或将它们分开(例如,如果它们对于设备来说太大),从而破坏 fio 之间的任何一一对应关系值和 btt 值。

fio 的数量可能会大于 btt 的数量,因为 fio 在更高级别(用户空间)上运行,因此数据需要进一步传输。

于 2017-10-28T06:40:53.267 回答