SR-IOV 概述
外设部件互连 Express (Peripheral Component Interconnect Express, PCIe) 单根 I/O 虚拟化 (single root I/O virtualization, SR-IOV) 的实现基于由 PCI-SIG 定义的 1.1 版标准。SR-IOV 标准允许在虚拟机之间高效共享 PCIe 设备,并在硬件中实现以获得能与本机性能媲美的 I/O 性能。SR-IOV 规范定义了新的标准,其中创建的新设备允许虚拟机直接连接到 I/O 设备。
单一 I/O 资源(称为物理功能)可以由多个虚拟机共享。共享的设备提供专用的资源,并且还使用共享的通用资源。这样,每个虚拟机都可访问唯一的资源。因此,启用了 SR-IOV 并且具有适当的硬件和 OS 支持的 PCIe 设备(例如以太网端口)可以显示为多个单独的物理设备,每个都具有其自己的 PCIe 配置空间。
有关 SR-IOV 的更多信息,请参见 PCI-SIG Web 站点。
下图显示了 I/O 域中虚拟功能和物理功能之间的关系。
图 6-3在 I/O 域中使用虚拟功能和物理功能
SR-IOV 具有以下功能类型:
物理功能-支持 SR-IOV 规范定义的 SR-IOV 功能的 PCI 功能。物理功能包含 SR-IOV 功能结构并管理 SR-IOV 功能。物理功能是全面的 PCIe 功能,可以像其他任何 PCIe 设备一样发现、管理和处理。物理功能可用于配置和控制 PCIe 设备。
虚拟功能-与物理功能关联的 PCI 功能。虚拟功能是与物理功能和与该物理功能关联的虚拟功能共享一个或多个物理资源的轻量 PCIe 功能。与物理功能不同,虚拟功能仅可配置其自己的行为。
每个 SR-IOV 设备都可具有一个物理功能,并且每个物理功能都可最多具有 64,000 个与其关联的虚拟功能。此数字取决于特定的 SR-IOV 设备。虚拟功能由物理功能创建。
在物理功能中启用 SR-IOV 后,每个虚拟功能的 PCI 配置空间可以通过总线、设备和物理功能的功能编号访问。每个虚拟功能都具有一个 PCI 内存空间,用于映射其寄存器集。虚拟功能设备驱动程序对寄存器集进行操作以启用其功能,并且虚拟功能显示为实际 PCI 设备。创建后,您可以直接将虚拟功能分配给 I/O 域。此功能允许虚拟功能共享物理设备,以及在没有 CPU 和虚拟机管理程序软件开销的情况下执行 I/O。
在您的环境中使用 SR-IOV 功能可获得以下优势:
更高的性能和更短的延迟-从虚拟机环境直接访问硬件
降低的成本-节省资本支出和运营支出,这包括:
节能
减少适配器数量
简化布线
减少交换机端口
Oracle VM Server for SPARC SR-IOV 的实现包括静态和动态配置方法。有关更多信息,请参见静态 SR-IOV和动态 SR-IOV。
通过 Oracle VM Server for SPARC SR-IOV 功能,可以执行以下操作:
在指定的物理功能上创建虚拟功能
在物理功能上销毁指定的虚拟功能
将虚拟功能分配到域
从域中删除虚拟功能
要在 SR-IOV 物理功能设备中创建和销毁虚拟功能,必须首先对该 PCIe 总线启用 I/O 虚拟化。可以使用 ldm set-io 或 ldm add-io 命令将 iov 属性设置为 on。还可以使用 ldm add-domain 或 ldm set-domain 命令将 rc-add-policy 属性设置为 iov。请参见 ldm(1M) 手册页。