云计算架构技术与实践(第2版)
上QQ阅读APP看书,第一时间看更新

4.4 针对企业关键应用云化的虚拟化调优

为了满足电信和企业关键应用,计算虚拟化需要满足计算高性能低时延的要求、可靠性的要求、资源占用效率的要求。为了满足计算高性能低时延的要求,主要的关键性技术如下。

4.4.1 虚拟化调度优化

一、精细化CPU调度技术

为了保证电信和关键企业应用运行的性能,就要求同一台物理机上的多个虚拟化运行实例所获取的资源既能满足其运行的需要,同时不互相产生干扰,精细化的CPU调度技术应运而生。

精细化CPU调度技术主要指的是CPU上下限配额及优先级调度技术。

现代计算机体系结构一般至少有两个特权级(即用户态和核心态)用来分隔系统软件和应用软件。那些只能在处理器的最高特权级(内核态)执行的指令称之为特权指令,一般可读写系统关键资源的指令(即敏感指令)绝大多数都是特权指令(x86存在若干敏感指令,这些指令是非特权指令)。如果执行特权指令时处理器的状态不在内核态,通常会引发一个异常,从而交由系统软件来处理这个非法访问(陷入)。经典的虚拟化方法就是使用“特权解除”和“陷入-模拟”的方式,即将Guest OS运行在非特权级,而将VMM运行于最高特权级(完全控制系统资源)。解除了Guest OS的特权级后,Guest OS的大部分指令仍可以在硬件上直接运行,只有执行到特权指令时,才会陷入到VMM模拟执行(陷入-模拟)。“陷入-模拟”的本质是保证可能影响VMM正确运行的指令由VMM模拟执行,大部分的非敏感指令还是照常运行。

因为x86指令中有若干条指令是需要被VMM捕获的敏感指令,但是却不是特权指令(称为临界指令),因此“特权解除”并不能导致它们发生陷入模拟,从而阻碍指令的虚拟化。x86下的敏感指令大致分类如下。

(1)访问或修改机器状态或虚拟机状态的指令。

(2)访问或修改敏感寄存器或存储单元的指令,比如访问时钟寄存器和中断寄存器。

(3)访问存储保护系统或内存、地址分配系统的指令(段页之类)。

(4)所有I/O指令。

其中的(1)和(4)都是特权指令,在内核态下执行时会自动产生陷阱被VMM捕获,但是(2)和(3)不是特权指令,而是临界指令。部分临界指令会因为Guest OS的权限解除执行失败,但是却不会抛出异常,所以不能被捕获,如(3)中的VERW指令。

基于x86计算架构的指令处理原理,CPU的精细化调度技术采用了vCPU调度分配机制来实现精细化管控,通常也称之为CPU QoS功能(见图2-6)。

从虚拟机系统的结构与功能划分可以看出,客户操作系统与虚拟机监视器共同构成了虚拟机系统的两级调度框架,图4-5是一个多核环境下虚拟机系统的两级调度框架。客户操作系统负责第2级调度,即线程或进程在vCPU上的调度(将核心线程映射到相应的虚拟CPU上)。虚拟机监视器负责第1级调度,即vCPU在物理处理单元上的调度。两级调度的调度策略和机制不存在依赖关系。vCPU调度器负责物理处理器资源在各个虚拟机之间的分配与调度,本质上把各个虚拟机中的vCPU按照一定的策略和机制调度在物理处理单元上,可以采用任意的策略来分配物理资源,满足虚拟机的不同需求。vCPU可以调度在一个或多个物理处理单元执行(分时复用或空间复用物理处理单元),也可以与物理处理单元建立一对一固定的映射关系(限制访问指定的物理处理单元)。

图4-5 vCPU调度分配机制

所以,CPU QoS功能实现的最终形态包括以下几种。

资源上限限制:适用资源严格隔离场景。

资源下限预留:适用资源衡量场景,结合上限设置实现资源可销售。

资源份额分配:适用资源复用场景。

上限限制:保证虚拟机隔离资源竞争,保证用户体验。

下限预留:最低资源保障,保证服务质量。

份额分配:针对用户划分不同等级,实现资源竞争。

CPU QoS的价值在于为应用提供计算服务质量的保障,确保针对资源的分配是确定的、可衡量的。

二、NUMA架构感知的调度技术

随着x86架构体系的发展,大部分用于提供计算资源的物理器件,也就是x86服务器,都按照SMP的系统架构来进行处理能力的增强。这就引入了NUMA的问题。

通过虚拟化软件的Host NUMA技术,可以显著提高虚拟机的性能,降低处理时延,以下针对NUMA和虚拟化软件的Host NUMA技术进行详细描述。

NUMA是非一致性内存架构(Non-uniform Memory Architecture),解决了SMP系统中的可扩展性问题。NUMA将几个CPU通过内存总线与一块内存相连构成一个组,整个系统就被分为若干个Node(见图4-6)。

图4-6 CPU Node

一个Node服务器内包含若干CPU和一块内存,CPU访问其所在Node的本地内存的速度最快,访问其他Node的内存性能较差。

操作系统根据SRAT和SLIT表识别NUMA拓扑(见图4-7)。

图4-7 Host NUMA原理图

虚拟化软件实现的Host NUMA主要提供CPU负载均衡机制,解决CPU资源分配不平衡引起的VM性能瓶颈问题,当启动VM时,Host NUMA根据当时主机内存和CPU负载,选择一个负载较轻的node放置该VM,使VM的CPU和内存资源分配在同一个node上。如图4-7左边所示,Host NUMA把VM的物理内存放置在一个node上,对VM的vCPU调度范围限制在同一个node的物理CPU上,并将VM的vCPU亲和性绑定在该node的物理CPU上。考虑到VM的CPU负载是动态变化,在初始放置的node上,node的CPU资源负载也会随之变化,这会导致某个node的CPU资源不足,而另一个node的CPU资源充足,在此情况下,Host NUMA会从CPU资源不足的node上选择VM,把VM的CPU资源分配在CPU资源充足的node上,从而动态实现node间的CPU负载均衡。

对于VM的vCPU个数超过node中CPU的核数的VM,如图4-7右边所示,Host NUMA把该VM的内存均匀地放置在每个node上,vCPU的调度范围为所有node的CPU。用户绑定了VM的vCPU亲和性,Host NUMA特性根据用户的vCPU亲和性设置决定VM的放置,若绑定在一个node的CPU上,Host NUMA把VM的内存和CPU放置在一个node上,若绑定在多个node的CPU上,Host NUMA把VM的内存均匀分布在多个node上,VM的vCPU在多个node的CPU上均衡调度。

虚拟化软件提供复杂的NUMA调度程序来动态平衡处理器负载,根据当时主机内存和CPU负载优先把VM的CPU和内存资源分配在同一个node上,并随着资源负载的动态变化对主机node间的CPU资源做负载均衡。

此特性为虚拟化软件基本特性,不需要管理员明确处理节点之间的虚拟机平衡,在各种场景都可使用。

Host NUMA保证VM访问本地物理内存,减少了内存访问延迟,可以提升VM性能,性能提升的幅度与VM虚拟机访问内存大小和频率相关。

三、内存复用技术

前文介绍了计算虚拟化技术中CPU分配的技术,本节针对提高资源利用率的内存管理和复用技术进行说明(见图4-8)。

图4-8 内存虚拟化三层模型

计算虚拟化软件中,VMM(Virtual Machine Monitor)掌控所有系统资源,因此VMM握有整个内存资源,其负责页式内存管理,维护虚拟地址到机器地址的映射关系。因Guest OS本身亦有页式内存管理机制,则有VMM的整个系统就比正常系统多了一层映射。

映射关系如下:Guest OS:PA = f(VA)、VMM:MA = g(PA)。

VMM维护一套页表,负责PA到MA的映射。Guest OS维护一套页表,负责VA到PA的映射。实际运行时,用户程序访问VA1,经Guest OS的页表转换得到PA1,再由VMM介入,使用VMM的页表将PA1转换为MA1。

四、页表虚拟化技术原理

普通MMU只能完成一次虚拟地址到物理地址的映射,在虚拟机环境下,经过MMU转换所得到的“物理地址”并不是真正的机器地址。若需得到真正的机器地址,必须由VMM介入,再经过一次映射才能得到总线上使用的机器地址。如果虚拟机的每个内存访问都需要VMM介入,则由软件模拟地址转换的效率是很低下的,几乎不具有实际可用性,为实现虚拟地址到机器地址的高效转换,现普遍采用的思想是:由VMM根据映射f和g生成复合的映射fg,并直接将这个映射关系写入MMU。当前采用的页表虚拟化方法主要是MMU类虚拟化(MMU Paravirtualization)和影子页表,后者已被内存的芯片辅助虚拟化技术所替代。

MMU Paravirtualization的基本原理是当Guest OS创建一个新的页表时,会从它所维护的空闲内存中分配一个页面,并向Xen注册该页面,Xen会剥夺Guest OS对该页表的写权限,之后Guest OS对该页表的写操作会陷入到Xen加以验证和转换。Xen会检查页表中的每一项,确保他们只映射了属于该虚拟机的机器页面,而且不得包含对页表页面的可写映射。然后Xen会根据自己所维护的映射关系,将页表项中的物理地址替换为相应的机器地址,最后再把修改过的页表载入MMU。如此,MMU就可以根据修改过的页表直接完成虚拟地址到机器地址的转换。

五、内存芯片辅助虚拟化

内存的芯片辅助虚拟化技术是用于替代虚拟化技术中软件实现的“影子页表”的一种芯片辅助虚拟化技术。其基本原理是:GVA(客户操作系统的虚拟地址)转换到GPA(客户操作系统的物理地址),然后再转换到HPA(宿主操作系统的物理地址)。两次地址转换都由CPU硬件自动完成(软件实现内存开销大、性能差)。我们以VT-x技术的页表扩充技术Extended Page Table(EPT)为例。首先,VMM预先把客户机物理地址转换到机器地址的EPT页表设置到CPU中;其次,客户机修改客户机页表无须VMM干预;最后,地址转换时,CPU自动查找两张页表完成客户机虚拟地址到机器地址的转换。使用内存的芯片辅助虚拟化技术,客户机运行过程中无须VMM干预,去除了大量软件开销,内存访问性能接近物理机。

虚拟化软件平台提供多种内存复用技术和灵活自动的内存复用策略。对于某些物理内存资源比较紧张的场景,如果用户希望运行超过物理内存能力的虚拟机,以达到节省成本的目的,就需要有内存复用策略来动态地对内存资源进行分配和复用。内存复用策略通过内存复用技术,提升物理内存利用率的同时,尽可能减少对虚拟机性能的影响。客户无须关心何时调用和怎么调用几种复用技术,只需简单配置和开启复用策略后就能达到提升虚拟机密度的目的。

虚拟化软件的内存复用技术有以下三种:内存气泡、内存零页共享和内存交换技术。

1.内存气泡技术(Ballooning)

内存气泡技术是一种VMM通过“诱导”客户机操作系统来回收或分配客户机所拥有的宿主机物理内存的技术。当客户机物理内存足够时,客户机操作系统从其闲置客户机物理机内存链表中返回客户机物理内存给气球;当客户机物理内存资源稀缺时,客户机操作系统必须回收一部分客户机物理内存,以满足气球申请客户机物理内存的需要。通过Balloon Driver模块,从源虚拟机申请可用内存页面,通过Grant Table授权给目标虚拟机,并更新虚拟机物理地址和机器地址映射关系表。

通过使用Ballooning技术,可以提升内存使用效率。

2.零页共享技术

内存零页共享技术作为内存复用技术的一种,能有效地识别和释放虚拟机内未分配使用的零页,以达到提高内存复用率的目的。客户开启零页共享技术后,能实时从虚拟机内部把零页进行共享,从而把其占用的内存资源释放出来给其他虚拟机使用,以创建更多的虚拟机,实现提高虚拟机密度的目的。与内存气泡技术不同,零页共享后的内存页对于虚拟机来说还是可用的,虚拟机可以随时根据需要收回这部分内存,用户体验相对来说更加友好。

用户进程定时扫描虚拟机的内存数据,如果发现其数据内容全为零,则通过修改P2M映射的形式把其指向一个特定的零页。从而做到在物理内存中仅保留一份零页拷贝,虚拟机的所有零页均指向该页,从而达到节省内存资源的目的。当零页数据发生变动时,由Xen动态地分配一页内存出来给虚拟机,使修改后的数据有内存页进行存放,因此对于GuestOS来说,整个零页共享过程是完全不感知的。

3.内存交换技术

内存交换技术作为内存复用技术的一种,能通过Xen把虚拟机内存数据换出到存储介质上的交换文件中,从而释放内存资源,以达到提高内存复用率的目的。由于内存气泡和零页共享的数量与虚拟机本身的内存使用情况强相关,因此其效果不是很稳定,用户使用内存交换技术,可以弥补上述不足,即可以保证释放出一定量的内存空间出来(理论上所有虚拟机内存都能交换出来),但同时也会带来一定程度的虚拟机性能下降。

内存交换触发时,根据用户需要告知Xen需要向某个虚拟机交换出一定量的内存页出来,Xen按一定的选页策略从虚拟机中选择相应数量的页后,把页数据保存到存储介质上的交换文件中,同时释放原先存放数据的那些页供其他虚拟机使用。当虚拟机读写的页正好是被换出的页时,在缺页处理时Xen会重新为其分配一页内存,然后从存储介质上的交换文件中把相应的页交换回新分配的内存页中,同时再选择另外一页内存交换出去,从而保证虚拟机对页的正常读写的同时,稳定交换页的数量。这个过程与零页共享一样,对GuestOS都是不可感知的。

六、I/O调度中断优化技术

影响电信和企业关键应用的运行时响应时延的因素很多,其中,中断处理就是一个在虚拟化条件下的关键因素。

CPU在处理I/O访问请求出现中断时,其实际处于等待的状态,在虚拟化的条件下,因为单个物理机上运行的虚拟机实例比较多,因此所产生的I/O中断请求也会变多,这样实际上造成了物理CPU的等待,从而影响了应用运行的响应时延和性能。

VMM通过I/O虚拟化来复用有限的外设资源,其通过截获Guest OS对I/O设备的访问请求,然后通过软件模拟真实的硬件来响应这些截获的请求。目前I/O设备的虚拟化方式主要有三种:设备接口完全模拟、前端/后端模拟、直接划分。

七、设备接口完全模拟

设备接口完全模拟即软件精确模拟与物理设备完全一样的接口,Guest OS驱动无须修改就能驱动这个虚拟设备。优点是没有额外的硬件开销,可重用现有驱动程序,缺点是为完成一次操作要涉及多个寄存器的操作,使得VMM要截获每个寄存器访问并进行相应的模拟,导致多次上下文切换,性能较低。

八、前端/后端模拟

VMM提供一个简化的驱动程序(后端,Back-End), Guest OS中的驱动程序为前端驱动(Front-End, FE),前端驱动将来自其他模块的请求通过与Guest OS间的特殊通信机制直接发送给Guest OS的后端驱动,后端驱动在处理完请求后再发回通知给前端驱动(Xen即采用该方法)。优点是基于事务的通信机制能在很大程度上减少上下文切换开销,没有额外的硬件开销,缺点是需要VMM实现前端驱动,后端驱动可能成为瓶颈。

九、直接划分

直接划分即直接将物理设备分配给某个Guest OS,由Guest OS直接访问I/O设备(不经VMM),目前与此相关的技术有AMD IOMMU、Intel VT-d、PCI-SIG之SR-IOV等,旨在建立高效的I/O虚拟化直通道。优点是直接访问减少了虚拟化开销,缺点是需要购买额外的硬件。

十、网络直通VMDq技术

在虚拟化的条件下,网络访问报文需要从软件层的虚拟网卡经过物理网卡才能发出。软件模拟虚拟网卡会造成网络访问时延的增加和抖动。为了解决这个问题,先后发展出VMDq的技术和SR-IOV的技术。

在虚拟环境中,Hypervisor管理网络I/O活动,随着平台中的虚拟机和传输量增加,Hypervisor需要更多的CPU周期来进行数据包分类操作,并需要将数据包路由对应到相应的虚拟机中,这些操作会因对CPU的占用,而影响上层应用软件对CPU的使用。Hypervisor利用VMDq(Virtual Machine Device Queues虚拟机设备队列)技术,针对虚拟机网络性能有极高要求的场景,在支持VMDq的网卡上,用硬件实现Layer 2分类/排序器,根据MAC地址和VLAN信息将数据包发送到指定的网卡队列中。这样虚拟机收发包时就不需要Dom0的参与。这种模式极大地提升了虚拟化网络效率。

Intel VMDq(Virtual Machine Device Queue虚拟机设备队列)技术,是专门用于提升网卡的虚拟化I/O性能的硬件辅助I/O虚拟化技术,主要解决I/O设备上频繁地VMM切换以及对中断的处理问题,其可以减轻Hypervisor的负担,同时提高虚拟化平台网络I/O性能。

VMDq技术可以将网络I/O管理负担从Hypervisor上卸载掉,多个队列和芯片中的分类智能性支持虚拟环境中增强的网络传输流,从应用任务中释放处理器周期,提高向虚拟机的数据处理效率及整体系统性能。VMDq为虚拟机提供接近物理机的网络通信性能,兼容部分虚拟化高级特性,比如在线迁移、虚拟机快照等。

十一、网络直通SR-IOV技术

与VMDq类似,SR-IOV也是采用类直通的方式来避免软件层对于网络转发的时延、抖动的影响,从而满足电信与企业关键应用对于高性能低时延的要求。

服务器虚拟化技术是通过软件模拟多个网络适配器的方式来共享一个物理网络适配器端口,来满足虚拟机的I/O需求。虚拟化软件在多个层面控制和影响虚拟机的I/O操作,因此导致环境中出现瓶颈并影响I/O性能。SR-IOV是一种不需要软件模拟就可以共享I/O设备I/O端口的物理功能的方法,主要利用iNIC实现网桥卸载虚拟网卡,允许将物理网络适配器的SR-IOV虚拟功能直接分配给虚拟机,可以提高网络吞吐量,并缩短网络延迟,同时减少处理网络流量所需的主机CPU开销。

SR-IOV(Single Root I/O Virtualization)是PCI-SIG推出的一项标准,是虚拟通道(在物理网卡上对上层软件系统虚拟出多个物理通道,每个通道具备独立的I/O功能)的一个技术实现,用于将一个PCIe设备虚拟成多个PCIe设备,每个虚拟PCIe设备如同物理PCIe设备一样向上层软件提供服务。通过SR-IOV,一个PCIe设备不仅可以导出多个PCI物理功能,还可以导出共享该I/O设备上的资源的一组虚拟功能,每个虚拟功能都可以被直接分配到一个虚拟机,能够让网络传输绕过软件模拟层,直接分配到虚拟机,实现将PCI功能分配到多个虚拟接口以在虚拟化环境中共享一个PCI设备的目的,并且降低了软件模拟层中的I/O开销,因此实现了接近本机的性能。在这个模型中,不需要任何传输,因为虚拟化在终端设备上发生,允许管理程序简单地将虚拟功能映射到VM上以实现本机设备性能和隔离安全。SR-IOV虚拟出的通道分为两个类型。

PF(Physical Function)是完整的PCIe设备,包含了全面的管理、配置功能,Hypervisor通过PF来管理和配置网卡的所有I/O资源。

VF(Virtual Funciton)是一个简化的PCIe设备,仅仅包含了I/O功能,通过PF衍生而来,就如物理网卡硬件资源的一个切片。对于Hypervisor来说,这个VF同一块普通的PCIe网卡一模一样,可满足高网络I/O应用要求,无须特别安装驱动,且可以实现无损热迁移、内存复用、虚拟机网络管控等虚拟化特性。

十二、GPU直通调度

在虚拟化的环境中,会有需要在桌面环境下进行图形渲染,显示增强等类型的用户应用,要求虚拟机能够使用GPU进行图形处理运算,并且一个GPU能够为一个或多个虚拟机提供vGPU资源。

GPU虚拟化功能通过GPU硬件虚拟化功能,使得一个物理GPU设备可虚拟为多个虚拟GPU设备供虚拟机使用,每个虚拟机通过绑定的vGPU可以直接访问物理GPU的部分硬件资源(所有vGPU都能够分时共享访问物理GPU的3D图形引擎和视频编解码引擎,并拥有独立的显存)。物理GPU通过DMA的方式能够直接获取图形应用下发给vGPU Driver的3D指令,渲染后将结果放到在各自vGPU的显存内,虚拟机中的vGPU驱动可以直接从物理显存中抓取渲染数据。因此上层应用可以直接获取物理GPU的硬件能力,对上层应用来说就像直接使用物理GPU一样,因而具有强大的图形性能和良好的程序兼容性。

4.4.2 跨服务器的计算资源调度

当物理服务器宕机或者重启时,系统可以将具有HA属性的故障虚拟机迁移到其他物理服务器,保证虚拟机快速恢复。

一、高性能、低时延的虚拟机热迁移机制

虚拟机是弹性计算服务的资源实体,为保证虚拟资源池中对于虚拟机资源的灵活分配,需提供在资源池内的虚拟机热迁移能力,即虚拟机在不中断业务的情况下实现在不同物理机上的迁移。虚拟机迁移时,管理系统会在迁移的目的端创建该虚拟机的完整镜像,并在源端和目的端进行同步。同步的内容包括内存、寄存器状态、堆栈状态、虚拟CPU状态、存储以及所有虚拟硬件的动态信息。在迁移过程中,为保证内存的同步,虚拟机管理器(Hypervisor)提供了内存数据的快速复制技术,从而保证在不中断业务的情况下将虚拟机迁移到目标主机。同时,通过共享存储保证了虚拟机迁移前后持久化数据不变。

虚拟机热迁移的作用,具体如下。

降低客户的业务运行成本:根据时间段的不同,客户的服务器会在一定时间内处于相对空闲的状态,此时若将多台物理机上的业务迁移到少量或者一台物理机上运行,而将没有运行业务的物理机关闭,就可以降低客户的业务运行成本,同时达到了节能减排的作用。

保证客户系统的高可靠性:如果某台物理机运行状态出现异常,在进一步恶化之前将该物理机上运行的业务迁移到正常运行的物理机上,就可以为客户提供高可用性的系统。

硬件在线升级:当客户需要对物理机硬件进行升级时,可先将该物理机上的所有虚拟机迁移出去,之后对物理机进行升级,升级完成再将所有虚拟机迁移回来,从而实现在不中断业务运行的情况下对硬件进行升级,保证服务的持续可用性。

一个虚拟化系统,至少需要在下列场景下支持虚拟机热迁移功能:

根据需要按照迁移目的手动把虚拟机迁移到空闲的物理服务器;

根据资源利用情况将虚拟机批量迁移到空闲的物理服务器。

虚拟机应用于电信和企业关键应用领域,且虚拟网元在硬件平台间无缝迁移时,面临切换时延带来虚拟机内部业务中断的问题,通信领域虚拟机迁移切换时间确保在1s以内,同时电信和企业关键应用业务压力较大,对热迁移构成挑战。一般可以采用如下技术提升热迁移的效果。

混合拷贝热迁移,具体如下。

Pre-copy和Post-copy按需自适应切换,避免重载业务无限制迭代拷贝。

前台和后台数据传输带宽管控,充分利用带宽完成后台传输。

识别热点内存,减少缺页概率。

RDMA/RoCE热迁移加速,具体方法如下。

通过RDMA硬件能力加速,提升迁移效率。

vMotion与RDMA相结合的方式进行加速。

采用RoCE网卡直通技术。

在Host中集成RoCE协议栈,改造热迁移等服务采用的协议栈。

二、计算资源池的动态资源调度管理和动态能耗管理

在云化资源池的环境下,虚拟机的负载是动态变化的,因此计算资源池的管理系统需要实现对于虚拟机部署位置的自动化调整,以保障虚拟机能够获得所需要的资源,同时也保障资源池内的负载是均衡的,从而保障资源池资源的高效利用。

实现该技术的方式,通常称为动态资源调度管理,简称为DRS(Dynamic Resource Schedule)。

DRS周期性监控集群下物理主机和虚拟机负载(CPU和内存),如果主机负载的不均衡度(标准方差)超过集群配置的阈值,则触发虚拟机迁移,使得集群范围内的负载区域平衡。作为DRS的扩展功能,DPM(Distributed Power Management分布式电源管理)支持在集群负载低(CPU和内存负载小于集群配置的阈值)时,主动对某些主机进行下电,达到节能减排的目的,同时在集群负载高(负载大于集群配置的阈值)时,重新启动一些主机,满足业务需要。

以下是DRS的几种基本的应用场景。

场景1:集群内主机间的负载不均衡,调度后将部分虚拟机从负载高的主机迁移至负载低的主机,达到负载均衡。

场景2:集群内主机间的负载不均衡,负载也较低,调度后负载达到平衡,同时对经过评估可以下电的主机(物理主机3)进行下电。

场景3:集群内主机的负载均很高,调度后将处于已下电状态的主机(物理主机3)上电,并将部分虚拟机迁移至负载低的主机上,达到负载均衡。

实现DRS和DPM的调度算法很多,通常衡量一个资源池内部的负载不平衡的程度,可以采用每个计算服务器节点的负载与资源池平均负载差异值的标准方差来衡量。差值越大,表示该节点与资源池平均负载的差异越大,越需要调整其负载,以保证尽快地将集群的负载进行均衡。

进行资源平衡调整的方法,业界有很多的实现方式,针对不同的负载波动水平,不同的业务可靠性要求,都会在集群负载收集的时间和门限、计算节点负载调整的门限和时间间隔等处理上进行不同的调整。比较优良的算法,还会保证对集群内的负载根据历史的运行状况进行负载预测,以避免负载调整的震荡。

通常情况下,动态资源调整主要考虑CPU和内存的负载变化情况,但网络和存储的负载在面对电信和企业关键应用中也是重要的且必须考虑的因素,针对CPU/内存/网络/存储等多维资源的负载预测可以采用以上类同算法。

真正进行负载调整时,触发进行业务部署调整的原则为:负载方差大于阈值,或物理机利用率超过阈值。

需要进行部署位置调整的源VM选择原则为:选择离均值最远的物理主机之上的“最有效”VM(即迁移后使该物理主机的负载最靠近均值)。

目标物理主机选择的原则:选择接受源VM后使方差下降最多的物理主机。

通过重复步骤计算,直到方差低于阈值或者达到VM迁移次数限制。

需要说明的是,动态能耗管理对于虚拟机和物理机的负载计算方法,实际上跟动态资源调度管理的方法是一致的,主要的区别在于动态能耗管理是需要尽量地合并物理主机上的虚拟机业务,以尽量少的物理机占用达成节省能源消耗的目的。

三、亲和性和反亲和性调度

在一些企业应用中,为了达到虚拟机间的资源优化目的,需要将一部分虚拟机放置在一台主机上。该操作可以通过应用亲和性组规则来实现:在虚拟机创建/启动/HA调度时,会为其选择同一亲和组的其他虚拟机所在的主机,达到亲和性调度目的。

在有些场景下,需要将某一类虚拟机分开放置在不同的主机上,以提供更好的资源优化和服务器故障时的冗余,可以应用反亲和性调度规则:在发放虚拟机时进行调度控制,可以将同一个反亲和性组的虚拟机放置在不同Hypervisor上,包括虚拟机启动、HA、迁移等生命周期管理,都将遵从反亲和性调度。