我用fio 3-13
它来对 SSD 进行基准测试。作业文件包含多个要按顺序运行的作业(使用参数stonewall
),但它们都包含fdatasync=1
。因此,输出报告了fdatasync
持续时间百分位数,我对解析它们很感兴趣。
问题是,为了保持宽度大致不变,fio
会以不同的度量单位(微秒和毫秒)报告它们。有没有办法强制 fio 始终采用特定的度量单位?这就是输出的情况,它始终以微秒为terse
单位报告和百分位数。不幸的是,输出不报告百分位数。lat
slat
clat
terse
fdatasync
答案1
有没有办法强制 fio 始终采用特定的计量单位?
对于 fio 的人类可读输出来说,这实际上并不是如此,但是对于其机器可读的输出格式,单位大小是固定的。
Fio 的人类可读输出并非设计为可抓取的,并且没有办法强制单元处于该输出模式,除非更改 fio 的源代码并重新编译。但是,强烈建议您切换 fio 以使用机器可读的输出格式(例如通过使用--output-format=json+
所以你也获得延迟输出) 因为(正如问题中提到的)该单位是固定的,具有这样的输出格式。
如果你决定无论如何都要抓取未修改的 fio 的可读输出,那么你必须找到一种编程方法来应对不断变化的单位,但请参阅“基准测试出了问题”布伦丹·格雷格 (Brendan Gregg) 在 2013 年 Surge 闪电演讲中发出警告......
(Matteo 最初在“强制同步百分位数测量单位”fio 邮件列表发帖并且那里也有回复)