一种对操作系统透明的机群负载平衡方法

文档序号:6471883阅读:107来源:国知局
专利名称:一种对操作系统透明的机群负载平衡方法
技术领域
本发明主要涉及一种对操作系统透明的机群负载平衡方法,具体是指计算 机硬件虚拟化技术和单一系统映像技术,通过虚拟化技术将计算任务合理分配 到不同的处理器,从而提高机群系统的资源利用率。属于计算机领域。
(二)
背景技术
1.当前机群系统的负载平衡技术
机群系统就是将一组相互独立的计算机通过高速通信网络互连而组成的一 个单一的计算机系统。它的优点在于其系统资源可用性、规模可扩展性以及可 并行性,因此在并行处理领域中得到了广泛应用。
机群系统作为一种可扩展性能良好的服务器结构,具有良好的性价比,然 而由于机群低耦合的特点,使得节点间的负载经常不平衡,致使个别节点负载 很重,而其他节点却空闲着,从而造成资源的浪费。如何提高资源利用率一直 是一个热门话题,而能够自动实现负载平衡则是资源利用率问题的一个解决方 案。
通常, 一个机群系统要同时处理多个用户作业,而每个结点需要同时处理 多个进程,就要通过对作业和任务的调度、分配算法来实现对作业或任务的优 化分配,有效地减小平均响应时间,减少执行时的额外开销等。于是,负载平 衡就成为改善机群系统性能的重要手段。目前,机群系统中采用的负载平衡策 略多是在作业、进程和线程中的任一级实现,其原因是为了减少在实现负载平
衡的过程中引入大量的通信开销。例如,IBM的LoadLeveler,它只提供作业级 的负载平衡,但一个并行作业提交以后就完全由PVM或MPI接口来负责执行任 务,系统本身并不管理这些任务的分配。而在实际应用中,当一个大型的并行 作业提交以后,会产生多个子任务,它们的分配和执行完全可能破坏己有的负 载平衡。由此可见,只有作业级的管理并不满足整个机群系统的负载平衡要求。另外,也有采用作业级和进程级相结合的多级负载平衡方法,这种方法在作业 分配到后台的执行节点之后,在任务调度时再引入进程级的负载平衡策略,实 现起来比较复杂,当后台执行节点增多的时候,节点之间进程的通信和频繁迁 移会消耗大量的网络资源,成为制约机群系统的瓶颈。在实现单一系统映像的 机群系统中,这种作业级或进程级的负载平衡方法对操作系统和上层的应用程 序并不是透明的,有时甚至需要用户显式地干预,这不利于机群系统的使用和 管理。
目前,机群系统负载平衡技术的实现可以在系统软件层、中间件层和应用
层。目前,在系统软件层的实现方案较少,有M0SIX等,在该层实现负载平衡, 对用户透明性较好,但实现难度较大,有的实现方案还会带来其他方面的问题, 如M0SIX通过动态迁移进程的机制在一定程度上提高了系统的资源利用率,但 是进程迁移后的控制结构仍存留在宿主结点,I/O操作仍在宿主结点完成,带 来了大量的网络通信,降低了系统性能。在中间件层实现负载平衡策略的方案 已有很多,实现方法各不相同,其都是从不同的方面支持分布式应用负载平衡 的需求,所采用的方法依赖于具体的应用环境,通用性较差。例如,需要平衡 工作负载的无状态的分布式应用往往采用和名字服务集成在一起的负载平衡服 务机制,这种负载平衡机制只支持静态非自适应的负载平衡,不能满足复杂负 载平衡应用的需要。另外,随着分布式应用的拓扑结构日益复杂,应用规模日 益增大,现有中间件层的负载平衡功能已不能完全满足复杂分布式应用的可扩 展需求,在可扩展性方面,中间件层的负载平衡机制不具有优势。在应用层, 最典型的有通过Linux虚拟服务器(Linux Virtual Servers, LVS)作为机群 系统负载平衡的解决方案,在该层实现负载平衡与具体应用结合过于紧密,因 此,类似的解决方案不具有通用性。 2.分布式虚拟机监控器
虚拟化在计算机方面通常是指计算和处理在虚拟的基础上而不是真实的基 础上运行。计算机虚拟化技术是指对计算机系统的物理资源进行抽象的技术。 计算机虚拟化技术可在计算机硬件和操作系统之间构建一个虚拟平台,实现在 同一个硬件平台上构建相互隔离的多个运行域,每一个运行域中都可以分别运
9行自己的操作系统和应用软件。.
分布式虚拟机监控器(以下简称DV匿)是针对机群系统所提出的虚拟化解 决方案,主要目的是解决机群系统的整体效能及资源利用率问题。其主要技术
手段是基于硬件虚拟化技术,在机群硬件之上构建一层系统软件DVMM,将分散 的物理计算资源进行整合抽象。整个DV丽由分布于各节点之上的V應组成, 各VMM完全对称;在DVMM之上运行操作系统(以下简称OS),通过DV画感知 机群的物理资源并分类整合生成全局物理资源信息,虚拟化全局物理资源,构 建全局虚拟资源信息并呈现给上层OS; OS基于所感知的虚拟资源集,调度、执 行进程,管理、分配资源,对底层的DV醒透明;DVMM截获并代理0S执行访 问资源的操作,实现虚拟资源到物理资源的映射,操纵物理资源。这样,保证 了 0S既能够感知到机群所拥有的资源,又能够管理和使用所感知的资源,从 而隐藏了硬件的分布式特性,实现了机群系统的单一系统映像。

发明内容
本发明的目的在于提供一种对操作系统透明的机群负载平衡方法。它利用 虚拟化技术,通过VMM中的虚拟处理器在物理服务器上的迁移,从而实现机群 系统节点之间负载的平衡,在操作系统及其之上的应用程序毫无觉察的情况下, 使得计算资源得到合理的分配和利用,提高了资源的利用率。
本发明的一种对操作系统透明的机群负载平衡方法,其总体设计方案为 包括以下几个关键点
1. 在平衡负载之前驱动虚拟处理器迁移;
2. 平衡迁移驱动;
3. 向目标节点发送迁移请求并协商;
4. 虚拟处理器状态的保存和恢复。
5. 通信
本发明所述的方法的主要功能是在V醒中实现的,见附图1。其中主要包

负载平衡模块该模块负责计算节点负载,与其他节点交换负载信息,选择被迁移的虚拟处理器和目标节点等工作。
处理器迁移模块该模块负责读取被迁移虚拟处理器的执行环境,并将其 进行封装后传送到目标节点,然后再恢复其运行状态。
通信模块在整个系统中,通信模块起着非常重要的作用。分布在各个节 点上的VMM系统是通过通信机制将其组合起来,从而对上呈现单一系统映像。
虚拟处理器执行环境的迁移和通信模块紧密相连,其状态能否被准确无误并且 高效的传送到目标节点由通信模块来保证。
本发明所述的方法的具体方案为 步骤一、驱动虚拟处理器迁移
该机制中有三种算法可以决定被迁移的虚拟处理器以及目标节点。它们分 别是负载均衡自适应算法,缺页引导算法和1/0操作引导算法。
1 )、负载均衡自适应算法的主要思想是通过计算各节点内的虚拟处理器负 载信息,统计所有节点的负载情况,然后决定哪些虚拟处理器将被迁移以及迁
移的目标节点。该算法主要有三个部分组成负载计算算法,用来计算每个节 点上各个虚拟处理器当前的负载情况,其负载包括处理器在一段时间内的忙闲 状况,执行操作的类型等;负载信息交换算法,用来与其他节点交换负载信息, 生成并维护各节点的负载向量表;迁移选择算法根据负载向量表决定需要将
哪些虚拟处理器向哪些节点迁移。
该负载均衡自适应算法的具体歩骤如下
步骤l:利用DVMM中虚拟处理器的调度器,计算每个节点上各个虚拟处理
器当前执行的任务负载,包括执行的任务类型,执行用户程序的时间,处理 器空闲时间,处理器处理中断的时间等。最后生成本节点的负载向量,如(节 点号,全局VCPU号,执行用户程序时间,空闲时间,处理中断时间);
步骤2:向其他节点广播本节点的负载向量,同时接收其他节点发送的负 载向量; '
步骤3:统计各个节点的负载向量,生成全局负载向量表; 步骤4:根据全局负载向量表,选中当前负载最重的处理器作为待迁移的 处理器,选中当前负载最轻的节点作为目标迁移节点;步骤5:
if (待迁移处理器不属于本节点且本节点是迁移目标节点) 等待其他节点的迁移请求;
else if (若待迁移处理器在本节点且本节点不是目标节点)
调用平衡迁移驱动算法确定最终的迁移处理器和目标节
点;
Sls6
gOtO步骤1; 2)、缺页引导算法
在硬件虚拟化的环境下,为了对上层操作系统实现单一系统映像,需要实
现分布式共享存储(Distributed. Shared Memory, DSM)子系统。DSM对下屏 蔽了实际的内存分布,对上提供统的存储空间,虚拟处理器通过访问DSM达 到访问真实内存的目的。这一算法通过统计每个节点内各虚拟处理器在调用 DSM时产生缺页(真实内存页面不在本地)的次数,从而决定被迁移的处理器。 该算法也包含三个部分缺页计算算法,计算节点内各虚拟处理器在一段时间 内产生缺页的次数;缺页信息交换算法,该算法和其他节点交换缺页次数信息, 同时生成各节点的缺页向量表;迁移选择算法,根据缺页向量表选择被迁移的 处理器以及目标节点。
该缺页引导算法的具体步骤如下
歩骤l:当处理器执行环境陷入到DV羅时,各节点利用DSM模块计算单位 时间内本节点处理器产生缺页的次数和原因,包括指令缺页次数和数据缺页 次数,生成缺页向量,如(节点号,全局VCPU号,指令缺页次数,数据缺页 次数);
步骤2:向其他节点广播本节点的缺页向量,同时接收其他节点发送的缺 页向量;
步骤3:统计各个节点的缺页向量,生成全局缺页向量表;
步骤4:根掮全局缺页向量表,选中缺页次数最多的处理器作为待迁移的处理器,选中缺页次数最少的处理器所在的节点作为目标迁移节点;步骤5: if (待迁移处理器不属于本节点且本节点是迁移目标节点)
等待其他节点的迁移请求; else if (若待迁移处理器在本节点且本节点不是目标节点)
调用平衡迁移驱动算法确定最终的迁移处理器和目标节
点;
6ls6
gOtO步骤1; 3)、 1/0操作引导算法
在部署了 DVMM的机群环境中,操作系统具有统一的I/O空间,而真实的 I/O设备可能分布在不同的节点上。该算法记录了所有虚拟处理器在执行过程 中访问的真实设备所在的节点以及访问次数,并且该记录随着1/0访问的变化 而更新。该算法包含三个部分I/O操作计算算法,计算节点内各虚拟处理器 一段时间内访问各个I/0设备的次数,生成本节点的1/0操作向量表,例如, (访问的设备号,设备所在节点号,访问次数);1/0信息交换算法,和其他节 点交换I/0操作向量表,同时生成全局I/0操作向量表,例如,(设备号,设备 所在节点号,访问该设备的VCPU号,该VCPU所在节点号,访问次数),该表每 个节点保留一份;迁移选择算法,根据全局1/0操作向量表选择被迁移的处理 器和目标节点。
该1/0操作引导算法的具体步骤如下
歩骤1:当处理器执行环境陷入到DV醒时,各节点利用DSM模块计算单位
时间内本节点处理器产生I/0操作的情况,包括访问的设备号,设备所在节 点号和访问次数,生成I/0操作向量,如(节点号,全局VCPU号,访问的设 备号,设备所在节点号,访问次数);
步骤2:向其他节点广播本节点的I/O操作向量,同时接收其他节点发送 的1/0操作向量;
步骤3:统计各个节点的I/0操作向量,生成全局I/0操作向量表;
步骤4:根据全局I/O操作向量表,选中I/O操作次数最多的处理器作为
13待迁移的处理器; 步骤5:
if (待迁移处理器不属于本节点)
if (待迁移处理器访问的I/0设备在本节点) 等待其他节点的迁移请求;
else if
goto步骤1;
else if (待迁移处理器访问的1/0设备不在本节点) 选择该设备所在节点作为迁移目标节点; 调用平衡迁移驱动算法确定最终的迁移处理器和目标节
点;
61S6
goto步骤1。 整个驱动处理器迁移的过程如下'
步骤l:操作系统启动后,在源节点中,DVffll中的负载平衡模块利用迁移 驱动算法自动检测当前的系统负载状况,并与其他节点交换信息;
步骤2:当发现需要进行负载平衡干预时,选中待迁移的处理器并确定迁 移的目标节点,此时还需判定待迁移处理器和目标节点是否有冲突;
步骤3:若有冲突,则需要运用平衡迁移驱动算法来解决冲突(见下述步 骤2,算法见图3),最终确定待迁移的处理器,如图2中最后选中VCPU3作 为待迁移的处理器。
步骤二、平衡迁移驱动
这里设定三种驱动算法的优先级,§卩负载均衡算法具有最高的优先级, 缺页引导算法次之,1/0引导算法优先级最低,在产生冲突时,根据各算法的 优先级决定迁移的目标节点。具体的平衡方案如下
步骤1:选择由较高优先级算法判定的运行最高优先级任务的处理器作为待迁移处理器,若该处理器不具有最高优先级任务,则执行步骤2;
步骤2:忽略处理器执行任务的优先级,任然选择较高优先级判定的处理 器作为待迁移处理器,若此时存在多个待迁移处理器的竞争时,执行步骤3;
步骤3:根据当时各处理器上任务的优先级,选择级别较高的任务所在的 处理器作为待迁移处理器。
本发明优先考虑机群系统的负载平衡,当计算任务优先级和算法优先级冲 突时,优先考虑算法优先级,当算法之间产生迁移冲突时,优先满足负载均衡 算法的需求。
步骤三、向目标节点发送迁移请求并协商
当算法选择好被迁移的虚拟处理器和目标节点后,便开始迁移,此时迁移 工作主要内容是向貝标节点发送迁移请求并协商。
步骤1:负载平衡模块通告处理器迁移模块,当待迁移处理器被调度器调 度后,迁移模块检测待迁移处理器的迁移标志位和其运行状态(见图3),若不 符合迁移要求则重新调用迁移驱动算法;
步骤2:检测无误后源节点VMM迁移模块开始向目标节点V應发送迁移请 求,等待回应;
步骤3:此时目标节点的守护线程负责和源节点通信,守护线程创建新线 程接管迁移工作;
步骤4:新的线程询问本地每载平衡模块是否同意此次迁移请求,若同意 则回应源节点;
步骤5:在和目标节点协商成功后,源节点的VMM断开VCPU3与本地物理 处理器CPU1的映射(图2中用虚线表示),处理器迁移模块开始准备待迁移处 理器的执行环境数据,如图2中源节点保存VCPU3的运行环境,此时,目标 节点的新线程准备从源节点接收处理器的状态;
步骤6:若协商未成功,新线程告知源节点,守护线程重新接管,等待下 次迁移请求(见图3),而源节点则重新进入负载平衡模块计算当前系统负载。步骤四、虚拟处理器状态的保存和恢复
步骤l:当虚拟处理器陷入到DV丽环境中执行时,判断被迁移的虚拟处理 器的运行状态。若处于Idle或僵死状态,则重新进入负载平衡模块;若处于 I/O操作状态,则等待这次操作完成;若处于正常的运行状态,则保存该虚拟 处理器的执行环境,包括所有通用寄存器的值、栈指针、打开的文件指针等;
步骤2:在DV醒执行环境中,等待VCPU调度器将其从物理处理器调出时,
停止该虚拟处理器的执行,源节点迁移模块将之前保存的执行环境封装后传递 给通信模块;
步骤3:经过通信模块封装数据和通过动态配置文件査找目标节点的IP地 址后,开始向目标节点传送VCPU的运行环境(如图2中所示的VCPU3,其中虚 线箭头是迁移的逻辑路径,实线箭头表示真实迁移路径)。
歩骤4:目标节点的通信模块接收到数据(如图2中,目标节点VMM接收 到VCPU3的运行环境数据)后,负责接管迁移工作的线程初始化新的VCPU结构 vcpu—struct,并用接收到的数据创建其执行环境,并建立VCPU和本地CPU的 映射(如图2中的VCPU3),最后将其状态标记为可运行,放入等待队列,等待 VCPU调度器将其调度到物理处理器上执行。
至此, 一次负载平衡的迁移操作完成,通过vcra的迁移,使得目标节点较
空闲的计算资源再次得到利用,达到了负载平衡的目的。从迁移的全过程来看,
虚拟处理器的管理和迁移的控制都由VMM负责,整个过程对上层的操作系统来 说是完全透明的,0S无法感知下层物理计算资源的重新调配。
步骤五、通信
这里为每个节点都被分配一个唯一的节点号,节点号是一个整型值,从1 开始连续分配的。o表示的是当前节点。通过节点号抽象,可以很方便的定位
某个节点。但是通过网络发送和接收数据,都是以IP地址来寻找节点的。因此, 这里采用了动态配置文件的方式,.建立了整个集群系统节点号和IP地址之间的 对应关系。当某节点的IP地址发生变化时,配置文件将被即时更新,从而得到
新的对应关系。当机群系统的VMi之间需要通信时,会首先查询该配置文件,
16得到目标节点的IP地址,之后再向目标节点发出通信请求。
处理器的执行环境从源节点迁移到目标节点之后,通信双方即可断开链接, 释放通信资源,这时只需各自维护对方的节点号(全局静态的)。当目标节点不 同意此次迁移请求时,可以通过节点号和配置文件再次请求和源节点通信,而 当迁移成功后,双方针对上次迁移就没有了任何通信的需求,不占用任何的通 信资源。
本发明一种对操作系统透明的机群负载平衡方法,其优点及功效在于
(1) 本发明基于硬件虚拟化技术和单一系统映像技术,提出了一种适用于 机群系统的负载平衡方法,在对上层客户操作系统和用户程序透明的情况下, 实现了机群系统的负载平衡策略,提高了系统资源的利用率。这种方法对客户
操作系统透明,基于x86体系结构,在软件上需要部署虚拟机监控器V麗,在
硬件上,除了需要支持硬件虚拟化的处理器外(支持硬件虚拟化的处理器是未 来处理器的主流),不需要任何特殊的硬件支持,具有较好的通用性。
(2) 本方法在实施过程中,都是由VMM中的内核级线程完成的,并且在通 过高速互连网络迁移处理器的过程中,有较少的通信次数和较低的通信时延, 比传统的中间件层和应用层负载平衡解决方案具有更高的效率;当处理器迁移 成功后,源节点不需保留任何和迁移相关的信息,比传统的系统软件层负载平 衡解决方案具有更少的网络通信量。当机群的节点规模随着需求的增加而扩充 时,只需要在相应的节点中部署包含本发明的V丽就可实现整个系统的负载平 衡策略,具有较好的可扩展性。
(3) 因此,本发明所提出的负载平衡解决方案,实现了对上层操作系统的 透明性,使得上层操作系统透明地利用下层更加合理的资源配置,同时整个负 载平衡过程具有较短的时延和较低的网络通信量,与目前存在的解决方案相比, 具有一定的优越性。
(4) 机群系统作为一种服务器结构,具有可扩展性好,易部署,性价比较 高等特点,已经成为目前主流的服务器结构,目前在全球前500的高性能服务 器排名当中,釆用机群结构的服务器占了 80%多。然而,由于机群低耦合的特 点,使得节点间的负载经常不平衡,致使个别节点负载很重,而其他节点却空闲着,从而造成资源的浪费。如何提高资源利用率一直是机群系统的热门话题, 而能够自动实现负载平衡则是资源利用率问题的一个解决方案。
综上所述,在当前,随着硬件虚拟化技术的不断发展,利用硬件虚拟化技 术部署机群系统己经显示出了很多优势。通过在物理节点上部署V丽,各V醒 之间相互协作,为上层的操作系统呈现并协助操作系统管理全局的计算资源, 实现了机群系统的单一系统映像。在这种背景下,本发明提出了在VMd内部实 施负载平衡的方法,对上层操作系统透明,并且具有较好的通用性以及较高的 效率,较好地解决了机群系统资源利用率低的问题。可以预见,未来随着机群 系统的更加普及和硬件虚拟化技术的不断发展,本发明将成为很好的机群系统 资源利用率低的解决方案,因此,.具有良好的应用前景。


图1为系统模块示意图
图2为虚拟处理器迁移示意图 图3为负载平衡算法流程图
具体实施例方式
本发明的一种对操作系统透明的机群负载平衡方法,其总体设计方案为
1. 在平衡负载之前.驱动虚拟处理器迁移;
2. 平衡迁移驱动;
3. 向目标节点发送迁移请求并协商;
4. 虚拟处理器状态的保存和恢复。
本方法的主要功能是在DVMM中实现的。如图1所示,在机群系统的各节点 上部署包含本发明方法的DVMM。该方法可以在N(N^2)台机群节点机上实施。
部署后的整个系统结构如下在最底层的是机群系统的各个物理节点(为了示
意方便,图l中只画出两个节点),每个节点都有独立的CPU、存储系统和I/0 设备,之间通过高速互连网络连接;之上是本发明各模块所在的DV画,其中包 括负载平衡模块,处理器迁移模块,通信模块。另外,DV薩中还有本发明所依
18赖的机群系统的DSM子系统;DV丽之上是各个虚拟机的具体实现,其中每个机
群节点上有VM控制台,其本身也是虚拟机,为整个机群系统提供管理界面和设 备模型等。机群系统所服务的是跨节点的VM虚拟机,其中包括操作系统(OS) 和用户应用程序(App),机群系统为整个VM提供单一系统映像,本发明的实现 对上层的VM来说是完全透明的。
图2中所示的是本发明所述方法中一次虚拟处理器迁移的全过程。位于图 中左侧的是迁移的源节点,右侧的是目标节点,每个节点都有自己独立的CPU 和内存。图中DV丽给操作系统分配了3个处理器,VCPU2、 VCPU3和VCPU4。
本发明所述方法的具体方案为-
步骤一驱动虚拟处理器迁移
本发明提出了三种算法,可以决定被迁移的虚拟处理器以及目标节点。它 们分别是负载均衡自适应算法,缺页引导算法和1/0操作引导算法。
1) 负载均衡自适应算法
负载均衡自适应算法的主要思想是通过计算各节点内的虚拟处理器负载信 息,统计所有节点的负载情况,然后决定哪些虚拟处理器将被迁移以及迁移的 目标节点。该算法主耍有三个部分组成负载计算算法,用来计算每个节点上 各个虚拟处理器当前的负载情况,其负载包括处理器在一段时间内的忙闲状况, 执行操作的类型等;负载信息交换算法,用来与其他节点交换负载信息,生成 并维护各节点的负载向量表;迁移选择算法根据负载向量表决定需要将哪些 虚拟处理器向哪些节点迁移。
该负载均衡自适应算法的具体步骤如下
步骤l:利用DV^1中虚拟处理器的调度器,计算每个节点上各个虚拟处理 器当前执行的任务负载,包括执行的任务类型,执行用户程序的时间,处理 器空闲时间,处理器处理中断的时间等。最后生成本节点的负载向量,如(节 点号,全局VCPU号,执行用户程序时间,空闲时间,处理中断时间);
步骤2:向其他节点广播本节点的负载向量,同时接收其他节点发送的负 载向量;
步骤3:统计各个节点的负载向量,生成全局负载向量表;步骤4:根据全局负载向量表,选中当前负载最重的处理器作为待迁移的 处理器,选中当前负载最轻的节点作为目标迁移节点; 步骤5:
if (待迁移处理器不属于本节点且本节点是迁移目标节点)
等待其他节点的迁移请求; else if (若待迁移处理器在本节点且本节点不是目标节点)
调用平衡迁移驱动算法确定最终的迁移处理器和目标节
点;
61S6'
gOtO步骤1; 2) 缺页引导算法
在硬件虚拟化的环境下,为/对上层操作系统实现单一系统映像,需要实
现分布式共享存储(Distributed Shared Memory, DSM)子系统。DSM对下屏 蔽了实际的内存分布,对上提供统的存储空间,虚拟处理器通过访问DSM达 到访问真实内存的目的。这一算法通过统计每个节点内各虚拟处理器在调用 DSM时产生缺页(真实内存页面不在本地)的次数,从而决定被迁移的处理器。 该算法也包含三个部分缺页计算算法,计算节点内各虚拟处理器在一段时间 内产生缺页的次数;缺页信息交换算法,该算法和其他节点交换缺页次数信息, 同时生成各节点的缺页向量表;迁移选择算法,根据缺页向量表选择被迁移的 处理器以及目标节点。
该缺页引导算法的具体步骤如下
步骤l:当处理器执行环境陷入到DV丽时,各节点利用DSM模块计算单位 时间内本节点处理器产生缺页的次数和原因,包括指令缺页次数和数据缺页 次数,生成缺页向量,如(节点号,全局VCPU号,指令缺页次数,数据缺页 次数);
步骤2:向其他节点广播本节点的缺页向量,同时接收其他节点发送的缺 页向量;
20步骤3:统计各个节点的缺页向量,生成全局缺页向量表; 步骤4:根据全局缺页向量表,选中缺页次数最多的处理器作为待迁移的 处理器,选中缺页次数最少的处理器所在的节点作为目标迁移节点; 步骤5:
if (待迁移处理器不属于本节点且本节点是迁移目标节点)
等待其他节点的迁移请求; else if (若待迁移处理器在本节点且本节点不是目标节点)
调用平衡迁移驱动算法确定最终的迁移处理器和目标节
点;
Sls6
gOtO步骤1; 3) V0操作引导算法
在部署了 DVMM的机群环境中,操作系统具有统一的I/O空间,而真实的 I/O设备可能分布在不同的节点上。该算法记录了所有虚拟处理器在执行过程 中访问的真实设备所在的节点以及访问次数,并且该记录随着1/0访问的变化 而更新。该算法包含三个部分I/O操作计算算法,计算节点内各虚拟处理器
一段时间内访问各个I/0设备的次数,生成本节点的1/0操作向量表,例如, (访问的设备号,设备所在节点号,访问次数);1/0信息交换算法,和其他节 点交换I/0操作向量表,同时生成全局I/0操作向量表,例如,(设备号,设备 所在节点号,访问该设备的VCPU号,该VCPU所在节点号,访问次数),该表每 个节点保留一份;迁移选择算法,根据全局I/0操作向量表选择被迁移的处理 器和目标节点。
该1/0操作引导算法的具体步骤如下
步骤1:当处理器执行环境陷入到DV丽时,各节点利用DSM模块计算单位 时间内本节点处理器产生I/0操作的情况,包括访问的设备号,设备所在节 点号和访问次数,生成I/0操作向量,如(节点号,全局VCPU号,访问的设 备号,设备所在节点号,访问次数);
步骤2:向其他节点广播本节点的1/0操作向量,同时接收其他节点发送的1/0操作向量;
步骤3:统计各个节点的I/0操作向量,生成全局I/0操作向量表; 步骤4:根据全局1/0操作向量表,选中1/0操作次数最多的处理器作为 待迁移的处理器; 步骤5:
if (待迁移处理器不属于本节点>
if (待迁移处理器访问的I/O设备在本节点) 等待其他节点的迁移请求;
else if
goto步骤1;
else if (待迁移处理器访问的1/0设备不在本节点) 选择该设备所在节点作为迁移目标节点;
调用平衡迁移驱动算法确定最终的迁移处理器和目标节
点;
else
goto步骤1;
整个驱动处理器迁移的过程如下
步骤l:操作系统启动后,在源节点中,DVMM中的负载平衡模块利用迁移 驱动算法自动检测当前的系统负载状况,并与其他节点交换信息;
步骤2:当发现需要进行负载平衡干预时,选中待迁移的处理器并确定迁 移的目标节点,此时还需判定待迁移处理器和目标节点是否有冲突;
步骤3:若有冲突,则需要运用平衡迁移驱动算法来解决冲突(步骤二, 算法见图3),最终确定待迁移的处理器,如图2中最后选中VCPU3作为待迁 移的处理器;
步骤二平衡迁移驱动
这里设定三种驱动算法的优先级,S卩负载均衡算法具有最高的优先级, 缺页引导算法次之,1/0引导算法优先级最低,在产生冲突时,根据各算法的优先级决定迁移的目标节点。具体的平衡过程如下
步骤1:选择由较高优先级算法判定的运行最高优先级任务的处理器作为 待迁移处理器,若该处理器不具有最高优先级任务,则执行步骤2;
步骤2:忽略处理器执行任务的优先级,任然选择较高优先级判定的处理 器作为待迁移处理器,若此时存在多个待迁移处理器的竞争时,执行步骤3;
步骤3:根据当时各处理器上任务的优先级,选择级别较高的任务所在的 处理器作为待迁移处理器。
本发明优先考虑机群系统的负载平衡,当计算任务优先级和算法优先级冲 突时,优先考虑算法优先级,当算法之间产生迁移冲突时,优先满足负载均衡 算法的需求。 '
步骤三向目标节点发送迁移请求并协商
当算法选择好被迁移的虚拟处理器和目标节点后,便开始迁移,此时迁移 工作主要内容是向目标节点发送迁移请求并协商。
步骤1:负载平衡模块通告处理器迁移模块,当待迁移处理器被调度器调 度后,迁移模块检测待迁移处理器的迁移标志位和其运行状态(见图3),若不 符合迁移要求则重新调用迁移驱动算法;
步骤2:检测无误后源节点VMM迁移模块开始向目标节点VMM发送迁移请 求,等待回应;
步骤3:此时目标节点的守护线程负责和源节点通信,守护线程创建新线 程接管迁移工作;
步骤4:新的线程询问本地负载平衡模块是否同意此次迁移请求,若同意 则回应源节点;
步骤5:在和目标节点协商成功后,源节点的VMM断开VCPU3与本地物理 处理器CPU1的映射(图2中用虚线表示),处理器迁移模块开始准备待迁移处 理器的执行环境数据,如图2中源节点保存VCPU3的运行环境,此时,目标 节点的新线程准备从源节点接收处理器的状态;
步骤6:若协商未成功,新线程告知源节点,守护线程重新接管,等待下 次迁移请求(见图3),而源节点则重新进入负载平衡模块计算当前系统负载;步骤四虚拟处理器状态的保存和恢复
步骤l:当虚拟处理器陷入到DV丽环境中执行时,判断被迁移的虚拟处理 器的运行状态。若处于Idle或僵死状态,则重新进入负载平衡模块;若处于 I/O操作状态,则等待这次操作完成;若处于正常的运行状态,则保存该虚拟 处理器的执行环境,包括所有通用寄存器的值、栈指针、打开的文件指针等;
步骤2:在DV羅执行环境中,等待VCPU调度器将其从物理处理器调出时, 停止该虚拟处理器的执行,源节点迁移模块将之前保存的执行环境封装后传递 给通信模块;
.步骤3:经过通信模块封装数据和通过动态配置文件查找目标节点的IP地 址后,开始向目标节点传送VCPU的运行环境(如图2中所示的VCPU3,其中虚 线箭头是迁移的逻辑路径,实线箭头表示真实迁移路径)。
步骤4:目标节点的通信模块接收到数据(如图2中,目标节点V應接收 到VCPU3的运行环境数据)后,负责接管迁移工作的线程初始化新的VCPU结构 vcpu—struct,并用接收到的数据创建其执行环境,并建立VCPU和本地CPU的 映射(如图2中的VCPU3),最后将其状态标记为可运行,放入等待队列,等待 VCPU调度器将其调度到物理处理器上执行。
至此, 一次负载平衡的迁移操作完成,.通过VCPU的迁移,使得目标节点较 空闲的计算资源再次得到利用,达到了负载平衡的目的。从迁移的全过程来看, 虚拟处理器的管理和迁移的控制都由VMM负责,整个过程对上层的操作系统来 说是完全透明的,0S无法感知下层物理计算资源的重新调配。
2权利要求
1、一种对操作系统透明的机群负载平衡方法,主要功能模块包括负载平衡模块、处理器迁移模块和通信模块;其特征在于该方法的步骤如下步骤一、驱动虚拟处理器迁移该机制中有三种算法可以决定被迁移的虚拟处理器以及目标节点,它们分别是负载均衡自适应算法,缺页引导算法和I/O操作引导算法;
全文摘要
本发明提供了一种对操作系统透明的机群负载平衡方法,主要功能模块包括负载平衡模块、处理器迁移模块和通信模块;其特征在于该方法的步骤如下步骤一、驱动虚拟处理器迁移;步骤二、平衡迁移驱动;步骤三、向目标节点发送迁移请求并协商;步骤四、虚拟处理器状态的保存和恢复;步骤五、通信。本发明较好地解决了机群系统资源利用率低的问题。可以预见,未来随着机群系统的更加普及和硬件虚拟化技术的不断发展,本发明将成为很好的机群系统资源利用率低的解决方案,具有良好的应用前景。
文档编号G06F9/46GK101452406SQ20081024050
公开日2009年6月10日 申请日期2008年12月23日 优先权日2008年12月23日
发明者刘忠麟, 彭近兵, 李胜召, 祝明发, 肖利民, 陈思名 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1