One of the keys to the evolving Microsoft Hyper-V platform is the performance gains of virtual machines as they interact with the hardware. However, many system administrators are frustrated with the level of performance put directly on the shoulders of Hyper-V. In reality, these performance concerns come down to understanding the I/O stack of the virtual machine and how it interacts with the Hyper-V hypervisor.
The hypervisor provides a great set of fully integrated drivers, known as synthetic drivers, which cover 80% of what most administrators need when running one of the newer operating systems. In fact, storage, networks and video are all taken care of when using these systems. Synthetic drivers interact fully with the Virtual Machine Bus and take direction from Hyper-V Hypercall interface.
Emulated drivers are also supported through Hyper-V. These drivers have no knowledge of the hypervisor and allow the machine to work as a standalone machine, while interacting with the hypervisor in a much more basic fashion. This is why VMs running those synthetic drivers are referred to as enlightened, while those running emulated (or legacy) drivers are unenlightened. More often than not, admins will run synthetic drivers for optimal performance.
The role of parent partitions
Microsoft has made virtualization fairly easy when it comes to managing partition drivers in Hyper-V -- if it’s approved for Windows Server 2008 or 2008 R2, it’s approved to use in Hyper-V. Just check the Hardware Compatibility List (HCL). This makes the hypervisor very flexible with many computer configurations by taking advantage of the parent partition to offer up its resources and manage the virtual machines.
There can be issues, however, such as a misbehaving driver, and specific default settings on some network drivers that can cause problems. These network drivers are often installed with settings to offload certain functions to the NIC processor, including TCP checksum offload errors and jumbo frame support problems. Therefore, when faced with a network performance issue, admins may want to disable these enhancements in the driver on the Hyper-V parent. This is especially important for network interfaces that aren’t designed as “server class”.
The right kind of hardware that has vendors thinking about virtualization are those adapters that provide the best performance with the least headaches. As such, if server class adapters are available, look for network interfaces that are taking advantage of things like TCP Large Send Offload, which allows the session layer to create a larger TCP message that will reduce the need for checksums in the virtual environment.
Working with older versions of Windows Servers
There are times when admins need something out of the ordinary on a virtual machine. For instance, I had a client that was running a custom application which required Windows 2000. The hardware was failing, but upgrading the OS was not an option due to the compatibility needs of the old software. However, I was able to install Windows 2000 on a Hyper-V virtual machine. In this case, Hyper-V did what I should have -- but only after learning a lesson.
The first step every Hyper-V administrator takes after installing an OS is to install the integration services. This installs the synthetic drivers that enhance performance of the virtual devices, especially network interface cards (NICs). These are especially important for storage and network drivers. Since Windows 2000 is an older OS, integration services are somewhat compatible, but not supported. In this case, using the legacy adapter is preferable since it’s fully supported -- even though it’s doesn’t perform as well.
In addition to support issues, admins may also find limited mouse integration from the console. But this is a small price to pay to breathe life into a failing server and get it onto a stable hardware platform that is easy to back up and snapshot.
What about Linux support?
Linux support has expanded in Hyper-V over time, but is still somewhat limited. In fact, only paid, supported editions of Linux have support for integration services, including specific versions of Red Hat Enterprise Server and SUSE Linux Enterprise Server. However, if admins need to use another version of Linux they can turn to the legacy drivers. For example, a recent installation of the open-source VoIP system, Asterisk Now used the legacy network adapter and other emulated drivers and had little noticeable effect on performance.
In most cases, operating systems that support synthetic drivers make the most sense. Still, when admins need to fall back to legacy drivers the benefits far outweigh the small performance cost usually associated with that decision.
You can follow SearchWindowsServer.com on Twitter @WindowsTT.
ABOUT THE AUTHOR
Eric Beehler has been working in the IT industry since the mid-90's, and has been playing with computer technology well before that. He currently provides consulting and training through his co-ownership in Consortio Services, LLC.