Practical principle, Progress and performance tuning of KVM-- Icano Virtualization of Notes
I/O virtualization:
In a virtualized architecture, the hypervisor must support I/O requests from clients. Generally, there are four ways to virtualize I/O.
1. Device emulation: Emulate an I/O device in the virtual machine monitor, and I/O requests from the client are captured by the virtual machine monitor and simulated for execution and returned to the client. (software implementation)
2. Front-end and back-end driver interfaces: Define a completely new interface between the virtualization monitor and the client that is appropriate for the virtualization environment. (software implementation)
3. Device direct allocation: Assign a physical device directly to the client for use, in which case there is little or no need for virtual machine monitor involvement in the link of I/O requests, so performance is good. (Requires support for specific hardware features)
4. Device sharing allocation: In fact, it is an extension of the direct allocation method of devices. A physical device can support multiple virtual machine function interfaces, and the virtual function interfaces can be independently allocated to different clients. SR-IOV, for example, is a standard protocol for this approach. (Requires support for specific hardware features)
The device is directly allocated to the Intel platform is the Vt-d feature, and the relevant parameter settings can generally be seen in the BIOS.
The Vt-d feature has a disadvantage: a single device can only be allocated to one client, while in a virtualized environment there are often multiple clients running on a host, and it is difficult to ensure that each client gets a directly allocated device.
To overcome this shortcoming, shared device allocation hardware technology was born, and SR-IOV is such a standard.
Devices that implement SR-IOV specifications have a fully functional PCI-e device that becomes a physical function (VF). After SR-IOV is used, PF derives several virtual functions (VF). VF still looks like a PCI-e device
It has minimal resource allocation, with independent resources that can be allocated directly to clients as independent devices.