Skip to main content


Showing posts from January, 2018

Understanding Guest Machine Performance under Hyper-V: Benchmark results

Benchmark results: baseline measurements with no contention To gain some additional perspective on the performance impact of virtualization, we will look first at some benchmarking results showing the performance of virtual machines in various simple configurations, which we will also compare to native performance where Windows is installed directly on top of the hardware. For these performance tests, I used a benchmarking program that simulates the multi-threaded CPU and memory load of an active ASP.NET web application, but without issuing disk or network requests so that those limited resources on the target machine are not overwhelmed in the course of executing the benchmark program. 
The benchmark program I used for stress testing Hyper-V guest machines is a Load Generator application I wrote that is parameter-driven to generate a wide variety of “challenging” workloads. The current version is a 64-bit .NET program written in C# called the ThreadContentionGenerator. It has a main…

Understanding Guest Machine Performance under Hyper-V: Over-provisioned Hosts

Over-provisioned Hyper-V Hosts It is easy to recognize a generously over-provisioned Hyper-V Host machine – its processors are underutilized and machine memory is not fully allocated. 
When the machine’s logical CPUs are seldom observed running in excess of 25-40% busy, there is ample CPU capacity for all its resident guest machines, especially considering that most Hyper-V Host machines are multiprocessors. 
(Note:  the mathematics of this is straightforward. The dispatching of a guest machine virtual processor is delayed when all CPUs are busy, so it is forced to wait. In a symmetric multiprocessor, the probability that all CPUs are busy simultaneously is the joint probability that all the processors are busy. For example, if there are four CPUs and each CPU is busy 25% of the time, the joint probability of all the CPUs being busy simultaneously is 0.25 * 0.25 * 0.25 * 0.25, or 0.004. Thus, the probability that all CPUs are simultaneously busy is only ~0.4%.)
Machine memory can saf…

Understanding Guest Machine Performance under Hyper-V: Introduction

This is a continuation of a series of articles on Microsoft's Hyper-V virtualization technology. If you want to start at the beginning, click here.

The last few posts in this series examined the Hyper-V Dynamic Memory feature, which, IMHO, is probably the most significant technical difference between Hyper-V and VMware ESX.

Most of the guest machine performance considerations that are discussed beginning in this post are common to every virtualization technology I have worked with, including VMware and Hyper-V.

Here goes...
Understanding Guest Machine Performance under Hyper-V Virtualization technology requires the execution of several additional layers of systems software that adds overhead to many functional areas of a guest Windows machine, including
processor scheduling,intercepting and emulating certain guest machine instructions that could violate the integrity of the virtualization scheme, machine memory management,initiating and completing IO operations, andsynthetic device…