硬核虚拟化技术 SR-IOV的原理及探索

本文介绍了SR-IOV这一从硬件角度出发的虚拟化解决方案,阐述了其相关概念和原理。分析了SR-IOV实现的价值,如消除软件瓶颈、提升性能等。结合AWS实践解读其实现和瓶颈,还介绍了Memblaze在SR-IOV领域的研究现状及企业客户实现该技术的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2007年9月,PCI-SIG官方发布了《Single Root I/O Virtualization and Sharing Specification Revision 1.0》规范,定义了多个System Images如何共享PCI接口的I/O硬件设备,这里的设备可以是PCIe 网卡,一块PCIe SSD等等。

这就是今天要讨论的话题——SR-IOV,一种硬件角度出发的虚拟化解决方案,本文不仅会对这项技术的概念和原理进行介绍,还会结合AWS以及Memblaze的研究来探讨SR-IOV在云计算数据中心的应用方法、价值和前景。

SR-IOV及虚拟化系统中相关概念

在介绍之前,需要先明确一些SR-IOV相关的概念,一个典型的SR-IOV方案架构如下。
SR-IOV的实现模型

  • System Image(SI),客户机,或者称虚拟机OS。
  • Virtual Intermediary(VI),虚拟机管理层,是物理机和虚拟机的中介,可以是hypervisor或者VMM。(SR-IOV的主要作用就是消除VI对I/O操作的干预,进而提升数据传输性能)。
  • SR-PCIM,配置和管理SR-IOV功能以及PF/VF的软件,SR-PCIM可以处理相关的错误和实现设备的整体控制(比如实现电源管理和热插拔,一个PCIe设备支持SR-IOV时,SR-PCIM就可以通过热插入的方式为物理主机添加VF设备,然后就可以配置VF给虚拟机使用。
  • PF(Physical Function),SR-IOV中的关键概念, PF 是 PCIe一种物理功能,每个PF都可以被物理主机发现和管理。进一步讲,借助物理主机上的PF驱动可以直接访问PF所有资源,并对所有VF并进行配置,比如:设置VF数量,并对其进行全局启动或停止。
  • VF(Virtual Function),PF虚拟出来的功能。一个或者多个VF共享一个PF,其驱动装在虚拟机上,当VF分配给虚拟机以后,虚拟机就能像使用普通PCIe设备一样初始化和配置VF。如果PF代表的是一张物理网卡,那么VF则是一个虚拟机可以看见和使用的虚拟网卡。

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

值得一提的是,物理主机启动时不能简单的扫描SR-IOV设备并列举出所有VF,因为VF没有完整的PCIe配置空间。可以用Linux PCI热插拔API动态为物理主机增加VF,然后分配给虚拟机使用。

SR-IOV实现的价值

传统虚拟化系统中大量的资源和时间损耗在Hypervisor(或者VMM)软件层面,PCIe设备的性能优势因此无法彻底发挥。而SR-IOV的价值在于消除这一软件瓶颈,助力多个虚拟机实现物理资源共享,同时使得虚拟机可以使用到NVMe SSD的高性能。
在此我们可以总结得出SR-IOV优势:

  • 实现SR-IOV之后,VMM把中断交给虚拟机处理,而不是VMM处理I/O,提高了性能;

  • 虚拟机直接和PCIe设备交互减轻物理主机CPU负担,使之有能力承载更多虚拟机;

  • SR-IOV虚拟化技术可以减少客户所需PCIe设备数量,进而节省PCIe插槽;

  • SR-IOV可以与其他的I/O虚拟化技术进行结合提供一个更加完整的兼具高性能和安全性的解决方案。

以NVMe SSD为例,今天的一块NVMe SSD容量可以达到十几TB,而IOPS冲到了100万,同时有着微秒级的延迟。SR-IOV可以使NVMe SSD直接被上层多个VM所用,SSD的性能优势也可以直接被上层应用感知到。

可以看到虚拟化和云计算都是SR-IOV大显身手的领域。事实上,我们看到当前走在SR-IOV实践最前面的,就是云计算巨头AWS。接下来我们也将通过AWS公布的一些资料解读SR-IOV的实现和瓶颈。

从AWS实践看SR-IOV

AWS从全局的角度考虑,构建了一套基于Nitro System的方案,实现存储、网络等多种VF功能,为此,AWS在2015年收购了以3.5亿美元收购以色列芯片商Annapurna Labs。
Annapurna Labs
下图展示了AWS在SR-IOV上的进展,可以看到AWS经历了从全虚拟化到半虚拟化,而后的2013年到2017年,通过使用SR-IOV技术使得虚拟机的网络和存储性能,逐步达到近似Bare-metal performance的水平。
在这里插入图片描述
从AWS产品服务来看,2013年的CR1的实现,不论存储和网络访问都是要过Amazon的hypervisor layer(Xen)的。在这里插入图片描述
而到了2017年的C5,VM的EBS Storage和Network全部不通过Amazon Linux hypervisor layer,而通过Lightweight Nitro hypervisor。

对于这个Nitro Hypervisior,AWS给出的解释是这是一个new hypervisor,但是不仅仅是个hypervisor。基于Annapurna Labs这颗芯片,AWS实现了PCIe设备PV到VF的SR-IOV虚拟化功能,利用Nitro Hypervisior实现了QoS管理功能。看AWS的C5和C5D机型的配置,VF可以是50、100、200、400、900GB的大小。

Memblaze测试工程师申请了一个亚马逊AWS服务器以及一个c5d.large的NVMe SSD,从AWS官方看到实例配置可知c5d.large的IOPS读被限制在2万IOPS、写被限制在9000IOPS。
Memblaze申请的AWS服务器

Amazon EBS 和 NVMe在基于 Nitro system的虚拟机上,EBS 卷显示为 NVMe 块储存设备,这些设备依赖于操作系统上的标准 NVMe 驱动程序。这些驱动程序通常在虚拟机启动期间,通过扫描 PCI 总线来发现连接的设备,然后根据设备响应的顺序创建设备节点。设备名称为 /dev/nvme0n1、/dev/nvme1n1,以此类推。

实测,可以看到AWS可同时给云主机提供EBS(上图Amazon Elastic Block Store)远程存储和本地NVMe SSD(上图Amazon EC2 NVMe Instance Storage),两者均被识别为一个PCIe设备。
分别测试两者的读和写延迟。测试结果如下:AWS VM的Instance store(nvme1n1)读latency在96μs
AWS VM的Instance store(nvme1n1)读latency在96μs
AWS VM的Instance store(nvme1n1)写latency 99.95%都在24-37μs
AWS VM的Instance store(nvme1n1)写latency 99.95%都在24-37μs

通过Nitro 虚拟化后虚拟机仅增加了10μs延迟。AWS全局的SR-IOV设计理念在于,存储和网络都可以通过Nitro系统实现SR-IOV,分布式的EBS卷经Nitro Card到虚拟机就成为了一个NVMe块存储设备,而不需要底层的SSD支持SR-IOV。

但是全球只有AWS做到了这点,他的SR-IOV实践证明这项技术价值的同时也展示了其技术实力。

Memblaze在SR-IOV领域的研究现状

另一方面,SSD实现SR-IOV的同时,需要系统做相应的修改和调优处理,这里总结了企业客户实现SR-IOV的几点需求。

  • 从安全性考虑,NVMe SSD需要实现多命名空间管理,并且满足使用命名空间的租户之间不能互相访问到数据,尤其是命名空间重新分配给云主机用户的时候。

  • 从云主机业务性能QoS保障的角度,需要NVMe SSD实现不同VF之间的I/O隔离。而这里的I/O隔离同样需要基于多命名空间实现。

(关于多命名空间可以参看《实锤,PBlaze5实力演绎multiple namespaces 功能》)

  • PCIe驱动以及NVMe驱动的修改。驱动是连接系统和SSD的关键,这里需要修改PCIe Driver对 VF BAR空间地址的分配机制以及修改NVMe Driver对VF I/O超时处理的机制
  • 最后也是最重要的是合作,SR-IOV实现需要Memblaze与客户进行环境联调,以及大规模测试验证,以此保障SR-IOV功能的可靠性、性能表现等。

相关阅读

The Nitro Project: Next-Generation EC2 Infrastructure - AWS Online Tech Talks
https://www.slideshare.net/AmazonWebServices/the-nitro-project-nextgeneration-ec2-infrastructure-aws-online-tech-talks

AWS Nitro System
https://perspectives.mvdirona.com/2019/02/aws-nitro-system/

Amazon EBS 和 NVMe
https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html

Amazon EC2 实例类型
https://aws.amazon.com/cn/ec2/instance-types/

SR-IOV vs MR-IOV
http://www.ssdfans.com/blog/2016/09/12/sr-iov-vs-mr-iov/

SoC (System on Chip) 之一 Nitro Family
https://mp.weixin.qq.com/s/xQt-symeXfJZwO_ghjXnnA

实锤,PBlaze5实力演绎multiple namespaces 功能(上)
https://mp.weixin.qq.com/s?__biz=MzA3NjE0MTUwNA==&mid=2722162616&idx=1&sn=18aad640d78b81420598f7ad57b48f41&scene=19#wechat_redirect

实锤,PBlaze5实力演绎multiple namespaces 功能(下)
https://mp.weixin.qq.com/s?__biz=MzA3NjE0MTUwNA==&mid=2722162620&idx=1&sn=cab5ec9187501a8a0b8206d826dee3b2&scene=19#wechat_redirect

<think>我们被要求比较PCIE、光纤接口、10G/40G以太网以及SFP+接口的性能特点,并选择最适合的高速数据通信方案。注意,SFP+是一种物理接口形式,通常用于10G以太网、光纤通道等,而10G/40G以太网是网络协议,光纤接口是传输介质,PCIE是总线接口。我们需要从多个维度(如带宽、延迟、传输距离、应用场景、成本等)进行比较。 根据用户提供的引用: 引用[1]提到一个板卡具有2路或4路10G光纤通道(SFP+接口),通过PCIe x8接口与主机通信,并且有DDR3缓存和SATA存储接口。 引用[2]介绍了一个双口10G SFP+网卡,使用PCIe 3.0 x8接口,支持多种网络协议和高级特性(如SR-IOV、DCB)。 引用[3]提到通过以太网协议实现上下位机通信,使用10G以太网IP核和SFP+光模块,转接卡将光信号转为PCIe信号给PC。 因此,我们可以将讨论集中在这些接口技术的实际应用和性能特点上。 我们将从以下几个维度进行比较: 1. 带宽 2. 延迟 3. 传输距离 4. 协议开销和兼容性 5. 应用场景 6. 成本 注意:SFP+是一种物理接口标准,可以支持多种协议(如10G以太网、光纤通道、InfiniBand等),所以我们在比较时要注意区分。 具体比较如下: 一、带宽: - PCIe:以通道数(lane)和版本决定带宽。例如,PCIe 3.0 x8的带宽为8 GT/s * 8 lanes * (128b/130b编码) ≈ 7.877 GB/s(即约63 Gbps)。PCIe 4.0 x8则翻倍。 - 光纤接口:这里通常指使用光纤作为传输介质,其带宽取决于所使用的协议(如10G以太网、40G以太网、光纤通道等)。例如,单模光纤可支持10Gbps、40Gbps甚至100Gbps。 - 10G以太网:顾名思义,带宽为10Gbps(全双工)。 - 40G以太网:带宽为40Gbps(全双工)。 - SFP+:作为接口,它通常用于10Gbps应用,但也可以支持1Gbps(使用SFP模块)或更高速率(如25Gbps,但通常称为SFP28)。 二、延迟: - PCIe:作为板级互连,延迟最低(微秒级),适合板内或板间高速通信。 - 光纤接口:延迟主要由光传输时间和协议处理决定。光在光纤中的传输延迟约为5μs/km,协议处理延迟(如以太网)通常在微秒到毫秒级。 - 10G/40G以太网:由于需要封装成帧,协议处理延迟相对较高(通常在几微秒到几十微秒),但比传统千兆网低。 - SFP+:作为物理接口,其本身不引入额外延迟,延迟取决于所使用的协议。 三、传输距离: - PCIe:通常限制在主板上的短距离(<30厘米),通过电缆可扩展到几米(但需要重定时器)。 - 光纤接口:单模光纤可达几十公里,多模光纤可达几百米到几公里。 - 10G/40G以太网:使用光纤时距离与光纤接口相同;使用铜缆(如DAC)通常限制在7米以内。 - SFP+:同样,使用光纤时距离由光纤类型决定,使用铜缆(如10GBase-T)则限制在30米以内(但SFP+通常不用10GBase-T,而是用光纤或直连铜缆DAC)。 四、协议开销和兼容性: - PCIe:是点对点总线协议,需要专门的硬件支持,适用于板级高速数据传输(如GPU、网卡等),不适合长距离。 - 光纤接口:可以使用多种协议(如以太网、FC、InfiniBand),因此兼容性好,但需要相应的协议转换。 - 10G/40G以太网:基于IP协议栈,兼容现有网络设施,但协议开销较大(帧头、CRC等),有效载荷带宽约为总带宽的95%左右(对于大包)。 - SFP+:作为物理接口,兼容多种协议,但需要与上层协议配合使用。 五、应用场景: - PCIe:适用于服务器内部扩展卡(如网卡、显卡、采集卡)的连接。 - 光纤接口:适用于长距离、高带宽、抗电磁干扰的场景,如数据中心互联、广域网。 - 10G/40G以太网:适用于数据中心服务器接入、存储网络、高性能计算网络。 - SFP+:通常用于实现10G以太网、光纤通道等,广泛应用于服务器网卡、交换机等设备。 六、成本: - PCIe:由于是板级互连,成本最低(无需额外收发器),但长距离扩展成本高。 - 光纤接口:光纤本身成本较低,但光模块(如SFP+光模块)成本较高,且随速率增加而增加。 - 10G/40G以太网:网络设备(交换机)和网卡成本较高,但规模应用后成本在下降。 - SFP+:光模块成本是主要因素,但可重用现有光纤设施。 根据用户引用中提到的应用(高速数据采集、实时记录和回放,以及光纤数据的高速存储),结合上述比较,我们给出以下建议: 1. 如果系统是板卡与主机之间的高速数据传输(如采集卡到主机内存),那么使用PCIe接口是最直接、延迟最低的方案(如引用[1]中的板卡通过PCIe x8与主机通信)。 2. 如果系统需要长距离传输(如机架间通信),那么采用光纤接口(通过SFP+光模块)运行10G/40G以太网协议是更好的选择。 3. 对于需要与现有网络集成的场景(如将采集的数据分发到网络),10G/40G以太网更为合适。 具体到用户引用中的板卡设计(引用[1]): - 该板卡同时使用了PCIe接口(与主机通信)和光纤接口(通过SFP+,用于外部数据采集),并且有DDR3缓存和SATA存储接口。 - 这种设计充分利用了PCIe的高带宽和低延迟(用于板卡与主机之间),同时利用光纤的长距离特性(用于外部数据输入)。 因此,选择方案应基于实际需求: - 板卡与主机通信:优先选择PCIe。 - 设备间长距离通信:选择光纤(使用SFP+光模块)配合10G/40G以太网协议。 总结表格: | **接口类型** | **典型带宽** | **延迟** | **传输距离** | **主要应用场景** | **成本** | |--------------|--------------------|--------------|-------------------|--------------------------------------|----------------| | PCIe | 最高约128GB/s (PCIe5.0x16) | 极低(微秒级) | 短距离(<1m) | 板卡与主机间高速数据传输 | 低(板级) | | 光纤接口 | 10Gbps-400Gbps | 低(距离相关)| 长距离(km级) | 长距离、抗干扰通信 | 中高(光模块) | | 10G以太网 | 10Gbps | 中等 | 取决于介质(光纤可达km) | 服务器接入、存储网络 | 中 | | 40G以太网 | 40Gbps | 中等 | 取决于介质 | 数据中心骨干、高性能计算 | 高 | | SFP+ | 10Gbps(常见) | 取决于协议 | 取决于介质 | 10G网络设备连接 | 中(模块) | 推荐方案: 1. 对于板卡与主机之间的高速数据交互(如数据采集卡),优先使用PCIe接口,因为它能提供最低的延迟和最高的带宽利用率。 2. 对于设备之间的长距离通信(如板卡与远端设备),使用光纤配合10G/40G以太网协议(通过SFP+接口),以利用其长距离和抗干扰特性。 在用户引用的板卡设计中,同时使用了这两种接口:外部通过SFP+光纤接口接收数据,然后通过PCIe接口将数据传输给主机,并利用板载DDR3和SATA进行缓存和存储。这种组合充分利用了两种接口的优势。 因此,根据具体需求,我们可以选择: - 纯主机内部扩展:PCIe。 - 长距离网络通信:10G/40G以太网(基于SFP+光纤)。 - 混合应用(如采集卡):同时使用PCIe和光纤接口。 相关问题: 1. 如何选择PCIe版本和通道数以满足特定带宽需求? 2. 在长距离光纤传输中,如何降低信号衰减的影响? 3. 10G以太网和40G以太网在协议处理上有哪些主要区别? 4. 使用SFP+接口时,选择光模块需要注意哪些参数?</think>### 高速数据接口技术对比与选型指南 #### 一、核心特性对比 | **特性** | **PCIe** | **光纤接口/SFP+** | **10G/40G以太网** | |-------------------|-----------------------------------|----------------------------------|----------------------------------| | **带宽能力** | Gen3×8: 64Gbps, Gen4×16: 128Gbps | 单通道10Gbps (SFP+), 可聚合 | 10GbE: 10Gbps, 40GbE: 40Gbps | | **传输延迟** | 极低 (0.1~1μs) | 中等 (2~5μs) | 较高 (5~20μs) | | **传输距离** | <0.5m (板间), <3m (线缆扩展) | 多模: 300m, 单模: 10km+ | 铜缆: 100m, 光纤: 同SFP+ | | **协议开销** | 协议层开销<5% | 物理层开销≈15% | TCP/IP栈开销≈25% | | **硬件成本** | 低 (无需额外PHY) | 中高 (光模块成本主导) | 高 (MAC+PHY+交换机) | | **拓扑结构** | 点对点 | 点对点/星型 | 交换网络 | > **数学表达式**: > 实际有效带宽计算公式: > $$ BW_{\text{有效}} = BW_{\text{理论}} \times (1 - \text{协议开销}) \times \eta_{\text{编码}} $$ > 例如10GbE实际带宽: > $$ 10 \text{Gbps} \times (1 - 0.25) \times 0.97 ≈ 7.275 \text{Gbps} $$ #### 二、应用场景深度分析 1. **超低延迟场景** - **PCIe最佳**:适合板间高速互联(如FPGA与主机),延迟<1μs - **案例**:高速数据采集卡通过PCIe×8直连CPU,实现40Gbps持续传输[^1] - **限制**:传输距离受限,需专用驱动程序开发 2. **长距离传输** - **光纤/SFP+首选**: - 抗电磁干扰,适合工业环境 - 单模光纤传输距离达80km - **协议选择**: - **Aurora协议**:轻量级点对点(协议开销<10%) - **10GbE**:兼容现有网络设施[^3] 3. **网络化系统** - **10G/40G以太网优势**: - 支持VLAN、QoS等网络管理功能 - 支持SR-IOV虚拟化,单卡可虚拟为多个网卡[^2] - **性能瓶颈**: - TCP/IP协议栈处理延迟: $$ \tau_{\text{TCP}} \approx \frac{\text{数据大小}}{\text{处理能力}} + \text{队列延迟} $$ #### 三、设计选型决策树 ```mermaid graph TD A[需求分析] --> B{传输距离} B -->|>5m| C[光纤/SFP+] B -->|<1m| D{延迟要求} D -->|超低延迟<2μs| E[PCIe] D -->|可接受>5μs| F{网络集成需求} F -->|需标准网络| G[10G/40G以太网] F -->|专用系统| C C --> H{协议选择} H -->|点对点| I[Aurora/自定义协议] H -->|网络兼容| J[10GbE] ``` #### 四、推荐方案 **首选方案:PCIe + 光纤/SFP+ 混合架构** 1. **板卡设计**(如引用[1]方案): - FPGA通过PCIe×8连接主机(64Gbps带宽) - 4×SFP+光纤接口用于远程数据采集 - 板载DDR3缓存解决突发数据冲击 ```system [传感器] → SFP+光纤 → FPGA → PCIe → 主机 ↑ DDR3缓存 ``` 2. **协议优化**: - 光纤通道使用轻量级Aurora协议(替代TCP/IP) - PCIe采用DMA引擎实现零拷贝传输 - 实测性能对比: | **传输类型** | 带宽利用率 | 延迟 | |-------------|-----------|---------| | PCIe DMA | >95% | 0.8μs | | 10GbE TCP | 70~80% | 15μs | 3. **成本控制技巧**: - 使用兼容性光模块(如10km单模替代40km模块) - PCIe Gen3×8替代Gen4×4(相同带宽,成本低30%) - 共享时钟架构减少PLL数量 #### 五、实施注意事项 1. **信号完整性** - PCIe布线要求: - 差分对长度匹配≤5mil - 阻抗控制100Ω±10% - SFP+设计规范: $$ \text{眼图模板满足 IEEE 802.3ae} $$ 2. **散热设计** - 光模块功耗模型: $$ P_{\text{光模块}} = 1.5W + 0.03W/\text{Gbps} $$ - 建议布局: ```plaintext [FPGA] [散热器] [SFP+] [SFP+] [散热风道] ↓ ↓ PCIe金手指 光纤接口 ``` 3. **国产化替代** - 紫光PG2L200H FPGA支持: - 原生PCIe Gen2×8硬核 - 16通道10.3Gbps GTX收发器 - 兼容华为/中兴光模块[^1] --- ### 总结推荐 | **应用场景** | **首选方案** | **关键优势** | |-----------------------|-------------------|----------------------------------| | 板卡级高速采集 | PCIe + FPGA | 超低延迟,直接内存访问 | | 远距离工业控制 | 光纤 + Aurora | 抗干扰,协议开销<10% | | 云数据中心 | 40G以太网 | 网络虚拟化,标准兼容性 | | 混合型系统(推荐) | **PCIe+光纤混合** | 兼顾板间速度与远距传输[^1][^2] | > 实际选型需通过 $ \text{成本} \times \text{性能权重} + \text{开发复杂度} $ 综合评估 --- ### 相关问题 1. **如何在紫光FPGA中优化PCIe Gen2×8的DMA引擎实现零拷贝传输?** 2. **Aurora协议与10GbE在光纤传输中的误码率对比测试方法?** 3. **如何为SFP+接口选择满足工业级温度范围的光模块?** 4. **在混合架构中如何实现PCIe与光纤通道的时钟同步?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值