0

There are two tests:

ioping -c 10 -S 4K -D .

9 requests completed in 2.49 ms, 36 KiB read, 3.61 k iops, 14.1 MiB/s
generated 10 requests in 9.00 s, 40 KiB, 1 iops, 4.44 KiB/s
min/avg/max/mdev = 259.5 us / 277.0 us / 325.0 us / 19.9 us
sudo fio --ioengine=libaio --direct=1 --rw=read --bs=4K --numjobs=1 --iodepth=1 --runtime=10 --time_based --name seq_read --filename=/fiotest --size=100m

 read: IOPS=19.8k, BW=77.5MiB/s (81.2MB/s)(775MiB/10001msec)
clat (nsec): min=830, max=11311k, avg=44909.47, stdev=76899.23

Both use the same block size, but the results of latency and iops are completly different. Why so?

ogbofjnr
  • 161
  • 1
  • 7

1 Answers1

0

Both use the same block size, but the results of latency and iops are completely different. Why so?

You're likely comparing different things: different overheads, different ways of submitting I/O etc.

For example:

  • fio is submitting I/O sequentially and requesting block 1 then block 2 etc. Is ioping doing that or is it reading the same offset again and again?
  • fio is submitting I/O asynchronously but I don't know if ioping is
  • They aren't working on the same file (we can't tell if they are even using the same filesystem from what you've posted!)
  • fio is submitting the next I/O as soon as it learns the previous one has completed. Because you elided the full fio output we can't tell just how many I/Os it submitted but I'd guess it was just under 200000 I/Os across the ten seconds. ioping says it generated 10 requests in 10 seconds.
  • Maybe the granularity of ioping is worse than that of fio? Maybe it has bigger overheads?

TLDR; Trying to draw comparisons between different tools usually doesn't work unless you know each tools is genuinely doing the same thing. Try to stick to comparing results from the same tool against itself. fio isn't really designed for doing "pinging" but it can be somewhat efficient at submitting I/O on Linux.

Anon
  • 1,210
  • 10
  • 23