Technical

NVMe Passthrough Performance on Proxmox: Benchmarks and Trade-offs

NVMe Passthrough Performance on Proxmox: Benchmarks and Trade-offs

NVMe passthrough performance on Proxmox is one of those things people argue about without any numbers. So I ran the same fio workload on a VM with virtio-blk and then with the NVMe passed through via PCIe. The passthrough was faster, but not by as much as you’d think, and you give up snapshots and live migration to get it.

Detailed view of a computer motherboard showcasing RAM slots and electronic components.

What I tested

Same host, same NVMe drive, same VM. First run with a virtio-blk disk backed by the NVMe on LVM-thin. Second run with the NVMe controller passed through with vfio-pci. Workload was fio with 4k random reads and writes, iodepth 32, 10 minutes each.

fio --name=randrw --rw=randrw --bs=4k --iodepth=32 --size=10G --numjobs=4 --runtime=600 --time_based

Numbers below are steady-state averages after the first minute.

Results

virtio-blk: 78k IOPS read, 22k IOPS write, average latency 410µs read, 1.4ms write.

PCIe passthrough: 92k IOPS read, 26k IOPS write, average latency 350µs read, 1.2ms write.

So passthrough is about 18% faster on reads and 15% on writes, with lower latency. That’s real, but it’s not the 2x some forum posts claim. And the CPU overhead was nearly identical—virtio-blk isn’t the bottleneck people make it out to be on modern hardware.

Close-up of cooling fans in a server room, showcasing technology and efficiency.

The trade-off

With passthrough you lose snapshots. No more rolling back before a risky update. You also lose live migration, which matters if you ever add a second node. And the VM becomes tied to that specific NVMe—swap the drive and you’re editing configs.

For a homelab, I’d stick with virtio-blk unless you have a workload that’s truly latency-sensitive. A database with heavy random I/O might justify it. Plex or file storage? Not a chance. The convenience of snapshots beats 15% more IOPS.

If you do go passthrough, make sure IOMMU is on and the drive isn’t used by the host. Check out Fix Proxmox GPU Passthrough Black Screen on VM Start for the IOMMU part—same steps apply to NVMe.

If you’d rather pay for this

If you want NVMe-like speed without giving up snapshots, a used enterprise SSD with PLP and a proper HBA gets you most of the way for under $200. Or just buy a bigger SATA SSD and stop worrying about it. The real bottleneck in a homelab is rarely the disk.

Leave a comment

Comments are reviewed before they appear. Your email is never published.