Skip to content

Drive io compared

Drive IO Compared

Something that is really hot right now is using Ceph in a homelab. Proxmox VE has Ceph options built in. I see a lot of people comment online with a few warnings:

  1. Ceph doesn't like Consumer SSDs.
  2. Ceph needs faster network, say 10Gbps.

However, what I don't see often is any data on IO operations. I don't have the hardware to do 10Gbps, or a 3 node cluster of ceph, or enterprise SSDs. Below are my findings of IO data that I mostly found around the internet, and some I ran myself.

ZFS Raw vdisk on Sata SSD on Proxmox

These results were taken from a Windows 11 virtual machine using CrystalDiskMark.

Workload Read (MB/s) Write (MB/s) Notes
SEQ1M Q8T1 1175.17 946.10
SEQ1M Q1T1 1144.75 1054.35
RND4K Q32T1 38.77 34.37
RND4k Q1T1 28.61 25.18

Bare metal NVMe drives

I found someone online that documented a lot of IO data. There website is here.

They have a bunch of different tests, check out their website for more info. Below is the data from them.

Workload Read (MB/s) Write (MB/s) Notes
SEQ1M Q8T1 3563.62 2491.86
SEQ1M Q1T1 2420.27 2493.54
RND4K Q32T1 576.30 487.26
RND4k Q1T1 51.35 187.03

Passing through NVMe drive to a virtual machine.

According to the data from the site (link above), this is a drive being passed through to the OS, not a virtual disk (vmdk,qcow2, etc).

Workload Read (MB/s) Write (MB/s) Notes
SEQ1M Q8T1 1257.19 992.73
SEQ1M Q1T1 1220.09 1224.80
RND4K Q32T1 30.61 28.36
RND4k Q1T1 24.61 23.36

Passing through NVMe controller

This data is from the same site as above.

Workload Read (MB/s) Write (MB/s) Notes
SEQ1M Q8T1 3575.33 2463.65
SEQ1M Q1T1 2003.00 2351.24
RND4K Q32T1 56.80 51.03
RND4k Q1T1 26.62 44.57

Interesting to see that the results are much better when passing through the NVMe controller. I wonder if that would be the same in Proxmox; it looks like the data was taken from unraid.

40Gbps on Truenas Scale over iscsi on NVMe drives

That same site from above has this post that has IO data for 40Gbps network on Truenas Scale using iscsi to connect to a server with NVMe drives.

Here is more data on the setup and below is the data.

Workload Read (MB/s) Write (MB/s) Notes
SEQ1M Q8T1 4682.43 1930.93
SEQ1M Q1T1 784.58 469.84
RND4K Q32T1 95773.32 57353.15
RND4k Q1T1 332.37 551.89

It's interesting to compare this to the bare metal single NVMe drive above since in every metric it is faster. Latency is something that wasn't measured which is important when you are dealing with network attached storage.

Ceph

Here is really want I want to get more data on. The site above again has great data on this here is the post about their ceph cluster. There is lots of data on there I'm just going to condense The final test results.

Workload Read (MB/s) Write (MB/s) Notes
seq 1591 6523
random 1109 6523

lets compare it to the raw vdisk in proxmox that is on a zfs sata drive:

Workload Read (MB/s) Write (MB/s) Notes
SEQ1M Q8T1 1175.17 946.10
RND4K Q32T1 38.77 34.37

As you can see the data here shows that the ceph cluster had better IOPs than the local sata vdisk. However the author of the blog post says:

Compared to running a normal ZFS pool, the performance is pretty bad. However, for the workloads I am running, the level of performance is perfectly adequate.

I would love to know more about this configuration and see the data from it. I think the latency data would be important as well.

Improvements with the data

There are some improvements with the data collected that I'd love to see:

  • There is a mix of hypervisors involved. It would be nice to see all the data on the same hypervisor.
  • There is a mix of tools to test, CrystalDiskMark vs fio mainly. I would prefer all the data to be from fio.
  • All the CrystalDiskMark data is missing latency, which can be very important for network attached storage.

Future Tests

Here are some future tests I'd love to see:

  • zfs raw vdisk on an NVMe drive.
  • CephFS vs RBD
  • More data on latency for all the CrystalDiskMark tests.