实施 SR-IOV 的硬件注意事项

Red Hat Virtualization 4.4

使用 Red Hat Virtualization 实现 SR-IOV 的硬件注意事项

摘要

物理功能是传统的 PCIe 功能,包括 SR-IOV 功能,具备对 PCIe 设备的完整配置和控制,包括数据移动。每个 PCIe 设备都可以有一到八个独立的 PF。


前言

= 实施 SR-IOV 的硬件注意事项

第 1 章 简介

这是显示如何在 {virt-product-fullname} 上设置和配置 SR-IOV 的一系列主题中的一个:

物理功能是传统的 PCIe 功能,包括 SR-IOV 功能,具备对 PCIe 设备的完整配置和控制,包括数据移动。每个 PCIe 设备都可以有一到八个独立的 PF。

虚拟功能是轻量级 PCIe 功能,包含数据移动所需的资源和最小化配置资源集合。可以在每个 PF 上创建多个 VF,每个 PF 都可以支持不同数量的 VF。允许的 VF 总数取决于 PCIe 设备供应商,设备之间的不同。

PCIe 规范通过实施替代路由 ID 解释器(ARI)支持更多 VF 数量,它重新解释 PCIe 标头中的设备编号字段,允许超过八个功能。此转换依赖于 PCIe 设备和设备的立即上游端口,无论是根端口还是交换机,均支持 ARI。

系统固件(BIOS 或 UEFI)为 PCIe 拓扑分配资源,包括内存、I/O 端口属性和 PCIe 总线编号范围。因此,为了分配充足的资源,固件必须支持并启用 SR-IOV。

1.1. SR-IOV 的硬件注意事项摘要

  • 固件(BIOS 或 UEFI)必须支持 SR-IOV。检查是否默认启用 扩展名。如果没有,请手动启用。这类似于启用虚拟化扩展(VT-d 或 AMD-Vi)。有关具体详细信息,请参阅供应商手册。
  • PCIe 设备(如 PCIe 交换机)的根端口或端口必须支持 ARI。
  • PCIe 设备必须支持 SR-IOV。

请参阅供应商规格和产品规格说明,以确认硬件是否满足这些要求。

lspci -v 命令可用于打印系统上已安装的 PCI 设备的信息。

第 2 章 使用设备分配的其他硬件注意事项

设备分配提供直接将虚拟客户机分配到 PCIe 设备的能力,从而授予虚拟客户机完全访问权限并提供接近原生的性能。与 SR-IOV 结合使用时,会直接为虚拟客户机分配 VF。这样,可将多个虚拟客户机直接分配给单个 PCIe 设备的 VF。

SR-IOV 不需要启用来直接将虚拟机分配到 PCIe 设备,也没有设备分配唯一用于创建 VF 的应用程序,但是,这两个功能是互补的,如果要一起使用,还有其他硬件注意事项。

设备分配需要在 CPU 和固件中支持 I/O 内存管理单元(IOMMU)。IOMMU 转换 I/O 虚拟地址(IOVA)和物理内存地址。这允许虚拟 guest 使用客户机物理地址对设备进行编程,然后由 IOMMU 将其转换为主机物理地址。

IOMMU 组是可与系统中所有其他设备隔离的设备组。IOMMU 组代表最小的设备集合,它具有 IOMMU 粒度,并且与系统中所有其他 IOMMU 组隔离。这允许 IOMMU 将事务区分给 IOMMU 组之外的设备之间的直接内存访问(DMA),同时限制 IOMMU 组之外的设备之间的直接内存访问(DMA)。

虚拟客户机和 PCIe 设备的虚拟功能之间的事务隔离是设备分配的基础。PCIe 和服务器规格中定义的访问控制服务(ACS)功能是维护 IOMMU 组内隔离的硬件标准。如果没有本地 ACS,或者没有硬件供应商的验证,OVS 组中的任何多功能设备都存在在 IOMMU 保护之外的功能之间的对等对等点 DMA 的风险,将 IOMMU 组扩展为包含有适当隔离的功能。

也建议对服务器的根端口提供原生 ACS 支持,否则这些端口上安装的设备将分组在一起。root 端口有两个变体,基于处理器(北桥)根端口和基于控制器中心(southbridge)的根端口。如上所示,如果设备分配与 SR-IOV 结合使用,并且虚拟客户机被分配给 VF,则这些端口必须同时支持 ACS 和 ARI。

Intel 的 Xeon Processor E5 系列、Jenkins Processor E7 系列和 High End Desktop Processors 在基于处理器的根端口上提供原生 ACS 支持。

基于 Intel Platform Controller Hub 的(PCH)PCI Express Root Port 目前不支持 ACS,或使用非标准 ACS 实施,使得通过这些根端口连接的设备进行精细隔离变得困难。其中许多根端口都支持 ACS 等效功能。Red Hat Enterprise Linux 7.3 内核包括对在 X79、X99、5 序列通过 9 序列以及 100 系列 PCI Express 芯片组启用此 ACS 等同功能的支持。

安装 PCIe 设备时,请参阅供应商规格,以确定基于处理器和控制器中心的根端口,以确保 root 端口支持 ACS。

此外,在 I/O 拓扑中,任何 PCIe 交换机或桥接都需要 ACS 支持,否则可能会扩展 IOMMU 组。

2.1. 设备分配的硬件注意事项摘要

  • CPU 必须支持 IOMMU(如 VT-d 或 AMD-Vi)。IBM POWER8 默认支持 IOMMU。
  • 固件必须支持 IOMMU。
  • 使用的 CPU 根端口必须支持 ACS 或 ACS 等效功能。
  • PCIe 设备必须支持 ACS 或 ACS 等效功能。
  • 建议 PCIe 设备和根端口之间的所有 PCIe 交换机和网桥都支持 ACS。例如,如果交换机不支持 ACS,该交换机后面的所有设备共享同一个 IOMMU 组,并且只能分配到同一虚拟机。

请参阅供应商规格和产品规格说明,以确认硬件是否满足这些要求。

lspci -v 命令可用于打印系统上已安装的 PCI 设备的信息。