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

news2024/12/23 13:21:43

在 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容量点,全方位满足不同企业客户的部署使用需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1000290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一练 | 网络工程师软考真题Day32

阅读以下说明,答复以下【问题1】至【问题5】 【说明】 某公司内部效劳器S1部署了重要的应用,该应用只允许特权终端PC1访问,如图4-1所示。为保证通信平安,需要在S1上配置相应的IPSec策略。综合考虑后,确定该IPSec策略如…

龙迅LT86204UX HDMI二进四出 支持高达4K60HZ的分辨率

龙迅LT86204UX 1.描述: LT86204UX HDMI2.0/1.4交换机具有2:4的开关,符合HDMI2.0/1.4规格,最大6Gbps高速数据速率,自适应均衡RX输入和预先强调的TX输出。LT86204UX HDMI2.0/1.4交换机自动检测电缆损耗,并自…

上位机的社会工作发展前景

在元宇宙发展的趋势下,上位机已经融合了虚拟现实(VR)和增强现实(AR)技术。我们不能局限于传统的电脑上的上位机开发,作为工控领域的从业者,我们应该打通PLC与各种先进外设的互通和互信。无论是i…

【C-C++源码】仓库管理系统 期末课设必备源码

文章目录 介绍 介绍 有两个版本,一个是C语言,一个是C,自行选择,VC、VS、devc等各编译器均可运行。代码注释齐全,容易理解,代码量850行。 printf("需要源码,可以百度:学长敲代码")&…

risc-v dv源代码分析

地址为 GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verificationRandom instruction generator for RISC-V processor verification - GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verif…

论文于祥读及复现——《VDO-SLAM: A Visual Dynamic Object-aware SLAM System》

论文详读之------《一个视觉动态对象感知SLAM系统》 0. 出发点(暨摘要)1.引言2. 相关工作2.1 探索针对动态环境的健壮SLAM2.2 分别执行SLAM和运动对象跟踪(MOT),作为传统SLAM的扩展,用于动态场景理解。2.3 对象SLAM(通…

2023年高校大数据实验室建设方案

大数据实验室建设方案具体内容包括:人才培养方案建设、课程资源建设、师资建设、实验室建设、教学服务建设。 泰迪打造国内领先的大数据人工智能及课程资源,包括:商务数据分析实训管理平台、云计算资源管理平台、大数据编程实训平台、商务数据…

linux入门---用匿名管道实现一个功能

前言 在之前的学习中我们知道通信的概念和匿名管道的使用,那么接下来我们就要用匿名管道来实现一个功能,首先我们有很多的函数需要被执行,然后创建一些子进程通过匿名管道方式给子进程传递一些信息,然后子进程就根据这些信息来确…

Linux安装免费Https证书,过期自动更新 省钱秘籍

Linux安装免费Https证书,过期自动更新 acme.sh这个服务可以友好地帮助我们获取免费的证书以及过期实现自动更新操作 官方网站:https://github.com/acmesh-official/acme.sh 介绍 嗨!今天我要和大家聊聊关于使用acme.sh和Nginx结合生成HTT…

基于SpringBoot的招聘信息管理系统

基于SpringBootVue的招聘信息管理系统【附源码文档】、前后端分离 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:管理员、用户、…

运营商大数据可以帮助企业实现什么目标?

虽然现在有很多合法合规的运营商大数据,那么合法合规的运营商大数据可以实现什么目标? 1、对用户进行相应研究的目标 如果是合法合规的运营商大数据那么这种情况下,对于用户就能够进行相应的研究了。在这个过程中可以直接对产品的优化进行相…

【博客笔记+java+测试】

一、项目背景 1.个人博客采用前后端分离的方法来实现,同时使用数据库存储相关的数据,将其部署在云服务器上。前端主要分为五个页面:注册页、登录页、列表页、详情页和编辑页,以上模块实现了最简单的个人博客系统。其结合后端实现了…

读高性能MySQL(第4版)笔记05_优化服务器设置

1. 除非遇到异常情况,否则不需要调整配置 1.1. 不要“调优”服务器,不要使用比率、公式或“调优脚本”作为设置配置变量的基础 1.1.1. 在互联网上搜索配置建议并不总是一个好主意,你会在博客、论坛等找到很多糟糕的建议 1.1.2. 很难判断谁…

【高阶数据结构】红黑树 {概念及性质;红黑树的结构;带头结点的红黑树;红黑树的实现;红黑树插入操作详细解释;红黑树的验证}

红黑树 一、红黑树的概念 红黑树(Red Black Tree) 是一种自平衡二叉查找树,在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有…

Python算法练习 9.11

leetcode 392 判断子序列 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcd…

波奇学C++:多态知识点

多态中函数的重写&#xff08;基类指针访问派生类函数&#xff09;&#xff0c;只重写函数的实现&#xff0c;而不重写声明。 class Person { public:virtual void fun(int i 0){cout << "Person"<<" "<<i;} }; class Student:public …

H5页面safari浏览器底部遮挡问题解决方案亲测有效

media screen and (max-width: 767px) { _::-webkit-full-page-media, _:future, :root .safari_only { padding-bottom: 120px; //解决Safari浏览器底部遮挡问题 } } 然后给对应div加上这个类名就可以了

本地录像视频文件如何推送到视频监控平台EasyCVR进行AI视频智能分析?

安防监控平台EasyCVR支持多协议、多类型设备接入&#xff0c;可以实现多现场的前端摄像头等设备统一集中接入与视频汇聚管理&#xff0c;并能进行视频高清监控、录像、云存储与磁盘阵列存储、检索与回放、级联共享等视频功能。视频汇聚平台既具备传统安防监控、视频监控的视频能…

ESP32开发:Clion配置IDF

IDF环境搭建 使用安装包安装IDF 可以通过安装包进行安装&#xff0c;如下图&#xff1a; 下载链接如下&#xff1a;https://dl.espressif.cn/dl/esp-idf/?idf4.4 安装好后&#xff0c;IDF会添加环境变量IDF_TOOLS_PATH&#xff0c;如果要安装多个IDF&#xff0c;为了防止冲…

Java笔记:ThreadLocal

1. ThreadLocal简介 多线程访问同一个共享变量的时候容易出现并发问题&#xff0c;特别是多个线程对一个变量进行写入的时候&#xff0c;为了保证线程安全&#xff0c;一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步…