All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.
Disk Speed (FIO) vs Latency (IOPing) What's more important in real use case?
Hello,
Well as the title says, I am trying to find out which one would be more important in real usage case. I understand, ideally the best speed and the lowest latency is ideal situation but sometimes achieving that is not possible (various factors, cost being one of them. also the available options). Also the use case might be different for different people so YMMV. Just trying to get more input from the experts here.
My usage case = Setting up a KVM server for a few VMs which will be running high traffic WordPress websites. (and that also means heavy database use for few of them).
Disk Setup A
Pretty great overall speed.
fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k (IOPS) | 64k (IOPS)
------ | --- ---- | ---- ----
Read | 328.84 MB/s (82.2k) | 1.03 GB/s (16.1k)
Write | 329.70 MB/s (82.4k) | 1.03 GB/s (16.2k)
Total | 658.54 MB/s (164.6k) | 2.07 GB/s (32.3k)
| |
Block Size | 512k (IOPS) | 1m (IOPS)
------ | --- ---- | ---- ----
Read | 1.25 GB/s (2.4k) | 1.36 GB/s (1.3k)
Write | 1.32 GB/s (2.5k) | 1.45 GB/s (1.4k)
Total | 2.57 GB/s (5.0k) | 2.82 GB/s (2.7k)
However, latency kind of sucks.
[root@Dev ~]# ioping -c 20 .
4 KiB <<< . (ext4 /): request=1 time=230.1 us (warmup)
4 KiB <<< . (ext4 /): request=2 time=7.02 ms
4 KiB <<< . (ext4 /): request=3 time=7.09 ms
4 KiB <<< . (ext4 /): request=4 time=6.99 ms
4 KiB <<< . (ext4 /): request=5 time=7.12 ms
4 KiB <<< . (ext4 /): request=6 time=7.14 ms
4 KiB <<< . (ext4 /): request=7 time=6.97 ms
4 KiB <<< . (ext4 /): request=8 time=7.07 ms
4 KiB <<< . (ext4 /): request=9 time=7.00 ms
4 KiB <<< . (ext4 /): request=10 time=7.01 ms
4 KiB <<< . (ext4 /): request=11 time=7.03 ms
4 KiB <<< . (ext4 /): request=12 time=7.16 ms
4 KiB <<< . (ext4 /): request=13 time=7.15 ms
4 KiB <<< . (ext4 /): request=14 time=7.16 ms
4 KiB <<< . (ext4 /): request=15 time=6.97 ms
4 KiB <<< . (ext4 /): request=16 time=6.92 ms
4 KiB <<< . (ext4 /): request=17 time=7.06 ms
4 KiB <<< . (ext4 /): request=18 time=7.14 ms
4 KiB <<< . (ext4 /): request=19 time=6.98 ms
4 KiB <<< . (ext4 /): request=20 time=7.01 ms
--- . (ext4 /) ioping statistics ---
19 requests completed in 134.0 ms, 76 KiB read, 141 iops, 567.2 KiB/s
generated 20 requests in 19.0 s, 80 KiB, 1 iops, 4.21 KiB/s
min/avg/max/mdev = 6.92 ms / 7.05 ms / 7.16 ms / 72.0 us
Disk Setup B
Not the best disk speed but not awfully bad either.
fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k (IOPS) | 64k (IOPS)
------ | --- ---- | ---- ----
Read | 238.59 MB/s (59.6k) | 598.12 MB/s (9.3k)
Write | 239.22 MB/s (59.8k) | 601.27 MB/s (9.3k)
Total | 477.81 MB/s (119.4k) | 1.19 GB/s (18.7k)
| |
Block Size | 512k (IOPS) | 1m (IOPS)
------ | --- ---- | ---- ----
Read | 585.01 MB/s (1.1k) | 582.03 MB/s (568)
Write | 616.10 MB/s (1.2k) | 620.80 MB/s (606)
Total | 1.20 GB/s (2.3k) | 1.20 GB/s (1.1k)
However, the latency seems to be great
root@Dev2]# ioping -c 20 .
4 KiB <<< . (ext4 / ): request=1 time=132.8 us (warmup)
4 KiB <<< . (ext4 / ): request=2 time=200.4 us
4 KiB <<< . (ext4 / ): request=3 time=155.8 us
4 KiB <<< . (ext4 / ): request=4 time=180.7 us
4 KiB <<< . (ext4 / ): request=5 time=157.2 us
4 KiB <<< . (ext4 / ): request=6 time=167.0 us
4 KiB <<< . (ext4 / ): request=7 time=148.7 us (fast)
4 KiB <<< . (ext4 / ): request=8 time=185.4 us
4 KiB <<< . (ext4 / ): request=9 time=159.8 us
4 KiB <<< . (ext4 / ): request=10 time=150.4 us (fast)
4 KiB <<< . (ext4 / ): request=11 time=158.0 us
4 KiB <<< . (ext4 / ): request=12 time=185.1 us
4 KiB <<< . (ext4 / ): request=13 time=197.4 us
4 KiB <<< . (ext4 / ): request=14 time=178.9 us
4 KiB <<< . (ext4 / ): request=15 time=179.8 us
4 KiB <<< . (ext4 / ): request=16 time=147.5 us (fast)
4 KiB <<< . (ext4 / ): request=17 time=183.6 us
4 KiB <<< . (ext4 / ): request=18 time=148.2 us (fast)
4 KiB <<< . (ext4 / ): request=19 time=169.6 us
4 KiB <<< . (ext4 / ): request=20 time=180.8 us
--- . (ext4 / ) ioping statistics ---
19 requests completed in 3.23 ms, 76 KiB read, 5.87 k iops, 22.9 MiB/s
generated 20 requests in 19.0 s, 80 KiB, 1 iops, 4.21 KiB/s
min/avg/max/mdev = 147.5 us / 170.2 us / 200.4 us / 16.5 us
So if you are going to setup a KVM Server for a few VMs running high traffic (and heavy usage of Database), would you pick Setup A or Setup B ?
What is really important is actual usage ?? High speed ? Or low latency ??
FYI, the tests are run on a server which is practically empty (New setup).
Comments
I have been brainwashed that IOPS is important, so I will choose Setup A based on its higher IOPS performance.
But you probably need page caching for better performance. The disk might not be that important.
I would say both, but i will prefer high IOPS over IOPing latency, as long as the latency is not over 250ms. If the latency over 250ms, then i will be considering the other options.
I was using IOPing as my benchmark methodology (v1), but right now i'm not using it again, as VPS with NVMe or even SSD usually has IOPing latency less than 250ms, which is still pretty good.
This is my sample of IOPing, back in 2022.
Thanks for this. That gave me a good idea about latency.
Looks like not many people are interested in this topic. So I guess I will look somewhere else for more answers/replies.
If it's for database work specifically, why not test databases specifically? Coming up with your own sysbench MySQL test profile that approximates your database usage and testing those VPS servers might be better. I have a sysbench wrapper script to make some testing easier. Folks are free to modify it for their needs https://github.com/centminmod/centminmod-sysbench
example on 2 cpu KVM VPS
markdown output
and CSV output