Below is list of results collected with netperf. The interesting value is TCP_CRR, it measures how fast it can TCP connect/request/response/receive. In short, the transaction rate. The test is used to simulate a normal HTTP/1.0 transaction. What's worrying is that this value has very low on Xen virtualized guests. Performance differences between bare metal and virtualization has been as high as 2-3x.
| Virt. platform | OS | CPU | # CPU cores | TCP_CRR | TCP_RR | UDP_RR | Comments |
| Bare metal | Windows 7 Ultimate | Intel Core i5 CPU 760 @ 2.80GHz | 4 | N/A | 56319 | 48682 | Couldn't perform TCP_CRR |
| Xen | Linux 2.6.18-164.2.1.el5xen x86_64 | Intel Xeon CPU E5345 @ 2.33GHz | 4 | 6494 | 24134 | 26852 | |
| Bare metal | Linux 2.6.38-8-generic x86_64 #42-Ubuntu | Intel Core i5-2300 CPU @ 2.80GHz | 4 | 23230 | 62036 | 75954 | |
| KVM | 2.6.38.6 kernel :) | AMD Phenom(tm) II X6 1055T Processor | 6(vm has 1) | 29279.62 | 104254.60 | 159134.70 | erh... did I do this wrong??? |
| Xen | Linux 2.6.36.4 (custom PV kernel) under Xen 3.2.1 | Intel Xeon X3323 @ 2.50GHz | 1 | 9636 | 36644 | 44443 | Production Memset miniserver |
| Xen dom0 (closer to the bare metal!) | Linux 2.6.26 | Intel Xeon X3323 @ 2.50GHz | 4 | 9589 | 38347 | 47181 | dom0 of the above Memset miniserver host |
| Xen | Linux 2.6.38-x86_64-linode17 x86_64 | Intel Xeon CPU L5520 @ 2.27GHz | 4 | 4496 | 18160 | 20892 | |
| Xen | FreeBSD dev 8.2-RELEASE i386 | Intel(R) Xeon(R) CPU E5430 @ 2.66GHz | 1 | 9317.74 | 35000.73 | 37654.41 | |
| BareMetal | FreeBSD 8.2-RELEASE amd64 | VIA Nano processor U2250 (1.6GHz Capable) | 1 | 468.36 | 17478.24 | 24971.05 | |
| XEN HVM | FreeBSD 8.2-RELEASE FreeBSD amd64 - XEN HVM | Intel(R) Xeon(R) CPU X5570 @ 2.93GHz | 16 | 5074.47 | 8969.24 | 7874.76 |
It's recommended you run these tests on Linux. You can either download prebuilt binaries from your favorite package system or build from source. The latter is quite easy.
Use these steps to build from source:
cd /tmp curl -O ftp://ftp.netperf.org/netperf/netperf-2.4.5.tar.gz tar zvxf netperf-2.4.5.tar.gz cd /netperf-2.4.5 ./configure make src/netserver -4 src/netperf -H 127.0.0.1 -t TCP_CRR src/netperf -H 127.0.0.1 -t TCP_RR src/netperf -H 127.0.0.1 -t UDP_RR Get OS version with
uname -a Get processor info with
cat /proc/cpuinfo Been having trouble compiling netperf on Mac OS. Might be an easy fix?
cd /usr/ports/benchmarks/netperf && make && make install or
pkg_add -r netperf Then, same as Linux:
sysctl -a | egrep -i 'hw.model|hw.ncpu' netserver -4 netperf -H 127.0.0.1 -t TCP_CRR netperf -H 127.0.0.1 -t TCP_RR netperf -H 127.0.0.1 -t UDP_RR Prebuilt binaries for Windows are available. Get them from http://www.chriswolf.com/download/netperf.zip TCP_CRR are problematic to run. Why I'm not sure, but not surprised this is the case. Linux is recommended for doing these tests.
Please submit your findings in the table above by editing this Gist. Enter your OS version, CPU, number of cores and the results. It's last column in netperf's output you are supposed to report for each test (the transaction rate). Note any special info such as hyperthreading, special sysctl settings etc in the comments field.
I can't edit this gist, but I got
It probably doesn't matter for the loopback test - but I have some additional sysctl settings on the host -->
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0
net.bridge.bridge-nf-filter-pppoe-tagged = 0