Netperf Benchmarks

Netperf Benchmarks

The test compare three different guest OS:

  1. Out of the box (OOTB) Linux
  2. Linux with a disabled Firewall
  3. 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>