CenturionStudio.it - Fotolia
How do I use SR-IOV for Hyper-V VMs?
Single Root I/O Virtualization, or SR-IOV, can help reduce latency and increase I/O throughput when enabled for Hyper-V VMs.
Many virtual administrators are still unfamiliar with Single Root I/O Virtualization Microsoft introduced in Windows Server 2012 Hyper-V. The SR-IOV specification was designed by PCI-SIG to allow a PCI device to appear as multiple physical devices, which, in turn, helps reduce the latency and increase I/O throughput. In simple terms, SR-IOV-capable PCI devices can present multiple virtual channels to SR-IOV capable drivers for direct communication.
Technically, there are two functions implemented by SR-IOV: physical functions (PFs) and virtual functions (VFs). There are a number of PCI devices available in which the PFs have been implemented, but Microsoft Hyper-V provides SR-IOV support only for networking. In other words, Microsoft Hyper-V provides VFs to allow VMs to communicate to the physical network adapters directly.
There are two drivers implemented by Microsoft Hyper-V to enable the SR-IOV function: the PF Miniport Driver running in the Hyper-V parent partition and the VF Miniport Driver running in each guest. The PF and VF relationship is very similar to the VSP-VSC design in Hyper-V, with one exception. In the case of the VSP-VSC design, a VSC component running in a VM talks to the corresponding VSP running in the Hyper-V parent partition via the VMBus communication channel, whereas, in the case of the PF-VF architecture, the VF in a VM talks to VF implemented in the SR-IOV-capable network adapters. The VF miniport driver running in a guest can directly read and write to VFs implemented in SR-IOV-capable network adapters. However, the PF Miniport Driver, which is implemented in the Hyper-V parent partition, is responsible for handling and terminating these requests as and when needed.
Since the VMs can communicate directly with the physical network adapters, organizations may benefit from increasing I/O throughput, reducing CPU utilization on Hyper-V hosts for processing network traffic, and reducing network latency by enabling direct communication. Before you can use SR-IOV for a Hyper-V VM, you will need to meet the following prerequisites:
- The SR-IOV functionality is currently only available to Windows 8 and Windows Server 2012 guests.
- Hyper-V must be running on a Windows Server 2012 or later operating system.
- You must have an SR-IOV-capable physical network adapter that implements the PFs and can understand the VFs' requests coming from the VMs.
- You must have an external virtual switch that can understand the SR-IOV traffic.
- The server's motherboard chipset must also support SR-IOV.
Enabling SR-IOV is a two-step approach. First, you need to make sure that your external virtual network switch, which is mapped to a physical network adapter, can understand the SR-IOV traffic by enabling the checkbox from the virtual switch manager. Once the SR-IOV is enabled on the external virtual switch, you can enable SR-IOV on the supported guests by checking the "Enable SR-IOV" checkbox found under the "Hardware Acceleration" setting page on the VM's properties.
It is also worth mentioning that SR-IOV is supported by both Microsoft Hyper-V and VMware vSphere. While Microsoft Hyper-V supports SR-IOV for Windows VMs only, VMware vSphere provides SR-IOV support for both Windows and Linux guests. It is important to note that an SR-IOV-enabled VM can participate in Hyper-V live migration, but SR-IOV-enabled VMs running on VMware vSphere will lack features like vMotion.
Dig Deeper on IT systems management and monitoring
Related Q&A from Nirmal Sharma
Manage SCVMM logical networks with PowerShell
Use System Center Virtual Machine Manager and PowerShell to make logical network management easy. Execute a script to display network virtualization ... Continue Reading
Setting up Hyper-V replication requires preplanning
Hyper-V replication is easy to use, but there are a number of steps you should take during Hyper-V replication setup to ensure you stay abreast of ... Continue Reading
How do you find Hyper-V nodes with PowerShell?
Manage Hyper-V clusters more easily with PowerShell cmdlets and scripts that automate the retrieval and display of node information, including node ... Continue Reading