As is the case with many other technologies, the virtualization space is filled with a mystifying array of terminology. Familiar definitions, such as guest, host, physical and virtual, interact within constellations of other, more product-specific terms. Microsoft's Hyper-V has its own language that includes terms such as synthetic and emulated drivers; root, parent, and child partitions; and a smattering of others necessary for understanding...
and working with Microsoft's upcoming virtualization platform. In this tip, I'll explain the terms that are relevant to how device drivers work in Hyper-V, which should help with installation of the product, managing performance and troubleshooting any issues that might arise.
Partition types in Hyper-V
A virtualization layer provides independent, isolated environments in which guest operating systems and applications can run; Hyper-V uses the term "partition" to refer to these areas. The hypervisor is the core component of Hyper-V and has direct access to physical hardware running on a host computer. It is responsible for creating and managing partitions, which in turn can host virtual machines and their associated guest operating systems.
The root partition refers to the area where the hypervisor runs. This partition is created automatically when you boot a physical instance of Windows Server 2008 that has Hyper-V enabled. The parent partition is an environment which is able to create new child partitions. In the initial version of Hyper-V, the parent and root partitions are the same. Child partitions, isolated environments in which guest operating systems and applications can run, are the goal. Technically, a child partition is not exactly the same as a virtual machine, but for most purposes, the terms are interchangeable.
Emulated vs. synthetic drivers in Hyper-V
Two of Hyper-V's most important goals are in providing the best possible driver performance to minimize virtualization-related overhead and compatibility with the widest array of potential guest operating systems. Because these goals are sometimes at odds, Hyper-V provides two different types of drivers.
Emulated devices rely on the same types of drivers that are available in Microsoft Virtual Server 2005 and Microsoft Virtual PC. Basically, the guest OS sees a BIOS and believes that it is running on an actual computer rather than within a partition. Table 1 provides the details of this rather outdated (but highly compatible) virtual hardware platform. This approach works great for the vast majority of operating systems, but it doesn't always provide the best performance.
|CPU||Based on the host CPU (single CPU only)|
|Video||S3 Trio 32/64 with 4MB of video memory|
|Memory||Up to 3.6GB|
|Input Devices||PS/2 Mouse and Keyboard|
|Floppy Drives||Up to two 1.44MB 3.5" floppy drives|
|Communications Ports||2 Serial Port, 1 Parallel Port|
|IDE Controllers||Two channels, each of which supports up to two devices each (up to four IDE total devices)|
|SCSI Controllers||Up to four Adaptec 2940 SCSI Controllers (each supports up to 7 devices; 28 devices total)|
|Network Interfaces||Up to four Intel 21140 10/100Mb network interface cards|
Table 1. The emulated hardware driver specifications for Hyper-V
Synthetic drivers are new in Hyper-V and are designed to provide improved performance. They are able to leverage more efficient communications mechanisms between virtual hardware and physical hardware. The drawback is that they are only supported on newer guest operating systems such as Windows Vista and Windows Server 2008. Microsoft provides synthetic drivers for virtual video adapters, IDE connections and for the mouse driver. In general, you should use synthetic drivers whenever they are available for your guest OS.
Hyper-V also performs another useful trick: During boot time, emulated device drivers may be used for compatibility purposes (think of the standard Windows pre-boot/boot environment which supports a limited set of drivers.) While the guest OS is loading, the relevant drivers are switched out with their synthetic counterparts. You can check which type of drivers are installed by opening the Device Manager in a Windows-based guest OS. Those that mention VMBus are synthetic drivers.
Enlightenment is another term that you might have heard in various articles related to Hyper-V. "Enlightened" can mean many things; however, in the context of Hyper-V, the term refers to a guest OS that is aware of and is optimized for running in a virtual environment. The enlightenments can refer to either guest OS device drivers that are optimized for virtualization or to actual kernel-level optimizations that improve CPU and memory performance. Examples include optimizations built for Windows Server 2008 and for Citrix XenServer, both of which will be available from Microsoft when Hyper-V is launched. As Hyper-V becomes more prevalent, you can expect to see more enlightened guest operating systems.
Understanding partitions and device driver options are important aspects of squeezing the most performance out of your virtual machines while still maintaining compatibility for a broad range of guest OS types. The root/child partition architecture allows administrators to create virtual environments that are secure, isolated and that access hardware efficiently. Within a given guest OS, you should generally use Hyper-V's synthetic drivers wherever possible. For other situations, emulated drivers will give you performance that is roughly on par with Microsoft's other virtualization options.
OK, that's it for this portion of the vocabulary lesson. In future tips, I'll dive further into Hyper-V's disk and network architecture.
Note: Thanks to Ben Armstrong and his site, Virtual PC Guy's WebLog for clarifying the definitions of many of these terms.
About the author: Anil Desai is a Microsoft MVP and a Microsoft Certified Professional with numerous credentials including MCITP, MCSE, MCSD, and MCDBA. He is the author or coauthor of nearly 20 technical books, including several study guides for Microsoft Certifications.
Dig Deeper on Microsoft Hyper-V and Virtual Server