Menu Close
Settings Close

Language and Page Formatting Options

13.7. 管理 SR-IOV 设备

模拟虚拟设备通常使用比硬件网络设备更多的 CPU 和内存。这可能会限制虚拟机的性能。但是,如果您的虚拟化主机上的任何设备都支持单根 I/O 虚拟化(SR-IOV),您可以使用此功能提高设备性能,还可能使用虚拟机的整体性能。

13.7.1. 什么是 SR-IOV?

单根 I/O 虚拟化(SR-IOV)是一种规范,它允许单个 PCI Express(PCIe)设备向主机系统呈现多个单独的 PCI 设备,称为 虚拟功能 (VF)。这样的每个设备:

  • 提供与原始 PCI 设备相同的或类似的服务。
  • 出现在主机 PCI 总线的不同地址上。
  • 可使用 VFIO 分配功能分配到不同的虚拟机。

例如,单个具有 SR-IOV 的网络设备可以向多个虚拟机显示 VF。虽然所有 VF 都使用相同的物理卡、相同的网络连接和同一网络电缆,每个虚拟机直接控制自己的硬件网络设备,并且不使用来自主机的额外资源。

SR-IOV 的工作原理

SR-IOV 功能可能会因为引进了以下 PCI 功能:

  • 物理功能(PF) - 一个 PCIe 功能向主机提供设备的功能(如联网),但也能够创建和管理一组 VF。每个具有 SR-IOV 功能的设备都有一个或多个 PF。
  • 虚拟功能(VF) - 充当独立设备的轻量级 PCIe 功能。每个 VF 都是从 PF 中派生的。一个设备可依赖于设备硬件的最大 VF 数。每个 VF 每次只能分配给一个虚拟机,但虚拟机可以分配多个 VF。

VM 将 VF 识别为虚拟设备。例如,SR-IOV 网络设备创建的 VF 显示为分配的虚拟机的网卡,其方式与物理网卡出现在主机系统一样。

图 13.1. SR-IOV 架构

Virt SR IOV

优点

使用 SR-IOV VF 而不是模拟设备的主要优点是:

  • 提高的性能
  • 减少主机 CPU 和内存资源使用量

例如,附加到虚拟机作为 vNIC 的 VF 在与物理 NIC 几乎相同级别执行,比半虚拟化或模拟 NIC 更好。特别是,当在单一主机上同时使用多个 VF 时,性能会非常显著。

缺点

  • 要修改 PF 的配置,您必须首先将 PF 公开的 VF 数更改为零。因此,您还需要从虚拟机中删除这些 VF 提供的设备。
  • 附加了 VFIO 分配设备的虚拟机(包括 SR-IOV VF)无法迁移到另一台主机。在某些情况下,您可以使用模拟设备对分配的设备进行约束。例如,您可以将分配的网络 VF 绑定到模拟 vNIC,并在迁移前删除 VF。
  • 此外,VFS 分配的设备需要固定虚拟机内存,这会增加虚拟机的内存消耗并防止在虚拟机上使用内存膨胀。