I setup a Proxmox cluster with 3 servers (Intel Xeon E5-2673 and 192 GB RAM each).
There are 2 Ceph Pools configured on them and separated into a NVMe- and a SSD-Pool through crush rules.
The public_network is using a dedicated 10 GBit network while the cluster_network is using a dedicated 40 GBit network.
Everything seems to be working fine, I get the following Rados benchmark results, which indicates much better performance with NVMes:
Interestingly, when i do performance benchmarks within VMs, I don't see much of a difference between the SSD- and the NVMe-pool:
The benchmark inside the VMs shows almost no difference between the SSD-pool and the NVMe-pool, especially the NVMe-pool seems to be much slower when compared to the Rados-benchmark on the Proxmox hosts. I also tried different cache settings for guests, like the write through cache, which didn't change anything. As SCSI-Controller I am using the recommended VirtIO SCSI Controller.
Do you have any suggestions to improve the NVMe-speed or is it normal that the write speed inside the VM is just about a third of the rados benchmark?
There are 2 Ceph Pools configured on them and separated into a NVMe- and a SSD-Pool through crush rules.
The public_network is using a dedicated 10 GBit network while the cluster_network is using a dedicated 40 GBit network.
Everything seems to be working fine, I get the following Rados benchmark results, which indicates much better performance with NVMes:
Proxmox1 SSD-Pool | Proxmox2 SSD-Pool | Proxmox3 SSD-Pool | Proxmox1 NVMe-Pool | Proxmox2 NVMe-Pool | Proxmox3 NVMe-Pool | |
Writing | ||||||
BW MB/s | 193.514 | 191.476 | 192.317 | 930.343 | 813.821 | 842.248 |
Avg IOPS | 48 | 47 | 48 | 232 | 203 | 210 |
Reading | ||||||
BW MB/s | 837.793 | 809.026 | 828.607 | 1402.85 | 1153.1 | 1622.98 |
Avg IOPS | 207 | 202 | 207 | 350 | 288 | 405 |
Rand Read | ||||||
BW MB/s | 828.15 | 808.978 | 825.837 | 1393.78 | 1232.1 | 1401.24 |
Avg IOPS | 207 | 202 | 206 | 348 | 308 | 350 |
Interestingly, when i do performance benchmarks within VMs, I don't see much of a difference between the SSD- and the NVMe-pool:
VM @ SSD-Pool @ Proxmox1 | VM @ SSD-Pool @ Proxmox2 | VM @ SSD-Pool @ Proxmox3 | VM @ NVMe-Pool @ Proxmox1 | VM @ NVMe-Pool @ Proxmox2 | VM @ NVMe-Pool @ Proxmox3 | |
hdparm cached r MB/s | 5434.11 | 4757.98 | 4877.86 | 4766.4 | 4816.38 | 3780.34 |
Hdparm buffered MB/s | 270.33 | 253.57 | 255.7 | 304.63 | 302.49 | 289.11 |
DD Write | 183 | 261 | 263 | 255 | 251 | 272 |
DD Read | 928 | 1.6 GB/s | 1.7 GB/s | 1.5 GB/s | 1.5 GB/s | 1.5 GB/s |
DD Read wo cache | 1.0 GB/s | 1.7 GB/s | 1.7 GB/s | 1.6 GB/s | 1.6 GB/s | 1.6 GB/s |
The benchmark inside the VMs shows almost no difference between the SSD-pool and the NVMe-pool, especially the NVMe-pool seems to be much slower when compared to the Rados-benchmark on the Proxmox hosts. I also tried different cache settings for guests, like the write through cache, which didn't change anything. As SCSI-Controller I am using the recommended VirtIO SCSI Controller.
Do you have any suggestions to improve the NVMe-speed or is it normal that the write speed inside the VM is just about a third of the rados benchmark?