All tests are executed on a Sony Vaio F11 laptop with 8GB of memory, with a Core i7 Q720 processor (default 1.6MHz). The hard disk is a 500GB 7200 RPM Seagate ST9500420AS. Tests are run at night or during the day (when I was at work). Runlevel 3 (multi-user with network) is used on both host and guest. This eliminates the overhead of the desktop environment on the host and the effects of user interaction. Each virtual machine was given 4GB of memory.
To compare results on the host with those on the guest, tests on the host are carried out with half the memory used up of huge pages. This effectively reduces the available memory of the host to 4GB and makes it more comparable to a guest because normal applications cannot use the huge pages.
Tests were done on Opensuse 11.3 with kernel version 18.104.22.168-0.5-default, both for host and guest. The only difference was that (obviously) the host has more software installed because it is used as a full-featured desktop.
By default huge pages support was switched on and if not mentioned otherwise, the noop IO scheduler is used for the guest. The reason for this is that these are the optimal settings ss can be found on the internet. The noop scheduler seems to be a good choice as default for guests because the guest is unaware of the physical disks (it gets storage from the host), and the host can do a more efficient scheduling. The tests focus on showing what the effect of individual tuning parameters is on performance by deviating from this baseline.
Disk based tests were carried out on an extended 4 (ext4) filesystem. Each guest gets a hard disk from the host which is a logical volume (as in LVM). The guest in turn uses a 512MB /boot partition (non-LVM) and uses LVM for the root partition. Therefore, nested logical volume management is used.
The laptop was connected to a 100Mbps network uisng a wired connection. All VMs were configured to use a bridging setup. For the network tests, a different linux server was used on the local network for running the netperf server.
Before each test is executed, the caches are flushed on the host (and on the guest if a guest is involved). This is done using:
echo 3 > /proc/sys/vm/drop_caches
This makes the tests more independent because it eliminates any reuse of caches from a previous test.