Choosing between SSD tiers, filesystem options, and network configurations has been a recurring theme across earlier guides in this series — but those decisions are ultimately guesses without actually measuring your specific hardware’s real-world performance. Learning to benchmark Proxmox performance replaces assumption with actual data, confirming whether your storage and network setup performs as expected or reveals an unexpected bottleneck worth investigating.
Why Benchmark at All
Specification sheets and general recommendations (like the SSD and filesystem guides covered earlier) provide reasonable starting guidance, but actual performance depends on your specific combination of hardware, configuration, and workload in ways that generic advice can’t fully predict. Benchmarking confirms whether your actual setup delivers the performance you expected, or reveals a misconfiguration or real hardware limitation worth addressing.
Benchmarking Disk Performance with fio
fio (Flexible I/O Tester) is the standard tool for genuinely realistic storage benchmarking, capable of simulating various read/write patterns rather than just simple sequential transfer speed:
sudo apt install fio -y
Sequential write test:
fio --name=seqwrite --ioengine=libaio --rw=write --bs=1M --size=1G --numjobs=1 --runtime=30 --group_reporting
Random read/write test (more representative of typical VM disk activity):
fio --name=randrw --ioengine=libaio --rw=randrw --bs=4k --size=1G --numjobs=4 --runtime=30 --group_reporting
Random 4K read/write performance is generally more representative of real VM workloads than large sequential transfers, since VMs typically generate mixed, smaller I/O patterns rather than large sequential writes.
Interpreting fio Results
Key metrics to focus on:
- IOPS (I/O operations per second) – particularly relevant for VM-heavy workloads with many simultaneous smaller operations
- Bandwidth (MB/s) – relevant for larger sequential transfers, like backup operations
- Latency – how long individual operations take to complete; consistently high latency under load can indicate a storage bottleneck even if raw throughput numbers look reasonable
Benchmarking with Different Storage Backends
Run the same fio tests against different storage configurations you’re considering — comparing ZFS vs ext4 (per the earlier filesystem comparison guide), or a consumer versus prosumer SSD (per the earlier SSD guide) — giving you real, specific numbers for your actual hardware rather than relying purely on general guidance.
Benchmarking Network Throughput with iperf3
For confirming actual network performance between Proxmox nodes, particularly relevant after setting up bonding () or 10GbE (also covered earlier):
sudo apt install iperf3 -y
On one node, run as a server:
iperf3 -s
On another node, run as a client, testing against the server:
iperf3 -c server-node-ip
This shows actual achieved throughput between the two nodes, confirming whether your network configuration is truly delivering the bandwidth you’d expect from your hardware specifications.
Testing Bonded Interface Performance
If you’ve set up network bonding (), run multiple simultaneous iperf3 sessions to confirm aggregate throughput actually increases as expected — remembering, as that guide noted, that a single connection typically doesn’t automatically benefit from bonding, so testing with multiple simultaneous streams gives a more accurate picture of the real-world benefit.
Benchmarking VM-to-VM Performance
Beyond host-level network testing, run iperf3 between two VMs on the same Proxmox host to understand internal virtual networking performance, which can differ from raw physical network throughput depending on your specific network configuration .
Establishing a Baseline Before Making Changes
Before implementing something like Ceph () or reconfiguring network bonding, benchmark your current setup first, giving you a real before/after comparison confirming whether a planned change actually delivers the improvement you’re expecting, rather than assuming based on general guidance alone.
Monitoring Performance Over Time
While fio and iperf3 provide point-in-time benchmarks, integrate periodic benchmark runs into your existing monitoring setup (Grafana/Prometheus, ) to track whether performance really degrades over time — useful for catching a slowly failing drive or a network issue developing gradually, rather than only discovering a problem once it becomes severe enough to notice through normal use.
Avoiding Benchmark-Driven Overreaction
Benchmark numbers alone don’t automatically indicate a real problem — compare results against realistic expectations for your specific hardware tier, and prioritize investigating results that are dramatically outside expected ranges rather than chasing marginal differences that likely don’t significantly affect your actual homelab workloads in practice.
Final Thoughts
Learning to benchmark Proxmox performance with fio and iperf3 replaces assumption-based hardware and configuration decisions with real, specific data about your actual setup. Combined with the storage and networking guides covered throughout this series, benchmarking confirms whether your homelab is actually performing as expected, or reveals a specific, addressable bottleneck worth investigating further.

Leave a Reply