axboe / fio

Flexible I/O Tester
GNU General Public License v2.0
5.25k stars 1.26k forks source link

With "continue_on_error" option, will errored IO included? #1350

Open zRegle opened 2 years ago

zRegle commented 2 years ago

Hi, all! If I specify the "continue_on_error" option, will the errored IO are included in the final output?(such as bw, IOPS, latency) For simplicity, if there are two IO with size 4K in 1 second, one succeed, one fail with IO error, will the final output be like: bw: 8K iops: 2

instead of: bw: 4K iops: 1

Thanks for advance!

axboe commented 2 years ago

If continue_on_error is set, then even an errored IO is accounted like everything else. Generally an IO error means that it will not have transferred any data, so iops would include it, but bw would generally not because of that.

zRegle commented 2 years ago

If continue_on_error is set, then even an errored IO is accounted like everything else. Generally an IO error means that it will not have transferred any data, so iops would include it, but bw would generally not because of that.

Thank you axboe. If there is any way to exclude the errored IO from IOPS? Would option --output-format help?

axboe commented 2 years ago

There's no way to do that. In all fairness, usually your results are going to be heavily skewed by errors anyway, whether you include them or not. As I mentioned, you won't see them in bandwidth since the transferred data will generally be zero. It's really only an iops thing. And if you have enough IO errors for that to matter, then I suspect you have bigger issues :-)

zRegle commented 2 years ago

There's no way to do that. In all fairness, usually your results are going to be heavily skewed by errors anyway, whether you include them or not. As I mentioned, you won't see them in bandwidth since the transferred data will generally be zero. It's really only an iops thing. And if you have enough IO errors for that to matter, then I suspect you have bigger issues :-)

Thanks for your help, axboe! I think bw / io size would get the correct IOPS.

Another unrealted question, I ran test with NVMe SSD to get its max performance: rw=randread: 363k IOPS, 1400 MB/s rw=randwrite: 265k IOPS, 1030 MB/s rw=randrw, rwmixread=50: r/w 200k IOPS and 800 MB/s respectively.

The total IOPS and bw of randrw is 400k, 1600 MB/s which exceeds the max performance of the NVMe SSD. It is wrong that just sum r/w IOPS and bw? How do I get the correct the total IOPS an bw?