FIO Latency Vs Btt延迟

时间:2017-03-08 00:52:06

标签: performance io latency blktrace

如果是btt结果,我最熟悉

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

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

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

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

如果磁盘延迟更高或请求排队延迟更高,FIO结果可以提供见解吗?

在FIO中报告“Slat”或“Clat”或“lat”,与Q2D,C2D或Q2C直接相当?

可能这两个工具可能无法直接比较,在这种情况下你可以解释一下原因吗?

感谢

1 个答案:

答案 0 :(得分:1)

这在很大程度上依赖于正在使用的发动机以及您是否使用direct=1提交I / O.假设--ioengine=libaio --direct=1

  • 板条大致是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/latest/fio_doc.html#cmdoption-arg-ioengine的libaio部分的信息。

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

fio数字可能会大于btt的数字,因为fio在更高的级别(用户空间)运行,因此数据还可以进一步传播。