且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《思科UCS服务器统一计算》一2.5 芯片组虚拟化支持

更新时间:2022-10-03 20:37:40

本节书摘来自异步社区《思科UCS服务器统一计算》一书中的第2章,第2.5节,作者【美】Silvano Gai,Tommi Salli, Roger Andersson,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.5 芯片组虚拟化支持

思科UCS服务器统一计算
除了Nehalem提供的虚拟化支持外,在芯片组/主板级也增强了对虚拟化的支持。这些改进对于提高Hypervisor(按照Intel公司的说法,Hypervisor指的是VMM:虚拟机监视程序)的I/O性能很重要。

2.5.1 Intel直接I/O虚拟化技术(Intel VT-d for Direct I/O)

服务器使用输入/输出内存管理单元(Input/Output Memory Management Unit,IOMMU)将具有DMA能力的I/O总线(如PCIe)连接到主内存。和传统的内存管理单元(Memory Management Unit,MMU)一样,MMU将CPU可见的虚拟地址转换成物理地址,而IOMMU负责将设备可见的虚拟地址映射到物理地址。这些单元也提供了内存保护功能,以免受到错误操作设备的影响。

I/O虚拟化的一个基本要求是能够隔离和限制设备访问由管理设备的分区所拥有的资源。

2008年,Intel公司发布了IOMMU技术规范:直接I/O虚拟化技术,缩写为VT-d。

Intel VT-d为VMM软件提供了下列功能。

I/O设备分配:可为VM灵活分配I/O设备,为I/O操作扩展VM的保护和隔离属性。
DMA重映射:为设备的直接内存访问(Direct Memory Accesses,DMA)提供独立的地址转换功能。
中断重映射:隔离和路由来自设备和外部中断控制器的中断到对应的VM。
可靠性:记录并报告系统软件DMA和可能会损坏内存或影响VM隔离的中断错误。

2.5.2 Intel连接虚拟化技术(Intel VT-c for Connectivity)

Intel连接虚拟化技术(Virtualization Technology for Connectivity,VT-c)是一组I/O虚拟化技术集,可降低CPU利用率,减少系统延迟,提高网络和I/O吞吐量。

Intel VT-c由平台级技术和创新的下一代I/O虚拟化技术集合而成:

虚拟机设备队列(Virtual Machine Device Queues,VMDq)极大地提高了服务器的流量管理,有助于为大数据流提供更好的I/O性能,同时减少了基于软件的虚拟机监视程序(VMM)的处理负担。
虚拟机直接连接(Virtual Machine Direct Connect,VMDc)通过提供到虚拟机的专用I/O,完全绕过Hypervisor中的软件虚拟交换机,提供了接近原生的性能。同时还增强了虚拟机之间的数据隔离,通过虚拟机实时迁移功能提供了更好的灵活性和移动性。
1.VMDq
在虚拟环境中,Hypervisor管理所有VM(虚拟机)的网络I/O活动。随着VM数量的持续增长,I/O负载也随之增加,Hypervisor需要更多的CPU周期来给网络接口队列中的数据包排序,然后将它们路由到目标VM,这降低了应用程序可用的CPU容量。

Intel虚拟机设备队列(Virtual Machine Device Queue,VMDq)通过在芯片组上添加硬件支持,减轻了Hypervisor的负担,同时增强了网络I/O。特别是,增加了多个网络接口队列和硬件级智能排序,如图2-45所示。


《思科UCS服务器统一计算》一2.5 芯片组虚拟化支持

当数据包抵达网络适配器时,网络控制器中的二层分类器/排序器根据MAC地址和VLAN标记对数据包进行排序,并确定每个数据包的目的地应该是哪一个VM。然后按顺序将数据包放入分配给该VM的接收队列中。Hypervisor的二层软件交换机只是将数据包路由到各自的VM,不会执行繁重的数据排序操作。

当数据包从虚拟机向适配器传输时,Hypervisor会将数据包放入各自的队列中。为了防止阻塞,确保每个队列得到公平服务,网络控制器以一种轮循方式传输队列中的数据包,从而保证VM服务质量(QoS)。

2.NetQueue
如果要充分利用VMDq,就需要修改VMM以便每台虚拟机支持一个队列。例如,VMware在它的Hypervisor中引入了一个称为NetQueue的特性。NetQueue可以利用帧、VMDq的排序功能。NetQueue和VMDq结合使用可以减轻ESX路由数据包的负担,从而减轻了CPU压力,并降低了延迟(参见图2-46)。


《思科UCS服务器统一计算》一2.5 芯片组虚拟化支持

3.VMQ
VMQ是微软的一项Hyper-V排队技术,使用了Intel以太网控制器的VMDq功能,在将数据包传递到虚拟机的过程中,将软件参与处理的过程降低到最少。

4.VMDc
虚拟机直接连接(VMDc)可给独立的VM分配直接网络I/O。这个功能提高了整体网络性能和VM之间的数据隔离,并让VM实时迁移成为可能。

VMDc符合单根I/O虚拟化(Single Root I/O Virtualization,SR-IOV)标准(参见第3章的“SR-IOV”部分)。

最新的Intel以太网服务器控制器支持SR-IOV,将物理I/O端口虚拟成多个称为虚拟功能(Virtual Functions,VF)的虚拟I/O端口。

将物理设备分为多个VF可以让VM实现与物理I/O设备相当的I/O性能。该功能可以增加每台物理主机支持的VM数量,从而增强服务器的整合能力。

2.5.3 VMDirectPath

VMDq和VMDc的结合就诞生了VMware VMDirectPath,以一种类似于“内核旁路”的方式绕过了ESX/vSphere Hypervisor,不使用Hypervisor中的软件交换机,数据直接从物理适配器传递到vNIC,反之亦然。参见第3章的“VN-Link”部分,特别是图3-20。