【问题标题】:FIO Latency Vs Btt latencyFIO 延迟与 Btt 延迟
【发布时间】:2017-07-28 09:58:00
【问题描述】:

如果是btt结果,我最熟悉

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

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

  • 提交延迟或 Slat
  • 完成延迟或 Clat
  • 总延迟或纬度

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

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

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

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

谢谢

【问题讨论】:

    标签: performance io latency blktrace


    【解决方案1】:

    这在很大程度上取决于正在使用的 ioengine 以及您是否使用 direct=1 提交 I/O。假设--ioengine=libaio --direct=1

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 2019-06-07
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多