基于系统级诊断信息的负载衡量方法

文档序号:6605510阅读:189来源:国知局
专利名称:基于系统级诊断信息的负载衡量方法
技术领域
本发明涉及一种基于系统级诊断信息的负载衡量方法,特别是指一种综合考虑节点异构与应用间差异,基于系统级诊断信息的负载衡量方法。属于计算机网络技术。
背景技术
商业机群系统自身具有很强的灵活性;相同的应用可以选择不同的节点进行部署,同一个任务也可以分配给不同的节点来完成。随着商业应用规模的不断膨胀,应用所在节点所承担的负载越来越重;同时,节点之间也有可能出现负载分配不均衡的现象。商务应用任务具有与科学计算任务明显的不同特点任务粒度较小、运行时间相对较短,一般不需要将任务进行并行化处理;但是,商务应用任务的数量比较大,各个节点的负载随时间变化明显。
综上所述,像“应用部署”、“任务分配”等全局决策活动已经不能仅由系统管理员根据主观意愿进行静态的配置。根据各个节点的实际负载,合理的将应用在机群内动态部署、均衡的将任务在多个节点间动态分配,将是实现机群系统内负载均衡并最终提高系统整体性能的关键,而这一切的基础就是实时而准确的衡量各个节点上的工作负载。
目前,针对负载均衡问题,人们已经做了大量的工作,真正实现一个系统的负载均衡,需要综合考虑负载信息采集、负载衡量、负载分配等多方面因素。如图1所示,现有技术对此问题的解决方法主要集中在负载调度算法的改进方面;但是,如何全面地衡量系统的负载却是一个一直被忽视的问题。
传统的方法往往过于简单有些系统为每个程序设定一个固定的负载因子,根据程序执行的次数与负载因子的乘积来衡量系统负载。这种方法没有考虑实时的系统级负载诊断信息(如CPU使用率、内存使用率等),因而缺乏动态性和科学性。有些系统虽然考虑了系统级负载信息,并以此为依据比较各节点间负载的相对大小,但是却缺乏对系统异构性、以及应用差异的分析。这里的系统异构性主要是指不同节点上的同种资源在性能上的差异;例如两台处理机所拥有的处理器的运算速度的不同。不同的应用之间也可能存在差异;例如有的应用需要消耗大量的内存而对网络带宽要求不高,有些正好相反。
一种真正合理的机群节点负载衡量技术应有助于实现①在节点性能相同时,分配到各节点上的工作负载应大致相同;②在节点性能不同时,更多的负载应分配到性能更高、资源更多的节点上;③为不同类型的应用分配最适合它们的运行环境。

发明内容
本发明的主要目的在于提出一种基于系统级诊断信息的负载衡量方法,适合于机群系统,综合考虑其节点异构与应用间的差异,使在节点性能相同时,使分配到各节点上的工作负载应该大致相同;在节点性能不同时,使更多的负载应分配到性能更高、资源更多的节点上。
本发明的又一目的在于提出一种基于系统级诊断信息的负载衡量方法,为不同类型的应用分配最适合它们的运行环境。
本发明的目的是这样实现的一种基于系统级诊断信息的负载衡量方法,由多个主机节点组成的机群系统将同一应用部署在多台主机节点上,任一时刻至少有一个节点上的该应用处于运行状态;控制节点选择备份节点重新启动应用或将应用从当前节点迁移到备份节点。
所述的控制节点选择资源剩余最多的备份节点重新启动应用或将应用从当前节点进行迁移,至少包括步骤1配置资源因子。
步骤2配置资源依赖因子;步骤3采集系统级诊断信息;步骤4计算与应用相关的节点综合资源剩余率;步骤5更新负载均衡前置节点;步骤6判断应用被部署为高可用应用还是负载均衡应用,如果是高可用应用,则选择最适合该应用运行的备份节点作为新的运行节点;结束;步骤7如果是负载均衡应用,则根据备用节点的权重部署该应用,节点的权重越高,则分配的任务就越多;结束。
所述的步骤1具体包括步骤11为机群系统定义应用程序的通用资源,并为每一种资源指定系统级诊断信息;步骤12为机群系统静态配置节点信息,并在添加新节点时,指明该节点包含的所有资源种类以及资源因子。
所述的系统级诊断信息至少包括处理器资源、内存资源和网络资源;其中,处理器利用率为处理器资源的系统级诊断信息,内存利用率为内存资源的系统级诊断信息,网卡实际传输速率/网卡最大传输速率为网络资源的系统级诊断信息。
在设定节点的资源因子时,至少需要执行以下步骤步骤121选择代表该节点资源性能水平的参数指标;步骤122根据如下公式计算该节点资源在系统中的平均性能参数;
P=(∑Pi/N)其中,P为该资源的平均性能参数,Pi为i节点上该资源的实际性能参数,N为机群中的节点数目;步骤123依据如下公式计算该节点资源的实际性能参数与平均性能参数的比值;P’=(P/P)其中,P’为该节点资源的实际性能参数与平均性能参数的比值;P为该节点资源在系统中的平均性能参数;P为该节点资源的实际性能参数;步骤124设定资源因子的数值,且该资源因子的值在1与P’之间。
所述的步骤4具体为根据如下公式计算节点针对应用的综合资源剩余率Σall_resourceremain*res_factor*dep_factor]]>其中,remain从节点上获取的相应资源的剩余率;res_factor为节点上被计算资源的资源因子;dep_factor为应用对相应资源的资源依赖因子;all_resource为应用所关心的所有资源。
步骤5的具体操作为控制节点周期性地计算所有节点的资源剩余率,然后将它们直接或经过处理后作为节点应用权重发送给负载均衡应用的前置节点,用于更新已过时的节点应用权重。
所述的前置节点将多个运行相同应用的节点在逻辑上组织为一个整体,并负责任务的分发。前置节点中保存有每个应用运行节点的权重,该前置节点进行任务分发时选择权重最高的节点。应用运行节点的权重根据该节点资源剩余量确定,剩余资源越多,相应的权重值应越大。
通过以上的技术方案,本发明更真实地根据各节点之间的性能差异、负载差异与资源利用情况,使得故障的排除与接管、任务的分配更加合理,解决了传统方法中对系统异构性与应用差异考虑不足的问题;利用该方法所计算出的资源剩余率为实现系统内负载的均衡和整体性能的提高提供了坚实的系统级数据信息保障。


图1为负载均衡过程示意图;图2为本发明负载对象模型示意图;图3为机群应用高可用模型示意图;图4为机群应用负载均衡模型示意图。
具体实施例方式
以下结合附图和具体的实施例对本发明作进一步的详细说明机群系统在硬件方面由多个主机节点组成,在软件方面由多个应用组成;节点是不同种类资源的集合体,在同一节点上可以部署多个不同的应用;而资源是系统运行的基础,每一种资源都有相应的系统级诊断信息,例如,CPU利用率是处理器资源的系统级诊断信息。
操作系统可提供获取各种资源诊断信息的方法或工具。如果遇到某种资源拥有多个系统级诊断信息时,例如,衡量CPU的状态参数有CPU利用率、CPU上下文切换频率、等待进程队列长度等,可以按诊断项目对应用运行的影响程度为其设定一个权值,然后取各个诊断项目的加权平均值作为最后的系统级诊断信息,或者,如果诊断项目对应用运行影响较小,可以忽略不计。系统只考虑影响大的诊断项目。
不同节点可以拥有相同种类的资源,但是异构性允许同类资源之间在多个方面存在差异。要想进行准确的负载衡量,必须充分考虑同类资源之间的性能差异。因此,用资源因子做为异构参数,在描述每个节点的资源时,将以该种资源的机群范围内的平均性能水平为基准来设定资源因子。资源因子越高,表明某节点上该种资源的性能越优异。但要注意一般不宜简单地将节点间资源性能指标的绝对比值作为资源因子的数值。
应用是在机群内部署的程序,可以对外或对内提供某种服务。根据自身任务特点,应用可以分为计算密集型、I/O密集型和通信密集型等多种类型。由于不同类型应用对各种系统资源的关心程度各不相同,因此对不同应用来说基于相同的系统级诊断信息所得出的节点负载值也应是不一样的,因此,负载是与服务相关的,即应用对各资源的依赖程度信息,用资源依赖因子来表示,在为系统配置应用时,应同时配置资源依赖因子。
参见图2由此可得机群负载的对象模型。在机群系统中,硬件方面由许多节点组成,软件方面由许多应用组成;节点拥有各种资源,不同的节点可以拥有相同资源,也可以拥有不同的资源;该节点的资源信息由资源因子表示;在同一节点上可以部署多个不同的应用,该应用对各种资源的依赖程度由资源依赖因子表示。节点与应用为部署关系,资源与应用为使用关系。
本发明以集中控制为例说明本技术方案由图1可知在机群系统中,可以将同一个应用部署在多台主机节点上以提供高可用的服务。参见图3,任一时刻总有一个节点node1上的该应用处于运行状态(active)。当运行中应用出现故障时(节点故障或应用本身故障),控制节点(control node)选择一个备份节点(standby)重新启动应用,即“应用故障处理”。即使运行应用没有出现致命问题,系统也可能需要将应用从当前节点迁移到其它的备份节点,即“应用迁移”。无论是哪一种情况,所面临的问题实质上是一个——如何合理的选择备份节点。本发明的原则是选择资源剩余最多的备份节点。
在机群系统中,也可以在多个节点上同时运行相同的应用,整个应用存在一个前置节点(dispatcher)负责任务的分发,它把多个运行相同应用的节点在逻辑上组织为一个整体,参见如图4中的应用app1、应用app2。在前置节点中保存了每个应用运行节点的权重,任务分发时应选择权重最高的节点。问题是如何设置节点的应用权重,本发明的原则是根据节点资源剩余的多少来设置节点应用权重的大小,剩余资源越多,相应的权重值应越大。
在任一时刻,节点的负载不是一个单值,而是一个多值的集合,针对每一个部署在节点上的应用都应有其相应的应用负载,基于相同的系统级诊断信息,同一个节点的应用负载可能会不同。
具体的衡量节点的应用负载方法为步骤1配置资源因子;具体包括步骤11为机群系统定义应用程序的通用资源,并为每一种资源指定能够代表其负载的系统级诊断信息;例如处理器资源(CPU)、内存资源(MEMORY)、网络资源(NETWORK)等,处理器利用率作为处理器资源的系统级诊断信息,内存利用率作为内存资源的系统级诊断信息,网卡实际传输速率/网卡最大传输速率作为网络资源的系统级诊断信息;步骤12为机群系统静态配置节点信息,在添加新节点时,指明节点所包含的所有资源种类,以及每种资源在该节点上的性能水平——资源因子;在设定资源因子时,需要进一步进行
步骤121选择一种能够代表资源性能水平的参数指标,如处理器资源的CPU主频速度,并确定该资源在系统中的平均性能参数(P);步骤122以平均性能参数为基准将某节点资源的实际性能参数(P)与平均性能参数进行比较(P/P)得出比值P’;步骤12 3根据经验值与实验数据来设定资源因子的数值大小,一般资源因子应取值在1与P’之间。
表1 在表1中,对两个节点node1、node2的资源因子进行了配置。系统定义了三种通用资源处理器资源、内存资源和网络资源,衡量它们的性能指标分别为CPU主频速度、内存大小和网卡最大传输速率;当对某个节点的资源部件进行添加、删除或更换时,应及时对资源因子配置信息进行更新。
步骤2配置资源依赖因子;管理员在部署应用程序时应配置应用对不同资源的依赖程度,即资源依赖因子。对于某个应用,某种资源所对应的资源依赖因子越高,说明该应用越渴望得到该种资源,因此该资源在衡量对该应用而言的节点负载时的作用就越大。
为了方便管理员的工作,本发明预定义一套资源依赖模版,在每个模版中设定了适用于特定类型应用的各个资源的依赖因子。每个模版中的所有资源依赖因子的总和应等于1。例如表2
在表2中定义了两个资源依赖模版(计算密集型模板和通信密集型模板)。在计算密集型应用中,任务对处理器资源的需求程度最高;在通信密集型应用中,任务对网络资源的需求程度最高;在两种类型的应用中,任务都对内存具有较高的要求。
步骤3采集系统级诊断信息;系统级诊断信息代表了节点资源当前的负载状况,所有节点都应定时的、周期的将本地的系统级诊断信息发送到机群内的其它节点。在分布式控制机群中可以采用广播的方式进行发送。在集中式控制机群中可以采用点对点通信的方式向机群内的控制节点进行汇报。无论采用何种方式,最终都将使控制节点看到完整的(包含所有当前机群内的存活节点)、一致的(不同节点上的冗余信息应保持相同)系统级诊断信息。
如何采集每一种系统级诊断信息都应有专门的代理程序执行获取。系统在初始时会提供一些基本的代理程序,用户也可以按照系统规定的格式自己编写相应的代理程序,然后将其配置到系统中,系统为它们预留了调用接口。
在实际计算中,需要将原始的关于利用率的诊断信息转换为关于剩余率的诊断信息,这样所得出的结论将可用于比较各节点资源剩余的总体情况。如表3所示表3 步骤4计算与应用相关的节点资源剩余率;在完成了上述一系列配置工作,以及周期性接收到各节点的系统级诊断信息后,就可以针对每个应用进行节点剩余资源的衡量。这里需要说明的是本发明并不直接衡量节点负载,而是衡量节点剩余资源,因为最终的目标是要将任务分配到资源剩余最多的节点上执行;针对应用,节点的资源剩余率计算公式如下Σall_resourceremain*res_factor*dep_factor]]>(公式1)其中,remain为节点上某种资源的剩余率;res_factor为节点N上某种资源的资源因子;dep_factor为应用对某种资源的资源依赖因子;all_resource为应用所关心的所有资源。
假设在节点node1与节点node2上同时部署两个应用app1、app2,该应用app1是计算密集型应用,应用app2是通信密集型应用。现根据上述的公式,以及上面所设定的配置信息和采集到的诊断信息,针对各个应用衡量所有节点在一时刻上的资源剩余情况,参见表4表4 步骤5更新负载均衡前置节点;控制节点周期性地计算所有节点的资源剩余率,然后将它们直接(或经过适当处理后)作为节点应用权重发送给负载均衡应用的前置节点,用于更新已过时的节点应用权重。
步骤6如果应用app1与应用app2均被部署为高可用应用,除了运行节点外,节点node1与节点node2是当前可用的备份节点(standby),并以表4中的数据为依据进行应用的接管。当运行节点出现故障时,应用app1将由节点node1接管,应用app2将由节点node2接管。
步骤7如果应用app1与应用app2均被部署为负载均衡应用,并以表4中的数据为依据进行任务调度,应用app1的新任务将被调度到节点1node1执行;应用2app2的新任务将被调度到节点2(node2)执行。
最后应说明的是以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案;因此,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但是,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或者等同替换;而一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种基于系统级诊断信息的负载衡量方法,其特征在于由多个主机节点组成的机群系统将同一应用部署在多台主机节点上,任一时刻至少有一个节点上的该应用处于运行状态;控制节点选择备份节点重新启动应用或将应用从当前节点迁移到备份节点。
2.根据权利要求1所述的基于系统级诊断信息的负载衡量方法,其特征在于所述的控制节点选择资源剩余最多的备份节点重新启动应用或将应用从当前节点进行迁移,至少包括步骤1配置资源因子。步骤2配置资源依赖因子;步骤3采集系统级诊断信息;步骤4计算与应用相关的节点综合资源剩余率;步骤5更新负载均衡前置节点;步骤6判断应用被部署为高可用应用还是负载均衡应用,如果是高可用应用,则选择最适合该应用运行的备份节点作为新的运行节点;结束;步骤7如果是负载均衡应用,则根据备用节点的权重部署该应用,节点的权重越高,则分配的任务就越多;结束。
3.根据权利要求2所述的基于系统级诊断信息的负载衡量方法,其特征在于所述的步骤1具体包括步骤11为机群系统定义应用程序的通用资源,并为每一种资源指定系统级诊断信息;步骤12为机群系统静态配置节点信息,并在添加新节点时,指明该节点包含的所有资源种类以及资源因子。
4.根据权利要求3所述的基于系统级诊断信息的负载衡量方法,其特征在于所述的系统级诊断信息至少包括处理器资源、内存资源和网络资源;其中,处理器利用率为处理器资源的系统级诊断信息,内存利用率为内存资源的系统级诊断信息,网卡实际传输速率/网卡最大传输速率为网络资源的系统级诊断信息。
5.根据权利要求3所述的基于系统级诊断信息的负载衡量方法,其特征在于在设定节点的资源因子时,至少需要执行以下步骤步骤121选择代表该节点资源性能水平的参数指标;步骤122根据如下公式计算该节点资源在系统中的平均性能参数;P=(∑Pi/N)其中,P为该资源的平均性能参数,Pi为i节点上该资源的实际性能参数,N为机群中的节点数目;步骤123依据如下公式计算该节点资源的实际性能参数与平均性能参数的比值;P’=(P/P)其中,P’为该节点资源的实际性能参数与平均性能参数的比值;P为该节点资源在系统中的平均性能参数;P为该节点资源的实际性能参数;步骤124设定资源因子的数值,且该资源因子的值在1与P’之间。
6.根据权利要求2所述的基于系统级诊断信息的负载衡量方法,其特征在于所述的步骤4具体为根据如下公式计算节点针对应用的综合资源剩余率Σall_resourceremain*res_factor*dep_factor]]>其中,remain从节点上获取的相应资源的剩余率;res_factor为节点上被计算资源的资源因子;dep_factor为应用对相应资源的资源依赖因子;all_resource为应用所关心的所有资源。
7.根据权利要求2所述的基于系统级诊断信息的负载衡量方法,其特征在于步骤5的具体操作为控制节点周期性地计算所有节点的资源剩余率,然后将它们直接或经过处理后作为节点应用权重发送给负载均衡应用的前置节点,用于更新已过时的节点应用权重。
8.根据权利要求2所述的基于系统级诊断信息的负载衡量方法,其特征在于所述的前置节点将多个运行相同应用的节点在逻辑上组织为一个整体,并负责任务的分发。
9.根据权利要求2或8所述的基于系统级诊断信息的负载衡量方法,其特征在于所述的前置节点中保存有每个应用运行节点的权重,该前置节点进行任务分发时选择权重最高的节点。
10.根据权利要求9所述的基于系统级诊断信息的负载衡量方法,其特征在于所述的应用运行节点的权重根据该节点资源剩余量确定,剩余资源越多,相应的权重值应越大。
全文摘要
一种基于系统级诊断信息的负载衡量方法,由多个主机节点组成的机群系统将同一应用部署在多台主机节点上,任一时刻至少有一个节点上的该应用处于运行状态;控制节点选择备份节点重新启动应用或将应用从当前节点迁移到备份节点。通过以上的技术方案,本发明更真实地根据各节点之间的性能差异、负载差异与资源利用情况,使得故障的排除与接管、任务的分配更加合理,解决了传统方法中对系统异构性与应用差异考虑不足的问题;利用该方法所计算出的资源剩余率为实现系统内负载的均衡和整体性能的提高提供了坚实的系统级数据信息保障。
文档编号G06F15/16GK1512380SQ02159480
公开日2004年7月14日 申请日期2002年12月31日 优先权日2002年12月31日
发明者李电森, 许正华, 姜晓东, 肖利民 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1