目录
一、概述
SR-IOV全称Single Root I/O Virtualization,是一种IO虚拟化技术。为了减少平台资源开销,PCI-SIG开发了SR-IOV技术。SR-IOV使多个系统镜像(System Image,SI) 能够共享PCI硬件资源。系统镜像SI指的是软件,例如用于执行应用程序的操作系统或I/O设备驱动程序。
所以,有了SR-IOV,一个物理PCIe设备就可以虚拟出多个虚拟PCIe设备,然后将虚拟PCIe设备直通到各虚拟机,以实现单个物理PCIe设备支撑多虚拟机的应用场景。
为了提高硬件资源利用率,在硬件和SI之间,插入一个叫做虚拟化中介(Virtualization medium,VI)的软件,VI可以是VMM或hypervisor,如下图所示。
VI拥有底层硬件的唯一所有权。每个SI可用的硬件资源跟workload或客户策略有关。这种方法可以用于很多环境,但I/O密集型的workload会有严重的性能下降。每次I/O 操作 (inbound或outbound)都会被VI拦截和处理,这增加了大量的平台资源开销。
因此,SR-IOV技术的好处是:
- 避免VI参与主要数据移动操作——DMA、内存空间访问、中断处理等。
- 通过Single Root PCI Manager (SR-PCIM) 控制SR-IOV资源配置和管理的标准化方法。
- 通过在设备内配置大量 I/O Function来降低硬件要求和相关成本。
- 将SR-IOV与其他 I/O 虚拟化技术(例如地址转换服务 (ATS)、 ATPT技术以及中断重映射技术)集成,以创建强大、完整的 I/O 虚拟化解决方案。
下图是一个支持 SR-IOV 的平台示例。
SR-IOV通用平台配置由以下功能元素组成:
SR-PCIM (Single Root PCI Manager):软件,负责配置SR-IOV扩展能力、管理PFs和VFs、以及处理相关错误事件和整体设备的控制,例如功耗管理和热插拔服务。
可选的Translation Agent (TA):TA是负责将PCIe事务中的地址转换为相关平台物理地址的硬件 (或软硬件的组合)。TA可能包含Address Translation Cache (ATC) 以加速访问转换表。TA还可以支持Address Translation Services(ATS),它使 PCIe Function能够在DMA访问相关内存之前获得转换地址。
可选的Address Translation and Protection Table(ATPT):ATPT包含TA访问的一组地址转换,以处理PCIe请求——DMA Read、DMA Write或中断请求。
可选的Address Translation Cache (ATC):ATC可以存在于两个位置 – 位于TA内,可集成在 RC 内或位于其上方;或位于PCIe设备内。在 RC 中,ATC可以加速translation查找。在设备内,ATC通过ATS技术填充,表明它们包含转换地址的 PCIe 事务可能会绕过平台的 ATC,以提高性能而不影响与ATPT相关技术的好处。
可选的Access Control Services (ACS):ACS定义了PCIe拓扑中的一组控制点,以确定TLP是否应正常路由、阻塞或重定向。在支持SR-IOV的系统中,ACS可用于防止分配给VI或不同SI的设备的Functions相互或配对设备进行通信。重定向可以允许Translation Agent在做出对等转发决定之前转换Upstream内存TLP地址。可选的ACS P2P Egress Control可以提供选择性阻塞。ACS 受制于与ATS的交互。
Physical Function(PF):PF是一种PCIe function,它支持SR-IOV功能并且可由SR-PCIM、VI 或SI访问。
Virtual Function(VF):VF是一种轻量级PCIe function,可由SI直接访问。至少,与Function主要数据移动相关的资源可供SI使用。配置资源应限于受信任的软件组件,例如 VI 或 SR-PCIM。一个 VF 可以由不同的SI 串行共享,(即一个VF可以分配给一个 SI,然后重置并分配给另一个SI)。一个 VF 可以有选择地从一个 PF 迁移到另一个PF。迁移过程可以通过PCIe定义的配置控制来推动。
与 PF 关联的所有VF必须与PF具有相同的设备类型(例如相同的网络设备类型或相同的存储设备类型)。
二、配置步骤总结
SR-IOV 配置包括以下步骤:
1. 在服务器 BIOS 中启用虚拟化 (SR-IOV)(先决条件)
2. 在网卡Firmware固件中启用 SR-IOV
3. 在MLNX_OFED驱动程序中启用 SR-IOV
4. 设置 VM虚拟机