michelangelus - Fotolia
IT administrators can turn to I/O virtualization to optimize resources and improve VM performance. There are several approaches to virtualizing I/O components in the market, including Intel Virtualization Technology for Directed I/O, AMD-Vi, Intel Virtualization Technology for Connectivity and Single Root I/O Virtualization.
As of 2019, virtualization has moved beyond the processor -- and even the GPU -- and expanded into other areas of the physical computer, such as the supporting chipset. The chipset is basically one or more chips dedicated to supporting tasks such as memory management and I/O management, including handling disk and network I/O. The chipset handles the many ports involved, such as the USB, Ethernet and serial-attached SCSI.
I/O virtualization enables admins to provision those assets to various VM workloads in a more measured and organized manner rather than simply having a bunch of VMs compete for things like disk or network access. For example, virtualization enables features such as disk I/O reservations and limits, ensuring that adequate I/O is always available to a VM, or preventing VMs from monopolizing all of the available I/O, avoiding noisy neighbor performance problems.
Intel VT-d and AMD-Vi
Intel Virtualization Technology for Directed I/O (Intel VT-d) and AMD-Vi are similar technologies that create an input/output memory management unit (IOMMU), also referred to as Peripheral Component Interconnect (PCI) pass-through. Collectively, the IOMMU adds hardware support to isolate and provision devices in the system other than processors and GPUs -- enabling a hypervisor to isolate a device so it can only be accessed by the VM or workload it has been assigned.
Intel VT-d and AMD-Vi provide four capabilities: they provision I/O devices to VMs; handle direct memory access remapping, enabling data to move directly between an I/O device and VM memory; interrupt remapping, enabling the system to route and prioritize I/O interrupts from devices used by VMs; and add reliability features, such as reporting and logging events that might affect memory or VM isolation. A system might support Intel VT-d or AMD-Vi even though the processor might not use Intel Virtualization Technology or AMD Virtualization -- a rare situation in 2019 -- but the IOMMU-related features won't be available.
Intel Virtualization Technology for Connectivity (Intel VT-c) is another set of I/O virtualization technologies intended to improve network performance in virtualized systems. There are basically two elements to VT-c. Virtual Machine Device Queues supports network queuing for each VM. The goal is to boost hypervisor performance by offloading the need to sort incoming network traffic. At the same time, separate queuing enables the system to reserve or limit network usage between VMs.
Virtual Machine Direct Connect is based on Single Root I/O Virtualization (SR-IOV) technology and is used to virtualize the physical network ports into multiple virtual network ports and then map those virtual network ports to VMs. Intel VT-c requires hardware support from network interfaces, drivers and hypervisors.
SR-IOV is an established PCI Special Interest Group standard designed to enable admins to share PCI devices -- devices that might use a computer's PCI Express (PCIe) bus, such as graphics or network adapter cards -- using virtualization. SR-IOV enables admins to virtualize a physical PCIe device into multiple virtual resources that can then be provisioned to VMs.
Other technologies also rely on SR-IOV, such as Intel VT-c. For example, a quad-port network interface card (NIC) supported by SR-IOV can be virtualized into 256 virtual NIC (vNIC) ports for a -- theoretical -- total of 1,024 vNIC ports. SR-IOV requires BIOS/firmware support, as well as support from the hypervisor and the underlying hardware.
New computer capabilities often start as software. If those capabilities prove important and put significant demand on the system, certain functions might be implemented in hardware, often reducing or even eliminating driver or software layer requirements.
Extensions thus extend the computing platform, adding performance that is critical for often-used operations. There are many extensions, such as Single Instruction, Multiple Data Extensions 2 for streaming media tasks and Advanced Vector Extensions for floating point-intensive calculations. Virtualization is just another area where various extensions enable hardware to handle functions -- at hardware speeds -- to boost performance and support the maximum number of VMs possible.