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?
You're likely comparing different things: different overheads, different ways of submitting I/O etc.
For example:
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.