如何读取和解码 fio --bandwidth-log?

如何读取和解码 fio --bandwidth-log?

我正在寻求有关阅读和解码 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

  1. 如何读取第一列?无论我为 --timebased 提供什么时间段,我总共都会得到 1024 个结果。
  2. 第二列不适合 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 = 命令优先级正常

相关内容