For some years I have encouraged benchmarking of Windows virtual machines (VM), to help users fine-tune the configuration and to get a general idea of how efficient virtualisation with Xen or KVM actually is. My benchmarks – posted under the username “powerhouse” – and those of other users can be found on the Linux Mint forum under Post your Passmark results of your Windows VM and UserBenchmark – post your results. When reviewing some of my benchmarks on the UserBenchmark website, it occurred to me that the information on that website can be put to practical use.
One of the difficulties when starting out with virtualization and VGA passthrough is to determine a suitable hardware configuration. While hardware compatibility has greatly improved compared to only a couple of years ago, wouldn’t it be helpful to know when others succeeded with the configuration you had in mind?
With regard to CPUs, this is easy, as UserBenchmark delivers us this information. Just follow the web link below:
The link sends you straight to the results for the search term “standard pc” which I had entered into their search box. The top two results – Standard PC (i440FX + PIIX, 1996) and Standard PC (Q35 + ICH9, 2009) – are the two “chipset” choices presented during the VM creation process. Clicking on either of the two options and scrolling down to “User benchmarks for this system” leads you to dozens and hundreds of benchmark results, all of which were created on Windows virtual machines.
Clicking on a benchmark result presents us with the hardware that has been used and the benchmark test results. Some of the data we find here needs a little explanation:
- Intel Core (Haswell, no TSX) – instead of copying the host CPU configuration to the guest, the user chose to specify the CPU configuration explicitly. We therefore cannot know the exact CPU model, but only assume that it belongs to the Haswell family of Intel CPUs.
- Intel Core i7-3930K
CPU 0, 1 CPU, 5 cores, 10 threads
Base clock 3.2 GHz, turbo 3.2 GHz (avg)
Here the host CPU configuration was copied to the guest. The Windows VM was given 5 out of 6 cores (this CPU has 6 cores), altogether 10 of 12 threads. Base clock and turbo are also specified. We can see that the Windows VM was not able to trigger the Turbo when under load, something that could be fixed for better performance.
- Nvidia GTX 970
227,592 User benchmarks – Average bench 64%
Gigabyte(1458 3679) ≥ 4GB
CLim: 1418 MHz, MLim: 1752 MHz, Ram: 4GB, Driver: 376.53
Pretty self-explanatory. You should compare the result of your card in % with the average bench, in this case 64%. Obviously this is a successful VGA passthrough using a ver. 376.53 Nvidia driver under Windows.
- Red Hat VirtIO 118GB – here the user opted for an image file or an LVM volume, using the Red Hat virtio driver.
- Samsung 960 Evo NVMe PCIe M.2 500GB
21,898 User benchmarks – Average bench 232%
Firmware: 2B7Q Max speed: PCIe 5,000 MB/s
Performing above expectations (67th percentile)
The Samsung M.2 SSD (system disk) is passed through to the Windows VM as a PCIe device. Windows is using its native drivers. While the drive is passed through to the guest, it is inaccessible from the host.
QEMU 1x10GB32 User benchmarks – Average bench 63%1 of 1 slots used10GB DIMM RAM
The memory is always designated QEMU, since qemu/kvm control the access to the system memory. The number of slots, DIMM RAM, etc. are irrelevant and most likely incorrect, only the memory size is the actual memory given to the guest.
The above information not only helps us with the hardware selection, it also provides some insights into different configuration options and their performance. In some cases it can reveal misconfigurations or opportunities for improvement. Furthermore it allows us to compare a virtualised Windows system with a bare-metal installation when using the same or very similar hardware.