How to Enable Single Root I/O Virtualization SR-IOV on XenServer
This article describes how to improve network performance in XenServer virtual machines by purchasing a Network Interface Card (NIC) with Single Root I/O Virtualization (SR-IOV) support.
The SRIOV support is a method used for sharing I/O devices with near physical computer speed.
To learn more about SR-IOV, refer to PCI-SIG SR_IOV Primer.
Note 1: A single SR-IOV NIC can support multiple Virtual Functions; each Virtual Function can be attached to a different virtual machine as a 1:1 ratio (1 Virtual Function to 1 virtual machine).
Note 2: Xen Kernel version 3.4.2 supports the SR-IOV features for Red Hat Enterprise Linux or SUSE Linux Enterprise Server. Citrix XenServer 5.5 however does not support it.
Note 3: Citrix only has one NIC certified for SR-IOV on XenServer (Intel 82599 10 gigabyte Ethernet Controller).
Perform the following the steps to enable SR-IOV on XenServer.
- Enable iommu on the XenServer host by running the following command within the domain 0 console:
/opt/xensource/libexec/xen-cmdline –set-xen iommu=1
- Restart the host.
- Assign one or more Virtual Functions to a virtual machine. Obtain a list of Virtual Functions in the system by running the following command in the XenServer console:
You should see many (such as 120) devices like this:
07:10.0 Ethernet controller: Intel Corporation 82559 Ethernet Controller Virtual Function (rev 01)
- Run the following command to assign one of these Virtual Functions to the target virtual machine:
xe vm-param-set other-config:pci=0/0000:07:10.0 uuid=uuid_of_the_VM
Note: Substitute 07:10.0 in the example above with the PCI bus address of the Virtual Function that you want to assign.
- Start the virtual machine and install the correct Virtual Function driver in it.