Netperf Benchmarks
The test compare three different guest OS:
- Out of the box (OOTB) Linux
- Linux with a disabled Firewall
- OSv
Test goal is comparing OS guests ‘as is’. No tuning is done on either Linux or OSv for this particular test . Since OSv does not comes with a default firewall, Linux with a disabled firewall is included to level the play field.
Latest Benchmark
- Test Date: May 7, 2014
- OSv version: 0.08, commit f0cd44336ad0f8d8
- Linux version: Fedora release 20 (Heisenbug), 3.12.5-302.fc20.x86_64
- HW: two identical servers, one for the test (guest) OS, one to send/receive traffic
- Each server: 8 x Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz, 16GB RAM
Results
Test | iperf 1s | iperf 4s | iperf 16s | netperf STREAM | netperf MAERTS | netperf TCP RR | netperf UDP RR |
---|---|---|---|---|---|---|---|
Gbps | Gbps | Gbps | Mbps | Mbps | T/s | ||
Linux Firewall disabled - 1vcpu | 53.00 | 31.90 | 35.30 | 44,546 | 33,833 | 45,976 | 45,467 |
OSv 1vcpu | 55.30 | 47.90 | 44.60 | 55,466 | 37,261 | 74,862 | 80,533 |
OSv relative results | 104% | 150% | 126% | 125% | 110% | 163% | 177% |
Linux Firewall disabled - 4vcpu | 41.6 | 43.4 | 39.2 | 40,149 | 35,128 | 45,092 | 44,700 |
OSv 4vcpu | 52.2 | 43.2 | 36.6 | 49,611 | 36,255 | 68,032 | 72,461 |
OSv relative results | 125% | 99% | 93% | 123% | 103% | 151% | 162% |
All Benchmarks
Test Bed
-
All tests runs for 30 sec
-
Results present the average across 5 runs
-
For tests TCP_STREAM, TCP_MAERTS, UDP_STREAM, TCP_RR, UDP_RR: netserver is running on the tested (guest) OS
netperf is running on a different server -
For UDP Tx, netperf is running in the tested OS
Disable the Linux firewall
- Open ports 12865 and 12866 for netperf in the Linux firewall
firewall-cmd --permanent --add-port=12866/udp
firewall-cmd --permanent --add-port=12866/tcp
firewall-cmd --permanent --add-port=12865/tcp
systemctl restart firewalld.service
- Stop FW (firewall) on the Linux Guest
systemctl stop firewalld.service
- Check the status of the FW:
firewall-cmd --state
- Check the FW rules:
firewall-cmd --list-all
Running a netserver
- For Linux (run in the Guest shell)
netserver
- For OSv (run in the host shell):
sudo ./scripts/run.py -n -v -e "/tools/netserver.so -D -4 -f" -c <number of vCPUs, e.g. 4>
- For UDP Tx, run on the host:
netserver
Running a netperf
- Run a netperf on a host, For both Linux and OSv
netperf -H <IP netserver is listening on, e.g. 192.168.122.89> -t <test name, e.g. TCP_MAERTS> -l 30 -- -P 12866
- For UDP Tx, running UDP_STREAM from the Guest
- For Linux (run in the Guest shell)
netperf -H <IP netserver is listening on, e.g. 192.168.122.1> -t UDP_STREAM -l 30 -- -P 12866 -m 1400
- For OSv (run in the host shell):
sudo ./scripts/run.py -n -v -e "/tools/netperf.so -H <IP netserver is listening on, e.g. 192.168.122.1> -t UDP_STREAM -l 30 -- -P 12866 -m 1400" -c <number of vCPUs, e.g. 4>