CN108089918B - 一种面向异构服务器结构的图计算负载均衡方法 - Google Patents
一种面向异构服务器结构的图计算负载均衡方法 Download PDFInfo
- Publication number
- CN108089918B CN108089918B CN201711274503.8A CN201711274503A CN108089918B CN 108089918 B CN108089918 B CN 108089918B CN 201711274503 A CN201711274503 A CN 201711274503A CN 108089918 B CN108089918 B CN 108089918B
- Authority
- CN
- China
- Prior art keywords
- node
- migration
- vertex
- graph
- nodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种面向异构服务器结构的图计算负载均衡方法:根据所有计算节点在一次超级步中处理图计算负载所用的时间,主控节点计算出本次超级步中所有处理时间的变异系数,若连续两次超级步中的变异系数大于预设的阈值,则判定各计算节点在运行时的图计算负载不均衡,需要在本次超级步结束后对计算节点上的图计算负载重新分配,否则所有计算节点将继续执行下次超级步。本发明方法利用顶点迁移来平衡每次超级步中计算节点间的处理时间,从而有效地降低每次超级步中所有计算节点的同步开销,缩短图计算任务的运行时间,并提高各计算节点运行时的资源利用率。
Description
技术领域
本发明属于图计算技术领域,更具体地,涉及一种面向异构服务器结构的图计算负载均衡方法。
背景技术
分布式图计算技术被广泛应用在社交网络分析、自然语言处理、网页信息检索等众多领域,其组成体系通常包含三个部分:图算法、图数据集和图计算***。大多数图计算***采用BSP(Bulk Synchronization Barrier)计算模型,在此模型下,图计算过程通常被分为若干次迭代,每一次迭代又称为一个超级步。在每次超级步中,激活顶点根据在上次超级步中接收的消息更新顶点数值,并将更新后的数值以消息的形式发送给对应的邻居顶点。相邻的两次超级步间设有同步障碍,以保证所有激活顶点在下次超级步开始前已经完成当前超级步中的数值更新操作。
现有的图计算***出于负载均衡的考虑,在计算节点导入图数据集阶段为所有计算节点分配数量相当的顶点。然而,当前的数据中心或集群通常采用异构的服务器结构,这使得不同处理能力的计算节点在每次超级步中的处理时间不同,即处理能力强的计算节点在每次超级步中总是比处理能力弱的计算节点优先完成本地计算,并在同步障碍处等待同步。此外,在处理图计算任务的过程中,分布在各计算节点上的激活顶点数会发生变化,因而各计算节点在每次超级中的负载量也会动态变化。以上两个原因,导致大多数图计算***很难保证各计算节点在每次超级步中的处理时间是均衡的。
针对处理图计算任务时计算节点间负载不均衡的问题,少数图计算***(例如Mizan和GPS)提出采用顶点迁移的方法来均衡每次超级步中各计算节点上的负载。然而,这些图计算***通常利用顶点级的参数(例如顶点在一次超级步中接受的消息数)来拟定迁移计划,从而导致迁移效果不理想,计算节点间的负载在顶点迁移后仍然不均衡。另外,这些图计算***通常采用较敏感的迁移策略,即使检测到轻微的负载不均衡也会执行顶点迁移,导致顶点迁移的开销(如迁移时间、资源占用等)远大于负载均衡的收益。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供一种面向异构服务器结构的图计算负载均衡方法,用于均衡分布式图计算***中所有计算节点在每次超级步中的处理时间,从而降低计算节点在每次超级步中的同步开销,缩短图计算任务的运行时间,解决在现有的异构服务器结构下处理图计算任务时存在的计算节点负载量不均衡和处理时间不同步问题。
本发明提出的一种面向异构服务器结构的图计算负载均衡方法,包括如下阶段:
检测不均衡阶段:在图计算任务运行时,主控节点监测每次超级步中各计算节点的处理时间,并根据本次超级步中所有计算节点处理时间的变异系数和用户预设的阈值,判断各计算节点上的图计算负载是否均衡;所述变异系数为反映一组数据值离散程度的参数;对于一个图算法,如果用户不知道其运行时的特征,即用户对于运行时激活顶点个数的变化未知,则阈值默认为0.10;而对于稳定的图算法,即运行时激活顶点的个数不变,则应该设定一个小于0.10的阈值;而对于不稳定的图算法,即运行时激活顶点的个数持续变化,则应该设定一个大于0.10的阈值;本发明默认阈值可以设为0.10,对于不同图算法的具体阈值选取则不在本发明的讨论范围内。
拟定迁移计划阶段:各计算节点确定各自需要迁移的顶点,主控节点确定这些顶点对应的迁入节点;
实施迁移阶段:所有迁出节点采用延迟迁移的方式传输顶点信息到对应的迁入节点上,主控节点更新顶点迁移后的位置信息;所述延迟迁移指迁出节点在本次超级步结束后只对顶点的ID、数值、邻接边表进行迁移,而将尺寸较大的顶点传入消息在迁出节点上本地处理后再进行迁移;顶点的位置信息,指的是顶点当前所在的节点,知道该顶点的位置信息,其它顶点才能向它发送消息。
进一步的,所述方法,包括以下步骤:
步骤1所有计算节点导入图算法和图数据集;一般而言,图算法和图数据集组成了计算负载;
步骤2所有计算节点执行图算法的一次超级步;(图算法通常是***提供的或用户编写的,图算法用于对图数据集进行信息提取,其提取信息的过程通常可分为若干次超级步);
步骤3主控节点判断各计算节点上的图计算负载是否均衡;
步骤4若步骤3中判定结果为负载不均衡,则进入拟定迁移计划阶段,转步骤5;否则,转步骤7,所有计算节点进入下一次超级步;
步骤5各计算节点确定各自需要迁移的顶点,主控节点确定这些顶点对应的迁入节点;
步骤6所有计算节点采用延迟迁移的方式,传输顶点信息到对应的迁入节点上,主控节点更新并汇总顶点迁移后的位置信息;
步骤7重复步骤2至步骤6,直至图算法收敛。
进一步的,所这步骤3中检测不平衡阶段包括以下子步骤:
步骤3-1各计算节点将本次超级步中监测的处理时间发送给主控节点(各计算节点在运行过程中会监测每次超级步中的处理时间);
步骤3-2主控节点计算本次超级步中所有处理时间的变异系数CV:
其中u为本次超级步中所有计算节点的平均处理时间,N为计算节点的总个数,ti为计算节点i在本次超级步中监测的处理时间;
步骤3-3若上次和本次超级步中计算所得的变异系数CV都大于用户预设的阈值CVthr,则主控节点判定各计算节点上的图计算负载不均衡;否则,认定各计算节点上的图计算负载为是均衡的;如果是第一次超级步中,计算所得的CV大于阈值,仍不进行顶点迁移;唯有连续两次超级步中的CV都大于阈值时,才可进行顶点迁移;
步骤3-4主控节点将判定的结果发送给所有计算节点。
进一步的,所述步骤5中拟定迁移计划阶段包括以下子步骤:
步骤5-1主控节点将本次超级步中平均处理时间u发送给各计算节点;
步骤5-2各计算节点根据平均处理时间u,判定自身是迁出节点即处理时间大于平均处理时间,还是迁入节点即处理时间小于平均处理时间;
若是迁出节点,则计算其需要迁出的边数Eout,并进一步根据Eout确定需要迁出的顶点;迁出的顶点也就是迁入的顶点,这些顶点在迁移过程中从一个计算节点上被转移到了另一个计算节点上;
若是迁入节点,则计算其需要迁入的边数Ein;Eout和Ein分别描述了一个计算节点最多能迁出的边数和最多能迁入的边数;
步骤5-3计算节点将各自需要迁出或迁入的边数即Eout或Ein发送给主控节点;
步骤5-4主控节点根据各计算节点需要迁出或迁入的边数,即Eout或Ein,确定迁移顶点对应的迁入节点;迁出节点上的迁移顶点已经确定了,即步骤5-2的工作,当前主控节点需要确定这些迁移顶点应该被转移到哪些节点上;
步骤5-5主控节点将迁移顶点对应的迁入节点信息发送给相应的迁出节点。
进一步的,步骤5-2中各迁出节点确定各自需要迁出的顶点时操作如下:
各计算节点按照顶点所连接的边数,对其所维护的顶点降序排列(计算节点对一个顶点进行维护,指的是计算节点需要保存该顶点的所有信息,并在每次超级步中对该顶点的数值进行更新操作);当计算节点i接收到主控节点发来的平均处理时间u后,计算本次超级步中其处理时间ti与平均处理时间u的差值Δt=ti-u;当Δt为正时,表示计算节点i的图计算负载高于平均负载水平,该节点需要迁出的边数为Eout=(ti-μ)*EPSi,其中EPSi为计算节点i在本次超级步中平均每秒所处理的边数;计算节点可以统计每次超级步中处理的边数,再用这个边数除以处理时间就可以获得本次超级步中的EPSi;
当Δt为负时,表示计算节点i的图计算负载低于平均负载水平,该节点需要迁入的边数为Ein=(μ-ti)*EPSi;
迁出节点需要迁出的边数Eout确定后,则需要迁出的顶点可以从该迁出节点所维护的顶点中按照所连接的边数降序选出,直至选出顶点的边数总和达到Eout;(确定的迁出顶点也是迁入顶点,因为这些顶点的信息在迁移过程中会被迁出节点发送给迁入节点,而迁入节点上需要迁入的顶点不需要计算,因为迁入顶点就是其它节点上的迁出顶点)
进一步的,所述步骤5-4中主控节点确定迁移顶点对应的迁入节点时操作如下:
当主控节点接收到各计算节点发来的需要迁出或迁入的边数即Eout或Ein时,根据对应的Eout或Ein数值为所有计算节点排序;
主控节点首先将负载最重的即|Eout|数值最大的计算节点上的迁移顶点指派给负载最轻的即|Ein|数值最大的计算节点,若此重负载计算节点上仍有迁移顶点没有被指派迁入节点即该重负载计算节点迁出的边数暂时还未达到|Eout|,则将这些未被指派的迁移顶点指派给下一个轻负载计算节点;而当此轻负载计算节点上有多余的空间(每个迁入节点都有一个Ein值,表示其最多能容纳多少个迁入的边)容纳更多的迁移顶点时即该轻负载计算节点迁入的边数暂时还未达到|Ein|,则将下一个重负载计算节点上的迁移顶点指派给该轻负载计算节点;
主控节点按照前述方法为所有迁移顶点指派对应的迁入节点;由于各|Eout|是由相应的迁出节点计算所得,而各|Ein|是由相应的迁入节点计算所得,故所有|Eout|的总和与所有|Ein|的总和未必相等;当|Eout|的总和与|Ein|的总和不相等时,则剩余未匹配的Eout或Ein将被主控节点忽略。
进一步的,所述步骤6中实施迁移阶段包括以下子步骤:
步骤6-1各迁出节点发送迁移顶点信息给对应的迁入节点;
步骤6-2顶点迁移完成后,各迁出节点将迁移顶点的ID和位置信息即该迁移顶点的迁入节点发送给主控节点;
步骤6-3主控节点在一个表结构中汇总各迁移顶点ID和迁移后的位置信息;该表结构在第一次顶点迁移时创建,而在后面的顶点迁移中更新表结构中的内容;由于有多个迁出节点都对各自维护的顶点进行了迁移,因此所有迁移顶点的位置信息都需要在主控节点处进行汇总;
步骤6-4主控节点将汇总后的位置信息表发送给各计算节点;步骤6-2、步骤6-3和步骤6-4更新了迁移顶点的位置信息。
进一步的,所述步骤6-1中迁出节点向迁入节点迁移顶点时使用如下方法:
迁出节点在本次超级步结束后,将迁移顶点的ID、数值和邻接边表传输给对应的迁入节点,并通过更改迁移顶点位置信息方式的(首先迁出节点把该顶点的迁入节点发送给主控节点,主控节点在汇总后,再把这个顶点的迁入节点广播给所有其它计算节点),使得在下次超级步中该顶点新的传入消息即其它顶点发送给该顶点的消息被导向给迁入节点;而迁移顶点在本次超级步中接收的传入消息,由迁出节点在下次超级步中本地处理,即本次超级步中接受的消息,在迁移过程中并没有被立即发送,而是被迁出节点处理之后再被发送,这是因为消息的尺寸很大,通过网络传输消息的开销巨大;处理后得到的新顶点数值在下次超级步完成后由迁出节点发送给迁入节点;这种迁移顶点的方法使得顶点的传入消息被迁出节点本地处理,并将更新后的顶点数值在下次超级步完成后发送给迁入节点,因此总共需要连续两次超级步才能完成一次顶点的迁移,故称为延迟迁移;迁移过程中,发送迁移顶点的节点称为迁出节点,接受迁移顶点的节点称为迁入节点。
总体说来,本发明提出的方法包括三个主要阶段,分别是检测不均衡阶段、拟定迁移计划阶段和实施迁移阶段。本发明的技术构思是:在图计算任务运行时监测每次超级步中各计算节点的处理时间,并根据上次和本次超级步中所有计算节点处理时间的变异系数和用户预设的阈值,来判断各计算节点上的图计算负载是否均衡;若判断结果为图计算负载不均衡,则各计算节点之间采用延迟迁移的方式迁移相应数量的顶点,以均衡下次超级步中各计算节点的处理时间。
本发明所构思的以上技术方案与现有技术相比,具有以下优点:
使用本发明能均衡分布式图计算***中所有计算节点在每次超级步中的处理时间,从而降低计算节点在每次超级步中的同步开销,缩短图计算任务的运行时间。另外,在本发明中处理能力强的计算节点在每次超级步中被分配了更重的图计算负载,因此各计算节点的硬件资源得以充分使用以加速图算法的收敛。
附图说明
图1为本发明的结构示意图;
图2为本发明均衡图计算负载的主要步骤示意图;
图3为本发明拟定迁移计划阶段中确定迁入节点的示意图;
图4为本发明实施迁移阶段中延迟迁移的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明实施例中将会用到一些定义,其中的名词解释如下:
异构服务器结构:由处理能力或硬件配置不同的服务器所组成的数据中心或集群。
主控节点:数据中心或集群中,负责资源管理和任务调度的节点。
计算节点:数据中心或集群中,除主控节点外负责处理局部任务的节点。
图计算:是一种计算模式。它将真实世界中的物体及其关系分别抽象为图结构中的顶点和边,并在图结构上应用相应的图算法,以提取图结构中用户感兴趣的深层信息。
图数据集:由真实世界中的物体及其关系抽象而成的图结构。
图算法:由开发者或用户编写以提取图中深层信息的挖掘算法。
超级步:图计算过程通常被分为若干次迭代,一次迭代被称为一个超级步。
同步障碍:相邻两次超级步之间设有一个同步障碍,以同步每次超级步中激活顶点的数值更新。
变异系数CV:一种衡量一组数据{x1,x2...xN}离散程度的参数,其计算公式为其中u为该组数据的平均值,N为该组数据中数据项的总个数。变异系数相对标准偏差而言消除了量纲的影响,其大小仅仅只受数据项离散程度的影响,而不受数据项绝对值的影响。
迁出节点:顶点迁移中,发送迁移顶点的计算节点。
迁入节点:顶点迁移中,接受迁移顶点的计算节点。
邻接边表:一个顶点通常连接了一条或多条边,邻接边表记录了一个顶点所连接的各条边和这些边的权值。
一、负载均衡算法设计方案
在图计算任务运行过程中,当计算节点上的图计算负载在一次超级步中出现不均衡时,最直接的结果就是各计算节点的处理时间不同。为描述计算节点间的负载不均衡问题,需要一个参数来量化一次超级步中处理时间的离散程度。最常用的参数是标准偏差,其大小同时受数据项的绝对值和离散程度的影响。然而,各种图算法在一次超级步中处理时间的绝对值相差很大,对于处理时间长的图算法所得的标准偏差也较大。为了不考虑一组时间值绝对大小的影响而只考虑其离散程度,本发明选取变异系数C作为量化处理时间离散程度的关键性参数。在一次超级步结束后,处理时间的变异系数越大,则代表本次超级步中处理时间离散程度越高,即计算节点间的图计算负载不均衡越严重。一次超级步中处理时间的变异系数计算公式为:
其中u为本次超级步中的平均处理时间,N为计算节点的总个数,ti为计算节点i在本次超级步中的处理时间。为使每次超级步中计算节点间的图计算负载均衡,本发明通过顶点迁移的方式来降低每次超级步中处理时间的变异系数。
对于某些轻微的负载不均衡,其顶点迁移带来的开销远大于负载均衡的收益。为避免此类无收益的顶点迁移,本发明规定用户在运行图算法前为该算法指定一个阈值CVthr(默认可以设为0.10),用于判断每次超级步中负载不均衡的程度是否超出了用户可接受的范围;若一次超级步结束后算得的变异系数大于该阈值(CV>CVthr),则判定各计算节点在运行时的图计算负载不均衡,需要在本次超级步结束后对计算节点上的图计算负载重新分配,否则所有计算节点将继续执行下次超级步。另外,由于某些图算法(例如单源最短路径算法)的特性,其运行过程中各计算节点上的激活顶点数变化剧烈,致使变异系数在一次超级步中陡增,而在下一次超级步中恢复较低的水平。当出现这种情况时,会导致在连续的超级步中计算节点间来回迁移相同的顶点。为降低这类图算法运行过程中的迁移开销,本发明规定只有当上次和本次超级步中的变异系数都大于预设的阈值时,才对计算节点执行一次顶点迁移,以均衡后续超级步中的处理时间。
为此,本发明所提供的一种面向异构服务器结构的图计算负载均衡算法,主要适用于满足主从结构的分布式图计算***。如图1所示,各计算节点负责存储本地顶点的信息并对顶点数值进行更新操作,将更新后的顶点值以消息的形式发送给其它节点,以及在顶点迁移阶段并行地迁移顶点信息到其它节点上;主控节点负责收集各计算节点的状态信息包括每次超级步中的处理时间,拟定迁移计划并将迁移计划通知给所有计算节点,并负责更新和汇总迁移后顶点的位置信息。负载均衡算法的主体逻辑被实现于主控节点中。
如图2所示,本发明均衡分布在异构服务器结构上的图计算负载,方法包括以下步骤:
步骤1所有计算节点导入图算法和图数据集;
步骤2所有计算节点执行图算法的一次超级步;
步骤3主控节点判断各计算节点上的图计算负载是否均衡;
步骤4若步骤3中判定结果为负载不均衡,则进入拟定迁移计划阶段,转步骤5;否则,转步骤7,所有计算节点进入下一次超级步;
步骤5各计算节点确定各自需要迁移的顶点,主控节点确定这些顶点对应的迁入节点;
步骤6所有计算节点采用延迟迁移的方式,传输顶点信息到对应的迁入节点上,主控节点更新并汇总顶点迁移后的位置信息;
步骤7重复步骤2至步骤6,直至图算法收敛。
本发明所提供的一种面向异构服务器结构的图计算负载均衡算法,独立于用户所执行的具体图算法和图数据集,其能在任何满足主从结构的分布式图计算***(如Giraph、PowerGraph)上使用。
二、拟定迁移计划阶段
当主控节点在连续两次超级步中计算所得的变异系数都大于预设的阈值时,则判定计算节点上的图计算负载不均衡,需要对计算节点上的顶点进行迁移,以均衡下次超级步中计算节点间的处理时间。为此,图计算***进入拟定迁移计划阶段,该阶段所做的主要工作是确定各计算节点上需要迁移的顶点以及这些顶点对应的迁入节点。
首先,主控节点将本次超级步中计算所得的平均处理时间u发送给各计算节点。当计算节点i接收到主控节点发来的平均处理时间u后,计算本次超级步中其处理时间ti与平均处理时间的差值Δt=ti-u;当Δt为正时,表示计算节点i的图计算负载高于平均负载水平,该节点需要迁出的边数为Eout=(ti-μ)*EPSi,其中EPSi为计算节点i在本次超级步中平均每秒所处理的边数;当Δt为负时,表示计算节点i的图计算负载低于平均负载水平,该节点需要迁入的边数为Ein=(μ-ti)*EPSi。迁出节点需要迁出的边数Eout确定后,则需要迁出的顶点可以从该迁出节点所维护的顶点中按照所连接的边数降序选出,直至选出顶点的边数总和达到Eout。这里,采用一次超级步中每秒钟处理的边数而不是每秒钟处理的顶点数来定义计算节点的吞吐率,是因为真实世界中的图数据集大多服从幂律分布,即少数顶点连接着图中大多数边。处理一个顶点的时间随着其连接的边数而不同,而处理一条边的时间通常是稳定的,所以这里使用每秒钟处理的边数来定义计算节点的吞吐率,以对各计算节点的吞吐率做相对公平的量化。
各计算节点将各自需要迁出或迁入的边数(即Eout或Ein)发送给主控节点,主控节点根据Eout或Ein的数值为所有计算节点排序。如图3所示,迁出节点1的|Eout|数值最大,所以其在本次超级步中的负载最重,需要迁出的顶点数目最多;相似地,迁入节点1的|Ein|数值最大,所以其在本次超级步中的负载最轻,需要迁入的顶点数目最多。首先将负载最重的计算节点(即迁出节点1)上的迁移顶点指派给负载最轻的计算节点(即迁入节点1),若重负载计算节点上仍有迁移顶点没有被指派迁入节点时,则将这些未指派的迁移顶点指派给下一个轻负载计算节点(例如,迁出节点1的顶点被指派给迁入节点1、2);相反,当轻负载计算节点上有多余的空间容纳更多的迁移顶点时,则将下一个重负载计算节点上的迁移顶点指派给该轻负载计算节点(例如迁出节点2、3的顶点被指派给迁入节点3)。主控节点依照这种装箱式的方法为所有迁移顶点指派迁入节点,当所有|Eout|的总和与所有|Ein|的总和不等时(例如 则剩余未匹配的Eout或Ein将会被主控节点忽略。
最后,主控节点将指派迁入节点的结果发送给对应的迁出节点,从而完成拟定迁移计划阶段,转而进入实施迁移阶段。
三、实施迁移阶段
在实施迁移阶段中,图计算***需要完成两个工作,即迁出节点迁移顶点信息到对应的迁入节点上,以及主控节点更新并汇总迁移后顶点的位置信息。由于各迁移顶点都有明确的迁入节点,迁出节点可以同时向一个或多个迁入节点发送顶点信息。对于大多数图算法而言,顶点的信息可以分为两类:尺寸不变的和尺寸变化的。顶点的ID、数值和邻接边表在运行时通常是不变的,例如可以用一个整型表示顶点ID,用一个浮点型表示顶点数值。而由于激活顶点数目的变化,一个顶点在每次超级步中接收到的消息数目也随之变化。此外,一个顶点连接的边数可以很大,也就是说该顶点在一次超级步中接收的消息数目可能很多。所以,顶点的传入消息相对于其它类型的顶点信息而言尺寸巨大,将顶点消息通过网络在计算节点间传输是消耗大量的时间和资源,并将严重影响图算法运行的时间。
为避免顶点迁移中传输顶点消息的巨额开销,本发明采用延迟迁移的方式迁移顶点信息。如图4所示,计算节点在超级步1中发生负载不均衡,主控节点检测到该不均衡并拟定了迁移计划。在同步障碍1,迁出节点将尺寸相对较小的顶点ID、顶点消息和邻接边表发送给迁入节点,而尺寸相对较大的传入消息被保留在迁出节点上,与此同时,迁移顶点的位置信息变为迁入节点(该位置信息被主控节点广播给其它的计算节点)。在超级步2中,由于迁移顶点的位置信息改变,所有该顶点的传入消息被导向到迁入节点上,而该顶点在超级步1中接收的传入消息则被迁出节点本地处理,并产生新的顶点值。在同步障碍2中,迁出节点将计算得到的新顶点值发送给迁入节点。在超级步3开始前,该顶点完成了从迁出节点到迁入节点的迁移。延迟迁移使得顶点的传入消息被迁出节点本地处理后,在下一次超级步完成后才被发送给迁入节点,因此总共需要连续两次超级步才能完成一次顶点的迁移。同时,为保证顶点数值的一致性,本发明规定只有一个顶点的延迟迁移全部完成后,该顶点才能被安排进行下次延迟迁移。
顶点迁移后的位置信息应该被及时更新,以保证迁移后该顶点的传入消息被发送到正确的计算节点上。为减少更新顶点位置信息的开销,本发明规定主控节点更新并汇总迁移后所有顶点的位置信息。在顶点ID、顶点数值和邻接边表被发送到迁入节点后,迁出节点向主控节点发送迁移顶点的ID和对应的迁入节点。主控节点在一个表结构中汇总各迁移顶点的ID和迁移后的位置信息,并在所有顶点都完成迁移后将该表结构发送给所有计算节点,各计算节点记录迁移顶点最新的位置信息。至此,各计算节点完成了顶点的迁移。
四、特点
本发明提供了一种面向异构服务器结构的图计算负载均衡算法。该算法中共包括三个主要阶段:检测不均衡阶段,主控节点根据本次超级步中所有计算节点处理时间的变异系数和用户预设的阈值,来判断计算节点上的图计算负载是否均衡;拟定迁移计划阶段,各计算节点确定各自需要迁移的顶点,主控节点确定这些顶点对应的迁入节点;实施迁移阶段,所有计算节点采用延迟迁移的方式并行地传输顶点信息到对应的迁入节点上,主控节点更新并汇总顶点迁移后的位置信息。
与现有的同类发明相比,该算法将一次超级步中处理时间的变异系数作为量化负载不均衡的关键性参数,能够准确反映异构服务器结构中计算节点间图计算负载的真实分布;当连续两次超级步中处理时间的变异系数大于预设的阈值时才执行顶点迁移,可以有效地降低执行某些图算法时的迁移开销;计算节点间采用延迟迁移的方式迁移顶点信息,可以极大降低迁移所需的时间和网络带宽;采用主控节点来更新并汇总顶点迁移后的位置信息,可以降低更新位置信息的开销。
总地来说,本发明所提供的一种面向异构服务器结构的图计算负载均衡算法,能够自适应地均衡每次超级步中各计算节点的处理时间,并尽可能地降低顶点迁移过程中的各类开销,从而大幅度地降低图计算任务的运行时间。另外,在本发明所提供的图计算负载均衡算法中,处理能力强的计算节点在每次超级步中被分配了更重的图计算负载,因此各计算节点的硬件资源得以充分利用以加速图算法的收敛。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种面向异构服务器结构的图计算负载均衡方法,其特征在于,包括如下阶段:
检测不均衡阶段:在图计算任务运行时,主控节点监测每次超级步中各计算节点的处理时间,并根据本次超级步中所有计算节点处理时间的变异系数和用户预设的阈值,判断各计算节点上的图计算负载是否均衡;所述变异系数为反映一组数据值离散程度的参数;
拟定迁移计划阶段:各计算节点确定各自需要迁移的顶点,主控节点确定这些顶点对应的迁入节点;
实施迁移阶段:所有迁出节点采用延迟迁移的方式传输顶点信息到对应的迁入节点上,主控节点更新顶点迁移后的位置信息;
其中,所述检测不均衡阶段中,根据本次超级步中所有计算节点处理时间的变异系数和用户预设的阈值,判断各计算节点上的图计算负载是否均衡,包括:
各计算节点将本次超级步中监测的处理时间发送给主控节点;
主控节点计算本次超级步中所有处理时间的变异系数CV:
其中u为本次超级步中所有计算节点的平均处理时间,N为计算节点的总个数,ti为计算节点i在本次超级步中监测的处理时间;
若上次和本次超级步中计算所得的变异系数CV都大于用户预设的阈值CVthr,则主控节点判定各计算节点上的图计算负载不均衡;否则,认定各计算节点上的图计算负载为是均衡的;
主控节点将判定的结果发送给所有计算节点。
2.如权利要求1所述的面向异构服务器结构的图计算负载均衡方法,其特征在于,包括以下步骤:
步骤1所有计算节点导入图算法和图数据集;
步骤2所有计算节点执行图算法的一次超级步;
步骤3主控节点判断各计算节点上的图计算负载是否均衡;
步骤4若步骤3中判定结果为负载不均衡,则进入拟定迁移计划阶段,转步骤5;否则,转步骤7,所有计算节点进入下一次超级步;
步骤5各计算节点确定各自需要迁移的顶点,主控节点确定这些顶点对应的迁入节点;
步骤6所有计算节点采用延迟迁移的方式,传输顶点信息到对应的迁入节点上,主控节点更新并汇总顶点迁移后的位置信息;
步骤7重复步骤2至步骤6,直至图算法收敛。
3.如权利要求2所述的面向异构服务器结构的图计算负载均衡方法,其特征在于,步骤5中拟定迁移计划阶段包括以下子步骤:
步骤5-1主控节点将本次超级步中平均处理时间u发送给各计算节点;
步骤5-2各计算节点根据平均处理时间u,判定自身是迁出节点还是迁入节点;
若是迁出节点,则计算其需要迁出的边数Eout,并进一步根据Eout确定需要迁出的顶点;
若是迁入节点,则计算其需要迁入的边数Ein;
步骤5-3计算节点将各自需要迁出或迁入的边数发送给主控节点;
步骤5-4主控节点根据各计算节点需要迁出或迁入的边数,确定迁移顶点对应的迁入节点;
步骤5-5主控节点将迁移顶点对应的迁入节点信息发送给相应的迁出节点。
4.如权利要求3所述的面向异构服务器结构的图计算负载均衡方法,其特征在于,步骤5-2中各迁出节点确定各自需要迁出的顶点时操作如下:
各计算节点按照顶点所连接的边数,对其所维护的顶点降序排列;当计算节点i接收到主控节点发来的平均处理时间u后,计算本次超级步中其处理时间ti与平均处理时间u的差值Δt=ti-u;当Δt为正时,表示计算节点i的图计算负载高于平均负载水平,该节点需要迁出的边数为Eout=(ti-μ)*EPSi,其中EPSi为计算节点i在本次超级步中平均每秒所处理的边数;
当Δt为负时,表示计算节点i的图计算负载低于平均负载水平,该节点需要迁入的边数为Ein=(μ-ti)*EPSi;
迁出节点需要迁出的边数Eout确定后,则需要迁出的顶点可以从该迁出节点所维护的顶点中按照所连接的边数降序选出,直至选出顶点的边数总和达到Eout。
5.如权利要求3所述的面向异构服务器结构的图计算负载均衡方法,其特征在于,步骤5-4中主控节点确定迁移顶点对应的迁入节点时操作如下:
当主控节点接收到各计算节点发来的需要迁出或迁入的边数时,根据对应的Eout或Ein数值为所有计算节点排序;
主控节点首先将负载最重的计算节点上的迁移顶点指派给负载最轻的计算节点,若此重负载计算节点上仍有迁移顶点没有被指派迁入节点,则将这些未被指派的迁移顶点指派给下一个轻负载计算节点;而当此轻负载计算节点上有多余的空间容纳更多的迁移顶点时,则将下一个重负载计算节点上的迁移顶点指派给该轻负载计算节点;
主控节点按照前述方法为所有迁移顶点指派对应的迁入节点;由于各|Eout|是由相应的迁出节点计算所得,而各|Ein|是由相应的迁入节点计算所得,故所有|Eout|的总和与所有|Ein|的总和未必相等;当|Eout|的总和与|Ein|的总和不相等时,则剩余未匹配的Eout或Ein将被主控节点忽略。
6.如权利要求2所述的面向异构服务器结构的图计算负载均衡方法,其特征在于,步骤6中实施迁移阶段包括以下子步骤:
步骤6-1各迁出节点发送迁移顶点信息给对应的迁入节点;
步骤6-2顶点迁移完成后,各迁出节点将迁移顶点的ID和位置信息发送给主控节点;
步骤6-3主控节点在一个表结构中汇总各迁移顶点ID和迁移后的位置信息;
步骤6-4主控节点将汇总后的位置信息表发送给各计算节点。
7.如权利要求6所述的面向异构服务器结构的图计算负载均衡方法,其特征在于,步骤6-1中迁出节点向迁入节点迁移顶点时使用如下方法:
迁出节点在本次超级步结束后,将迁移顶点的ID、数值和邻接边表传输给对应的迁入节点,并通过更改迁移顶点位置信息的方式,使得在下次超级步中该顶点新的传入消息被导向给迁入节点;而迁移顶点在本次超级步中接收的传入消息,由迁出节点在下次超级步中本地处理处理后得到的新顶点数值在下次超级步完成后由迁出节点发送给迁入节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711274503.8A CN108089918B (zh) | 2017-12-06 | 2017-12-06 | 一种面向异构服务器结构的图计算负载均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711274503.8A CN108089918B (zh) | 2017-12-06 | 2017-12-06 | 一种面向异构服务器结构的图计算负载均衡方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108089918A CN108089918A (zh) | 2018-05-29 |
CN108089918B true CN108089918B (zh) | 2020-07-14 |
Family
ID=62174116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711274503.8A Active CN108089918B (zh) | 2017-12-06 | 2017-12-06 | 一种面向异构服务器结构的图计算负载均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108089918B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489229B (zh) * | 2019-07-17 | 2020-06-30 | 长沙学院 | 一种多目标任务调度方法及*** |
CN110515729B (zh) * | 2019-08-19 | 2022-05-24 | 中国人民解放军国防科技大学 | 基于图形处理器的图计算节点向量负载平衡方法及装置 |
CN110532091B (zh) * | 2019-08-19 | 2022-02-22 | 中国人民解放军国防科技大学 | 基于图形处理器的图计算边向量负载平衡方法及装置 |
TWI729606B (zh) * | 2019-12-05 | 2021-06-01 | 財團法人資訊工業策進會 | 用於一邊緣運算網路的負載平衡裝置及方法 |
CN111459914B (zh) * | 2020-03-31 | 2023-09-05 | 北京金山云网络技术有限公司 | 分布式图数据库的优化方法、装置和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102244685A (zh) * | 2011-08-11 | 2011-11-16 | 中国科学院软件研究所 | 一种支持负载均衡的分布式缓存动态伸缩方法及*** |
CN103081416A (zh) * | 2010-09-08 | 2013-05-01 | 瑞典爱立信有限公司 | 以链路利用作为到平局打破机制中的反馈的多协议标签交换(mpls)的自动化业务工程 |
CN103546530A (zh) * | 2013-06-20 | 2014-01-29 | 江苏大学 | 基于成组资源管理的对等网络节点负载均衡方法及*** |
CN104270402A (zh) * | 2014-08-25 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种异构集群存储自适应数据负载的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8792633B2 (en) * | 2012-09-07 | 2014-07-29 | Genesys Telecommunications Laboratories, Inc. | Method of distributed aggregation in a call center |
US9934323B2 (en) * | 2013-10-01 | 2018-04-03 | Facebook, Inc. | Systems and methods for dynamic mapping for locality and balance |
-
2017
- 2017-12-06 CN CN201711274503.8A patent/CN108089918B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103081416A (zh) * | 2010-09-08 | 2013-05-01 | 瑞典爱立信有限公司 | 以链路利用作为到平局打破机制中的反馈的多协议标签交换(mpls)的自动化业务工程 |
CN102244685A (zh) * | 2011-08-11 | 2011-11-16 | 中国科学院软件研究所 | 一种支持负载均衡的分布式缓存动态伸缩方法及*** |
CN103546530A (zh) * | 2013-06-20 | 2014-01-29 | 江苏大学 | 基于成组资源管理的对等网络节点负载均衡方法及*** |
CN104270402A (zh) * | 2014-08-25 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种异构集群存储自适应数据负载的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108089918A (zh) | 2018-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108089918B (zh) | 一种面向异构服务器结构的图计算负载均衡方法 | |
CN108829494B (zh) | 基于负载预测的容器云平台智能资源优化方法 | |
CN108182105B (zh) | 基于Docker容器技术的局部动态迁移方法及控制*** | |
CN110231976B (zh) | 一种基于负载预测的边缘计算平台容器部署方法及*** | |
WO2018000991A1 (zh) | 一种数据均衡方法和装置 | |
CN110347498B (zh) | 一种容器和虚拟机混合云环境下的负载动态迁移方法 | |
CN107992353B (zh) | 一种基于最小迁移量的容器动态迁移方法及*** | |
CN112486690A (zh) | 一种适用于工业物联网的边缘计算资源分配方法 | |
CN106681839B (zh) | 弹性计算动态分配方法 | |
Mayer et al. | Graph: Heterogeneity-aware graph computation with adaptive partitioning | |
CN105117292B (zh) | 随机扩散动态负载均衡方法 | |
CN106528270A (zh) | 一种基于OpenStack云平台的虚拟机自动迁移方法及*** | |
CN105893155B (zh) | 虚拟机负载均衡控制方法与装置 | |
CN105491150A (zh) | 基于时间序列的负载均衡处理方法及*** | |
CN113033800A (zh) | 分布式深度学习方法、装置、参数服务器及主工作节点 | |
CN113965569B (zh) | 一种高能效、低时延的边缘节点计算迁移配置*** | |
CN106339386A (zh) | 数据库弹性调度方法以及装置 | |
CN111131486A (zh) | 执行节点的负载调节方法、装置、服务器及存储介质 | |
CN104104621A (zh) | 一种基于非线性降维的虚拟网络资源动态自适应调节方法 | |
CN106059940B (zh) | 一种流量控制方法及装置 | |
CN113315669A (zh) | 基于云边协同的吞吐量优化的机器学习推断任务部署方法 | |
US9749219B2 (en) | Method of optimizing routing in a cluster comprising static communication links and computer program implementing that method | |
CN102480502B (zh) | 一种i/o负载均衡方法及i/o服务器 | |
CN107479968B (zh) | 一种面向动态图增量计算的均衡负载方法及*** | |
TW201627873A (zh) | 用於在分散式計算中處理重發請求的方法與設備 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |