使用 FIO(灵活 IO 测试仪)进行 I/O 吞吐量的正确方法



我正在使用作业数进行测试,并期望获得每个不同数量的作业的总 I/O 吞吐量

作业编号应与总 I/O 吞吐量呈正相关

我在SSD工作站中进行的测试如下 结果没有任何意义,因为 1 个作业的 I/O 吞吐量大于多个作业

使用固态硬盘的 FIO 测试结果

但是,当我使用虚拟盒子(配置了SSD(在Macbook中对其进行测试时,结果有所不同

使用虚拟盒子的FIO测试结果

这是我在测试中使用的 FIO 参数

filename=/dev/sdd
bs=4k
numjobs=1 ~ 64
iodepth=32
direct=1
ioengine=libaio
rw=read
runtime=20
group_reporting=1

我做错了什么吗? 我相信我在这种情况下使用了错误的参数。

我想出了答案,原因是使用 FIO 的正确方法 如果我们异步使用 FIO,那么深度的数量应该增加,如果 FIO 设置为同步,作业的数量应该增加以增加吞吐量。

fio -numjobs 的答案更大,iops 会更小,原因是? 可能有一些适用于此处的信息。但是,当您使用 SSD 时,我会注意到您的 iodepth (32( 有点匹配您可以拥有的典型最大 SATA 命令数量。这意味着您的第一个作业已经产生了最大吞吐量,并且您深陷收益递减 - 添加更多并发作业只会导致更多的排队,这意味着更多的延迟。所有这些额外的工作不会产生好处,但会消耗资源,这意味着您没有提交可以快速处理的 I/O,因此性能已经过去了。

最新更新