【KVM】英特尔SR-IOV实现PCI硬件资源共享

引言

随着虚拟化服务器部署的不断增加,虚拟化技术继续着在特别是I/O性能方面的变革。整个行业将大量工作投入到通过使用虚拟化技术提高硬件资源利用(例如应用执行)的有效性上。Single Root I/O Virtualization and Sharing Specification(SR-IOV)详细规定了PCI Express规范套件扩展能让虚拟化环境中的多个系统图像(SI)或者虚拟机(VM/Guest)共享PCI硬件资源。

I/O虚拟化目标

虚拟化方面有很多趋势推动着对更高效I/O虚拟化解决方案的需求:

•由于通过Intel Virtualization Technology(Intel VT)降低了虚拟机管理器(Virtual Machine Monitor,VMM),通过Intel微架构和多核处理器提高了能源效率,因此每台服务器中的虚拟机数量也随之增加
•增强的处理能力和服务器利用率要求有更高速和可扩展的I/O
•设备直接内存访问的隔离增强了安全性和鲁棒性
•由于处理器中的硬件辅助功能(包括Intel VT-x)削减了处理器端的软件开销并弥补了本地性能的不足,在虚拟机之间对高性能I/O设备的基于软件的共享是不够的。

因此,一款一体化的虚拟化解决方案的目标就是提供:

•与环境运行在单独物理服务器上时相同的隔离功能
•支持可利用I/O设备上物理资源所需虚拟机数量的可扩展性。另外还为I/O操作提供了接近本机的性能

Intel Virtualization Technology for Connectivity

Intel Virtualization Technology for Connectivity是Intel最新的虚拟化技术。这个I/O虚拟化技术的结合体通过加强虚拟服务器中主机CPU与I/O设备的通信来提升整体系统性能,降低了CPU利用率和系统延迟,同时提高了网络和I/O吞吐量。

Intel以太网适配器支持Intel VT for Connectivity,该技术包括:

•PCI-SIG SR-IOV实施
•虚拟机设备队列(Virtual Machine Device Queues,VMDq)
•Intel I/O加速技术(Intel I/O Acceleration Technology,Intel I/OAT)

目前的情况

到目前为止,行业中所有针对虚拟化服务器的技术都是通过软件模拟共享和虚拟化网络适配器的一个物理端口,以满足虚拟机的I/O需求。模拟软件的多个层为虚拟机作了I/O决策,因此导致环境中出现瓶颈并影响I/O性能。另外它还影响到一台物理服务器上运行的虚拟机数量以均衡系统的I/O性能。

解决问题

目前的I/O虚拟化技术存在诸多挑战。这些挑战包括:

•在虚拟化服务器上的高I/O性能影响

•需要软件模拟层来处理所有通信和处理信息,从而提高CPU利用率

•通过单CPU内核分散中断和数据给系统造成了一个I/O瓶颈

英特尔SR-IOV实现PCI硬件资源共享

一个支持SR-IOV功能的典型网络适配器

注释:pDRV:物理驱动程序,vDRV:虚拟驱动程序

为了解决这些挑战,出现了两个解决方案:VMDq和SR-IOV。

Intel开发了VMDq技术来将数据分类功能从hypervisor转移到网卡中。这提高了I/O性能以交付近线速的吞吐量和更低的CPU占用率。

除此之外,行业标准组织PCI-SIG制定了PCI-SIG Single Root I/O Virtualization (SR-IOV)规范以进一步加强虚拟化机系统的I/O性能。在PCI-SIG工作组中,Intel积极地与其他行业领导者共同合作。

SR-IOV是一种不需要软件模拟就可以共享I/O设备I/O端口的物理功能的方法。这个过程创造了一系列I/O设备物理端口的虚拟功能。每个虚拟功能都被直接分配到一个虚拟机,因此实现了接近本机的性能。

总的来说,SR-IOV实现了将PCI功能分配到多个虚拟接口以在虚拟化环境中共享一个PCI设备的资源。SR-IOV能够让网络传输绕过软件模拟层,直接分配到虚拟机。这样就降低了软加模拟层中的I/O开销。

PCI-SIG SR-IOV的优势

PCI-SIG SR-IOV提供了一个设备宣传其在多个虚拟机之间同时共享的能力的标准机制。SR-IOV规范允许一个独立硬件厂商(Independent Hardware Vendor,IHV)修改其PCI卡来定义成对于一个VMM(hypervisor)同一个类型的多个设备。SR-IOV的好处是创建了一个精简的界面来允许IHV有效地执行能够直接分配到虚拟机的界面。

SR-IOV概览

SR-IOV规范的目标是在绕过虚拟机参与数据迁移过程中实施标准化,为每个虚拟机提供独立内存空间、中断和Direct Memory Access (DMA)流。SR-IOV架构的设计允许一个I/O设备支持多个虚拟功能,同时将每个功能的硬件成本降至最低。SRIOV引入了两个新的功能类型:

•物理功能(Physical Functions,PFs):这是一些支持SR-IOV扩展功能的PCIe功能,被用于配置和管理SR-IOV功能特性
•虚拟功能(Virtual Functions,VFs):这是一些“精简”的PCIe功能,包括数据迁移必需的资源,以及经过谨慎精简的配置资源集

虚拟化直接分配的方法允许虚拟机直接连接到一个I/O设备。因此,直接设备分配特性提供了一种本地体验和非常快速的I/0(因此它重新利用现有驱动程序或者其他软件来与设备进行直接通信)。然而,这限制了I/O设备的共享。SR-IOV提供了一项功能以多个独立物理设备呈现的机制。

支持SR-IOV的设备可以配置成以多个虚拟功能形式呈现在PCI配置空间中,每个都有它们自己的PCI配置空间。然后VMM可以通过模拟配置空间来分配一个或者多个虚拟功能给虚拟机。

每个虚拟功能可以支持针对PCIe层中I/O相关功能的一个特有且单独的数据路径。在网络设备中使用SR-IOV可使一个端口(功能)的带宽分成更小的块,然后通过一个标准接口分配到特定虚拟机或者客户端中。为了进一步加强PCIe层中不同设备的可操作性,还创建了一个配置和管理的通用方法体系。这种资源的共享提高了在一个支持SR-IOV的PCIe设备上任何特定资源的总利用率,从而降低了虚拟系统的成本。

英特尔的PCI-SIG SR-IOV功能实施要求VMM软件利用Intel Virtualization Technology for Directed I/O (Intel VT-d)直接将虚拟功能分配到虚拟机中。Intel VT-d中的内存转译技术提供了硬件辅助功能,允许直接的DMA传输。Intel VT-d可确保传输的安全,SRIOV为虚拟机提供了独立的数据空间。

支持PCI-SIG SR-IOV的Intel Server Adapters兼容任何厂商的具备直接从网卡向虚拟机分配虚拟功能的平台解决方案。

总结

总的来说,PCI-SIG SR-IOV在虚拟化平台上的关键优点包括:

•提供了一个共享任何特定I/O设备容量、实现虚拟系统中资源最有效利用的标准方法
•在一个物理服务器上每个虚拟机接近本地的性能
•在同一个物理服务器上虚拟之间的数据保护
•物理服务器之间更平滑的虚拟机迁移,因此实现了I/O环境的动态配置

Intel最新的和即将推出的PCIe千兆以太网适配器将支持PCI-SIG SR-IOV功能。不同VMM厂商还将把这项支持集成到操作系统中,以发挥这项技术的优势。







SR-IOV的概念 :Single Root I/O Virtualization and Sharing Specification

        目前流行的做法是,行业中所有针对虚拟化服务器的技术都是通过软件模拟共享和虚拟化网络适配器的一个物理端口,以满足虚拟机的I/O需求。模拟软件的多个层为虚拟机作了I/O决策,因此导致环境中出现瓶颈并影响I/O性能。另外它还影响到一台物理服务器上运行的虚拟机数量以均衡系统的I/O性能。

        SR-IOV是一种不需要软件模拟就可以共享I/O设备I/O端口的物理功能的方法。这个过程创造了一系列I/O设备物理端口的虚拟功能。每个虚拟功能都被直接分配到一个虚拟机,因此实现了接近本机的性能。总的来说,SR-IOV实现了将PCI功能分配到多个虚拟接口以在虚拟化环境中共享一个PCI设备的资源。SR-IOV能够让网络传输绕过软件模拟层,直接分配到虚拟机。这样就降低了软加模拟层中的I/O开销。

        一种适合服务器虚拟化的虚拟化概念被称为 Single-Root I/O Virtualization (SR-IOV),这种虚拟化技术(通过 PCI-Special Interest Group 或 PCI-SIG 创建)在单根复杂实例(在本例中为一个带有多个 VM 的服务器,这些 VM 共享一个设备)中提供设备虚拟化。另一个变体(称为Multi-Root IOV)支持大型拓扑(比如刀片服务器,其中多个服务器能够访问一个或多个 PCIe 设备)。从某种意义上说,这种技术支持任意规模的大型设备网络,该网络可以包含服务器、终端设备和交换机(用于设备发现和包路由)。

通 过 SR-IOV,一个 PCIe 设备不仅可以导出多个 PCI 物理功能,还可以导出共享该 I/O 设备上的资源的一组虚拟功能。这个简化的服务器虚拟化架构如下图所示。在这个模型中,不需要任何透传,因为虚拟化在终端设备上发生,从而允许管理程序简单地将虚拟功能映射到 VM 上以实现本机设备性能和隔离安全。

通过SR-IOV实现透传

通过 SR-IOV 实现透传

        支持 SR-IOV 的网络设备 – 单个根 I/O 虚拟化 (SR-IOV) 是由 PCI-SIG 推出的标准。SR-IOV 与支持虚拟化技术的系统芯片组一起协同工作。这可以提供中断和 DMA 的重新映射功能,并允许将支持 SR-IOV 的设备直接分配给虚拟机。Hyper-V 使虚拟机实现对支持 SR-IOV 网络设备的支持,并允许将物理网络适配器的 SR-IOV 虚拟功能直接分配给虚拟机。这可以提高网络吞吐量,并缩短网络延迟,同时减少处理网络流量所需的主机 CPU 开销。

        实现条件:

  • 一个IOMMU(input/output memory management unit)设备系统的硬件支持
  • 一个PCI Express网络设备,其中有SR-IOV的能力
  • 驱动程序模型,同时支持PF和VFS。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值