Discover the key role Hyper-V's VSP and VSC components play in improving virtual machine performance by facilitating communication between VMs and the parent partition.
In Server/Client networking applications, there are two components that work together to implement networking communication: Server-Side component and Client-Side component. Server-Side component always listens to provide networking services to Client-Side Component.
The Client-Side component, on the other hand, always requests services from the Server-Side component. For example, in Windows operating systems, RPC Server acts as a listener for RPC Clients. For Microsoft Exchange Server, CAS acts as a Server-Side component that listens for networking traffic from Outlook mail clients.
Similarly, Hyper-V implements Server-Side and Client-Side components called VSP and VSC, respectively. VSP stands for Virtualization Service Provider and VSC stands for Virtualization Service Clients. Together with VMBUS, discussed shortly, VSP and VSC components improve the overall performance of a virtual machine running on Hyper-V.
An operating system running in a virtual machine is not aware of whether it is communicating with the hardware devices using the physical layer or virtual layer. In a virtual environment, operating system components send hardware access requests using native drivers, but the requests are received by the virtual layer.
Such requests are intercepted by the virtual layer before the request for accessing the hardware devices is honored. This interception is sometimes referred to as device emulation. Since these intercepted calls are handled by the device emulation component, this always presents an extra layer of communication between virtual machine and hardware devices.
To avoid the extra layer of communication, Microsoft provides a set of components called "Integration Services" for virtual machines running on Hyper-V. VMware provides "VMware Tools" for virtual machines running on ESX Server. We're going to limit our discussion in this article to Hyper-V's Integration Services components.
While the set of Integration Services also provides other services, VSP and VSC are the key components of Microsoft Hyper-V Virtualization that dramatically boost the performance of virtual machines. These two components help facilitate the smooth and reliable communication between Child Partitions (Virtual Machines) and the Parent Partition (Hyper-V Server). VSPs always run in Parent Partition and VSCs run in Child Partitions.
There are four VSPs available in Hyper-V as well as four VSCs running in multiple child partitions, as shown in the below image:
Child Partition With VSP/VSC Design
VSPs (Network, Video, Storage and HID) always run in the Parent Partition and corresponding VSCs run in the child partitions. Both VSPs and corresponding VSCs communicate with each other using a communication channel called VMBUS, as shown in the above image.
VMBUS is a special protocol designed to pass communication from a VSC to VSP running in the Parent Partition. This component plays an important role to avoid any extra layer of communication.
There can only be four VSPs running on a Hyper-V Server in the Parent Partition, but there could be multiple VSCs running on the same Hyper-V Server as part of the child partitions. VSPs are multithreading components that are running as part of the VMMS.exe and can serve multiple VSCs requests simultaneously.
When you install Integration Services Components in a virtual machine, the following drivers are installed to improve the virtual machine communication with the Parent Partition:
- For Display Adapter - C:\Windows\System32\VMBusVideoD.dll and C:\Windows\System32\Drivers\VMBusVideoM.Sys
- For Human Interface Devices - C:\Windows\System32\Drivers\hidusb.sys and C:\Windows\System32\Drivers\VMBusHID.SYS
- For Network Adapters - C:\Windows\System32\Drivers\NetVSC60.sys
- For Storage Controllers - C:\Windows\System32\Drivers\StorVSC.sys
Apart from the drivers mentioned above, a VMBUS device is also added. It uses the VMBUS.sys driver located in the "C:\Windows\System32\Drivers" folder.
The VSC drivers talk to the VMBUS.sys driver loaded in the virtual machine. VMBUS.sys communicates with the VMBUS.sys running in the Hyper-V Parent Partition which, in turn, communicates with the corresponding VSP running in the Parent Partition to enable direct communication, avoiding communication with the device emulation layer.
To confirm if a virtual machine is successfully communicating with the Parent Partition using the VSP/VSC design, you can take a look at the Device Manager in the virtual machine as shown in the below screenshot:
If the corresponding VSC is functioning properly on the virtual machine you will see "Microsoft Hyper-V Video" for Video VSC, "Microsoft Hyper-V Virtual Keyboard" for HID VSC, "Microsoft Hyper-V Network Adapter" for Network VSC and "Microsoft Hyper-V SCSI Controller" for Storage VSC, which is shown in the image above.
If these drivers are corrupted or are not present in the virtual machine, the virtual machine communication will always take place using device emulation.
In Generation 2 virtual machines, announced with Windows Server 2012 R2 at TechED North America, the VMBUS and VSP/VSC design is always available. You cannot turn it off — and there's no reason to turn it off as it improves the virtual machine communication. You can read more about Generation 2 virtual machines in last month's article on Generation 1 and Generation 2 VMs.
Child Partition Without VSP/VSC Design
The 2nd child partition hosted in the above image doesn't implement VSC functionality. It could be a case of either the Integration Service components not having been installed or the operating system is not supported by Hyper-V. The 2nd child partition always relies on device emulation. It always communicates to the parent partition using emulated device drivers, which will reduce the overall performance of virtual machine.
In this article we learned how the VSP and VSC components of Hyper-V play an important role in improving the communication between virtual machines and the parent partition. We also saw that these components are available as part of the Integration Services that are installed in a virtual machine. Without VSP/VSC components, a virtual machine operating system will use the operating system-provided drivers for communication, which will result in degraded performance for the virtual machine.
Nirmal Sharma is a MCSEx3, MCITP and Microsoft MVP in Directory Services. He has specialized in Microsoft Technologies since 1994 and has followed the progression of Microsoft Operating System and software. In his spare time, he likes to help others and share some of his knowledge by writing tips and articles on various sites and contributing to Solution IDs for www.Dynamic-SpotAction.com. Nirmal can be reached at firstname.lastname@example.org.
Follow ServerWatch on Twitter and on Facebook