为虚拟化环境带来更强I/O性能!SR-IOV技术简介

在 ICT 行业,不断提高硬件资源的使用效率是技术发展路线中亘古不变的主旋律。虚拟化作为其中最为主要的解决方式之一,其带来的影响早已不言而喻。而今天我们要说的,正是虚拟化中一项非常重要的技术 —— SR-IOV,也是下一代高端企业级存储设备不可或缺的重要功能。

SR-IOV 全称“Single Root I/O Virtualization”,简单说,它可以将单一的 PCIe 设备虚拟为多个功能设备并分配给不同的虚拟机直接访问使用,借此有效提升每一个虚拟机获得的 I/O 性能并降低延迟。要想进一步了解 SR-IOV 的神奇之处,我们需要先来了解一下常规硬件平台的构成:

常规系统架构的构成(引自 PCIe 6.0 Specification)
从上图可以看到,系统镜像 System Image(简称“SI”)的运行建立在各种硬件资源之上,如 CPU、系统内存、PCIe 树等。PCIe 树又以 Root Complex(简称“RC”)为根,通过 Root Port 连接 PCIe 设备或者 PCIe Switch,Switch 又是一个扇出结构,可以连接多个 PCIe设备。

单一系统镜像对于硬件资源的使用,其效率往往是比较低的。为了提高硬件资源的使用率,我们可以在上图的基础上增加一个虚拟化中间层 Virtualization Intermediary(简称“VI”),它是虚拟机的管理层,是物理机和虚拟机的中介,VI 可以是 hypervisor,也可以是 VMM,它可以为多个 SI 的运行提供支持,架构如下图所示:

配置了 VI 和更多 SI 后,系统架构的构成(引自 PCIe 6.0 Specification)
显然,这样做可以极大提高硬件资源的利用效率,并在一些场景下良好运行。但是,当 I/O 访问压力较高,其性能下降也会比较明显 —— 每一笔 I/O 都要经过 VI 的转译和处理,VI 自身的执行效率也就很容易成为整个系统的性能瓶颈。于是,SR-IOV 应运而生。

SR-IOV 的思路是,通过将 PCIe 设备虚拟为多个 Function(Virtual Function,简称“VF”),再经过一些地址转换或管理机制(如 SR-PCIM、TA、ATPT 等),供不同 SI 直接访问使用,这样 I/O 操作就不再需要经过 VI 去转译了。

应用 SR-IOV 后的系统架构(引自 PCIe 6.0 Specification)

  • PF:Physical Function,物理功能,一个 PF 对应一项 PCIe 物理功能,可以被物理主机发现和管理。它支持 SR-IOV Extended Capability 并可由 SR-PCIM、VI 或 SI 访问。
  • VF:Virtual Function,虚拟功能,一个 VF 就是一个轻量级的 PCIe Function, 可以由 SI 直接访问;一个 PCIe Device 可以虚拟为多个 VF 并同时为不同的 SI 提供服务,无需增加硬件投入。
  • SR-PCIM:Single Root PCI Manager,这是一个管理软件,用于配置 SR-IOV Extended Capability 寄存器,管理 PF 和VF 等。

SR-IOV 通过将 PF 分为多个 VF 为上层虚拟机使用,相当于虚拟机绕过 VI 直接使用 PCIe 设备处理 I/O 和传输数据。

至于 TA(Translation Agent)、ATS(Address Translation Services)、ATPT(Address Translation and Protection Table)、ATC(Address Translation Cache)、ACS(Access Control Service)等模块,都是可选的,也都是和地址访问有关的功能,在这些功能的互相配合下,让整个虚拟化方案更加健壮。不过,由于这些都是可选功能,受篇幅限制,本文不做展开。

既然 SR-IOV 可以提供的好处有这么多,在实际业务应用中,该如何配置和使用?让我们继续往下看。

设置 SR-IOV

SR-IOV 需要主机端和设备端相互配合才行,所以我们需要:

  • 一台支持 SR-IOV 的主机
  • 一个支持 SR-IOV 的 PCIe 设备,如,忆恒创源最新发布的 PBlaze7 7940 就支持该功能,并可以提供多达32个VF。

在主机侧,我们要确保 CPU 支持虚拟化,加载 vfio,使能 IOMMU 等。另外,我们要在 BIOS 中使能 ARI Support,如图所示:

主板 BIOS 截图
ARI 是 SR-IOV 中很重要的技术,它的全称是 Alternative Routing-ID Interpretation。从下图中可以看到,没有 ARI 时,16-bit 的 ID 由 8-bit Bus Number、5-bit Device Number 和 3-bit Function Number 组成,而应用的 ARI 之后,Device Number 的 bit 位被 Function Number 占用了,此时 16-bit 的 ID 由 8-bit Bus Number 和 8-bit Function Number 组成。这样做的好处是显而易见的:ARI Device 最高可以支持256个 Function,而 Non-ARI Device 只能最高支持8个。为什么 Device Number 可以被占用呢?这是因为 Device Number 主要是用在共享总线架构中的,比如 PCI 总线。而在点对点架构中,比如像 PCIe 架构下,Device Number 通常是用不到的。

Non-AIR 与 ARI 对比(引自 PCIe 6.0 Specification)

做完主机端设置,我们移步 PBlaze7 7940 SSD 的 SR-IOV 设置,通过配置 SR-IOV Extended Capability 寄存器实现。

SR-IOV Extended Capability 结构(引自 PCIe 6.0 Specification)
首先,我们通过 lspci 命令查看 SR-IOV Extended Capability 寄存器状态,此时可以看到 VF 数量为0。

在这里插入图片描述
然后,我们向 SR-IOV Extended Capability 寄存器中的 NumVFs 写 3,即设定 3 个 VF。此时,我们再通过 lspci 命令查看 SR-IOV Extended Capability 寄存器,确认 NumVFs 设置成功。

在这里插入图片描述
现在,我们可以看到多了3个 PCI 设备。下图红框中为 VF,蓝框为 PF。

在这里插入图片描述

不过,要使 VF 真正能够工作,我们还需要使用 Virtualization Management 命令配置控制器资源。PF 对应的是 Primary Controller,VF 对应的是 Secondary Controllers。具体需要设置的部分为控制器的 Virtual Queue Resource(VQ Resource)和 Virtual Interrupt Resource(VI Resource),前者负责管理队列的控制器资源,后者负责管理中断向量的控制器资源。下图为 VF1(位于01:00.01)的最终配置情况,红框部分为 VQ Resource配置,蓝框部分为 VI Resource 配置,绿框部分则是将该 controller 设置为 online。

在这里插入图片描述
此时查看控制器资源,可以看到资源已经配置成功。

在这里插入图片描述
接下来就是给各个 VF 创建 Namespace 的环节了,相信大家对这一步都已经非常熟悉,不多做介绍。我们使用的 SSD 为 PBlaze7 7940 的 3.84TB 容量点,在创建 VF 之前,PV 上的 Namespace 显示为 3.84TB。为了给 VF 也能创建 Namespace,我们重新分配了容量,如下图所示:

在这里插入图片描述
PV 上的 Namespace 是 /dev/nvme0n1,其它3个 VF 上的 Namespace 分别是 /dev/nvme2n2,/dev/nvme3n3,/dev/nvme4n4。这4个 Namespace 的容量都设定为 800GB。

最后,我们将每一个 VF 分别挂到一个虚拟机上,就可以实现每个系统镜像对单独的 VF 进行直接访问啦。

SR-IOV 实测

在刚刚结束的美国 FMS2023 闪存峰会上,我们对 PBlaze7 7940 SSD 的 SR-IOV 功能进行了实时演示,通过设定4个不同容量的 VF 并将它们挂载到4个虚拟机当中。

在这里插入图片描述

PBlaze7 7940 SSD 支持 VF 性能配额管理,实现不同 VF 之间的性能隔离,避免因某一个虚拟机访问压力突然增加对其它虚拟机业务性能造成影响。在演示过程中,我们将4个 VF 的 Namespace 性能分别限制为 800MB/s、1200MB/s、1600MB/s 和 2400MB/s,从实测结果来看,每一个虚拟机获得的最终读性能可完美匹配我们预先设定好的带宽限制。

在这里插入图片描述
在这里插入图片描述

PBlaze7 7940 系列 PCIe 5.0 企业级 NVMe SSD

PBlaze7 7940 是忆恒创源(Memblaze)面向新 AI 技术应用、虚拟化、云计算等高性能部署使用场景打造的全新一代 PCIe 5.0 企业级 SSD。采用长江存储晶栈Xtacking X3 NAND,与目前主流的 PCIe 4.0 SSD 相比,PBlaze7 7940 有着高达1.5倍以上的性能提升,4K 随机读性能 2800K IOPS,顺序读写带宽分别达到 14GB/s 和 10GB/s,即使和同类 PCIe 5.0 SSD 相比也能保持领先。

在这里插入图片描述

它采用最新的硬件设计,在公司自主 MemSpeed 5.0 技术合集的深度优化下,硬件效率被进一步发挥,并带来更低的功耗与发热,优化的散热设计,也使其更加适合于数据中心密集型部署。PBlaze7 7940提供U.2、E1.S、E3.S、HHHL AIC四种产品形态,3.2TB-15.36TB容量点,全方位满足不同企业客户的部署使用需求。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Promox SR-IOV是一种技术,它用于在虚拟化环境中实现更高的性能和更低的延迟。SR-IOV代表单根输入/输出虚拟化,它允许虚拟机直接访问物理设备,而无需通过主机操作系统的干扰。 通常情况下,在虚拟化环境中,虚拟机通过主机操作系统来访问物理设备,这就导致了一定的性能损失和延迟。但是,Promox SR-IOV技术通过直接将物理设备的功能划分为虚拟功能,然后分配给虚拟机来解决这个问题。这使得虚拟机可以直接访问分配给它的物理设备,绕过主机操作系统的干扰。 Promox SR-IOV技术的一个重要优势是可以提供更低的延迟和更高的网络吞吐量。这对于需要高性能网络连接的应用程序非常重要,例如大规模数据传输和实时数据处理。此外,通过减少主机操作系统对网络流量的处理,SR-IOV还可以减少CPU消耗,提高整个系统的效率。 然而,Promox SR-IOV也存在一些限制。例如,由于物理设备的功能被划分为虚拟功能,因此每个虚拟机只能直接访问分配给它的特定功能。此外,SR-IOV还要求物理设备必须支持SR-IOV技术才能使用。这意味着,在实施Promox SR-IOV之前,需要对硬件进行适当的支持和配置。 总之,Promox SR-IOV是一种提高虚拟化环境性能和降低延迟的技术。通过直接将物理设备的功能划分为虚拟功能,并分配给虚拟机来实现,SR-IOV可以提供更低的延迟和更高的网络吞吐量。然而,SR-IOV也有一些限制,包括对硬件的特定支持和配置要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值