我一直在使用 libaio 对 NVMe SSD 的 IOPS 进行基准测试,并且我注意到输出中的一个有趣的观察结果:IO提交和IO完成。 (请注意,我并不是询问 fio 的iodepth
输入参数,因为已有一些关于它的帖子。)
这是我正在使用的示例命令:fio --name=iops_rw --ioengine=libaio --iodepth=32 --rw=randwrite --bs=4k --size=1G --numjobs=8 --runtime=30s --time_based --group_reporting --filename=/dev/nvme0n1
fio 输出一致表明IO提交和IO完成值在 [1-4] 范围内,观察如下:
IO depths : ........
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
- 首先,我不确定哪个值恰好在 [1, 4] 范围内以及如何解释此输出。
- 我也很好奇这是否表明我的 NVMe SSD 可以通过“更好”的 fio 参数处理更高的 IOPS 性能。
- 此外,我想知道这一观察可能为通过调整 fio 参数来提高 IOPS 性能提供哪些见解。
我尝试过更改numjobs
参数,并在 IO 提交和 IO 完成中观察到相同的结果。我还尝试将bs
块大小调整为更大的值,但行为差异很小(大多数 IO 提交和 IO 完成仍在范围 [1, 4] 内)。