SR-IOV
(Single Root I/O Virtualization
)是一个将PCIe
共享给虚拟机的标准,通过为虚拟机提供独立的内存空间、中断、DMA
流,来绕过VMM
实现数据访问。SR-IOV基于两种PCIe functions
:
PF
(Physical Function
): 包含完整的PCIe
功能,包括SR-IOV
的扩张能力,该功能用于SR-IOV
的配置和管理。FV
(Virtual Function
): 包含轻量级的PCIe
功能。每一个VF
有它自己独享的PCI
配置区域,并且可能与其他VF
共享着同一个物理资源
SR-IOV要求
CPU 必须支持IOMMU(比如英特尔的VT-d 或者AMD的 AMD-Vi,Power8 处理器默认支持IOMMU)固件Firmware 必须支持IOMMU
CPU 根桥必须支持 ACS 或者ACS等价特性
PCIe 设备必须支持ACS 或者ACS等价特性
建议根桥和PCIe 设备中间的所有PCIe 交换设备都支持ACS,如果某个PCIe交换设备不支持ACS,其后的所有PCIe设备只能共享某个IOMMU 组,所以只能分配给1台虚机
SR-IOV vs PCI path-through
架构上的比较(以网卡为例)
来源:https://tonydeng.github.io/sdn-handbook/linux/sr-iov.html