我正在寻求有关阅读和解码 fio 的帮助--带宽日志。
我已经运行了下面的命令,输出包括如下所示的几列,如何读取和解码每一列?
fio --invalidate=1 --filename=/dev/nvme0n1 --direct=1 --ioengine=libaio --iodepth=32 --time_based --runtime=3600 --bandwidth-log --name=/dev/nvme0n1 --rw=randread --bs=4k --log_avg_msec=1000
输出示例(前几行):
501, 334730, 0, 0, 0
1177, 647294, 0, 0, 0
1678, 985860, 0, 0, 0
2180, 948023, 0, 0, 0
2681, 967369, 0, 0, 0
3182, 977405, 0, 0, 0
3683, 982035, 0, 0, 0
- 如何读取第一列?无论我为 --timebased 提供什么时间段,我总共都会得到 1024 个结果。
- 第二列不适合 IOPS,也不适合 MB/s 的 BW。我读到过某处说它是 KB/s,并尝试了转换,在某些情况下可以提供合理的 MB/s,但不会混合 RW 命令。
如果我阅读 fio 手册页,它只会提到以下内容而没有任何解释:
--带宽日志
生成聚合带宽日志。
答案1
根据fio(1)
,部分LOG FILE FORMATS
(最新版本也可用在线的):
Fio 支持多种日志文件格式,用于记录延迟、带宽和 IOPS。日志共享一个通用格式,如下所示:
- 时间(毫秒)、值、数据方向、块大小(字节)、偏移量(字节)、命令优先级
时间日志条目的时间间隔始终以毫秒为单位。记录的值取决于日志的类型,它将是以下之一:
- 延迟日志:值是以纳秒为单位的延迟
- 带宽日志:值以 KiB/秒为单位
- IOPS 日志:值为 IOPS
数据方向是下列之一:
- 0:I/O 为读取
- 1:I/O 是写入
- 2:I/O 是 TRIM
但请注意,旧版本的 fio 产生的字段较少。请务必检查随附的手册页你的fio 的版本。
因此,您的数据应该被解释,以第一行为例:
501, 334730, 0, 0, 0
- 测试开始后 501 毫秒
- 此持续时间内测量到 334,730 KiB/s
- 0 = 读取操作
- 0(无法根据当前版本的文档确定)
- 0 = 命令优先级正常