一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于图分割算法的分布式通信负载均衡方法

2022-06-08 16:52:21 来源:中国专利 TAG:

:
1.本发明公开了一种基于图分割算法的分布式通信负载均衡方法,涉及广域高性能计算面临的挑战,属于计算机技术领域。


背景技术:
:
2.在分布式内存的运行时系统中,运行在不同节点上的计算任务,通过网络互相发送消息进行通信。在本章中,本文讨论的是每个任务的通信负载,即每个任务和其他节点上的消息数量。如果互相通信的两个计算任务被分配在同一节点上,那么它们之间的通信可以通过共享内存进行,从而隐藏通信的延迟。通信负载均衡的目的是尽可能地将互相通信量较大的任务放在同一节点上,从而减少节点之间的通信量。一般来说,计算任务的计算负载和通信模式通常存在时间上的连续性,即计算任务将将来一段时间内的负载信息与过去时间内的负载信息通常具有相似的特点,因此前一段时间内的负载信息通常会被用来作为依据对未来的负载均衡算法提供指导信息。
3.在负载均衡算法中由于在进行计算负载的均衡时,一般的算法不会考虑到任务之间的通信情况,所以在均衡之后,部分节点之间的通信负载可能较高。大量的通信开销会影响程序的性能。
4.一种方法是将计算负载和通信负载的均衡问题看做一个图分割问题,即将n个互相相连的节点分为k个部分,使得各个部分之间边的权值最小,并且使得k个部分的节点权值之和处于一种均衡的状态。在运行时系统中,通常采取的方法是集中式的图分割算法,例如:
5.jeannot提出在高性能计算机中的问题是应用程序中的负载不平衡和对数据位置的糟糕管理。因此,随着内核数量的增加和每个内核的内存数量的急剧减少,需要特别注意负载平衡和尽可能多地考虑数据的局部性。作者使用libtopomap对多个节点之间的拓扑进行分析并提出了基于拓扑的负载均衡方法。该方法首先对各个节点之间的负载进行均衡,然后根据计算任务之间的亲和性使用libtopomap提供的metis算法对各组计算任务进行重新分配,以减少通信开销。
6.umit v.catalyurek提出了一种基于超图划分的动态负载均衡方法。由于迭代应用的负载在缓慢变化,每隔一段时间都会出现负载不均衡。该方法将任务建模为超图,使用并对超图进行分割。超图中的节点代表计算任务,而边代表计算任务之间的通信。超图分割将任务分到不同的区域中,使计算任务均衡。分割的目标是保证负载分配均衡的同时使得边切割最小,即通信最小。由于这个一个np-hard问题,作者采用了已有的zoltan方法来解决这个问题。
7.但是,该问题是一个np问题,随着系统规模的增加,计算得到一个合适的方案需要耗费大量时间。因此,集中式的算法存在可扩展性上的问题。
8.针对集中式图分割算法中存在的可扩展性的问题,本章提出了一种分布式的图分割算法,对通信负载进行均衡。该算法在每个节点上都运行,首先统计该节点和其他节点之
间的通信量,当占其通信总量的比例超过一定阈值时,则开始进行均衡,首先按照通信量对外部节点进行排序,按照通信量从高到底的顺序,依次选择节点作为目标节点发送探测请求。如果目标节点还未响应其他节点,则该目标节点会响应当前节点,并回复目标的节点上计算任务的通信信息。当前节点收到之后,根据当前节点和目标节点上任务的通信信息,使用图分割算法对两个节点上的任务进行重新分配,减少2个节点之间的通信负载。


技术实现要素:
:
9.本发明的内容是提出一种基于图分割算法的分布式通信负载均衡方法,针对集中式图分割算法中存在的可扩展性的问题,对通信负载进行均衡。
10.本发明的技术方案是:
11.一种基于图分割算法的分布式通信负载均衡方法,其特征在于,该算法在每个节点上都运行,首先统计该节点和其他节点之间的通信量,当占其通信总量的比例超过一定阈值时,则开始进行均衡,首先按照通信量对外部节点进行排序,按照通信量从高到底的顺序,依次选择节点作为目标节点发送探测请求;如果目标节点还未响应其他节点,则该目标节点会响应当前节点,并回复目标的节点上计算任务的通信信息;当前节点收到之后,根据当前节点和目标节点上任务的通信信息,使用图分割算法对两个节点上的任务进行重新分配,减少2个节点之间的通信负载。
12.所述方法包括以下步骤,具体如下:
13.1)整个算法的将服务器的状态分为4个状态{init,looking,peer,noneed},在进入负载均衡算法时,当前服务器状态处于init状态,第一步根据本地节点的负载收集齐记录的负载信息和通信信息,计算非本地通信量的大小,并决定是否发起负载均衡,如果非本地通信量的占比超过阈值threshold_1。
14.2)如果不需要,则状态改变为noneed,表示不需要调整本节点的通信负载,但该节点仍然可能被其他节点选为目标节点。
15.3)否则,状态改变为looking,开始选择一个合适的目标节点,统计所有计算任务的通信量,得到该节点与其他节点之间的通信量。
16.4)为了选择一个合适的目标节点,将其他节点按照通信量降序进行排序,并依次向各个节点发送负载收集请求。
17.5)为了避免多个节点选择同一目标节点,如果一个节点已经响应过其他节点的负载收集请求,那么他的状态会变为peer,表示已经和其他节点形成一个节点对,之后它会拒绝当前的负载收集请求。
18.6)处于looking节点都会按照排序向目标节点发送负载收集请求,直到找到一个目标节点成功响应其负载收集请求,其状态改变为peer,或者与当前的目标节点的通信量低于一个阈值threshold_2,它认为自己不再需要进行负载均衡,并将自己的状态转变为noneed。
19.7)特别的,如果某个节点处于looking状态,它也不会响应其他节点的负载收集请求,除非这这个节点当前的目标恰好也是发送请求的节点。
20.一种基于图分割算法的分布式通信负载均衡方法,对通信负载进行均衡。该算法在每个节点上都运行,首先统计该节点和其他节点之间的通信量,当占其通信总量的比例
超过一定阈值时,则开始进行均衡,首先按照通信量对外部节点进行排序,按照通信量从高到底的顺序,依次选择节点作为目标节点发送探测请求。如果目标节点还未响应其他节点,则该目标节点会响应当前节点,并回复目标的节点上计算任务的通信信息。当前节点收到之后,根据当前节点和目标节点上任务的通信信息,使用图分割算法对两个节点上的任务进行重新分配,减少2个节点之间的通信负载,能够有效减少了系统中的通信量,并且具有更好的可扩展性。
附图说明:
21.图1为算法的过程图。
22.图2为服务器状态的变化图。
23.图3为相比于nolb的加速比随着消息数量增加变化对比图。
24.图4为系统中节点间通信总量对比图。
25.图5为不同算法执行时间对比图。
具体实施方式:
26.在负载均衡算法中,由于在进行计算负载的均衡时,一般的算法不会考虑到任务之间的通信情况,所以在均衡之后,部分节点之间的通信负载可能较高。大量的通信开销会影响程序的性能。
27.针对集中式图分割算法中存在的可扩展性的问题,本章提出了一种分布式的图分割算法,对通信负载进行均衡。该算法在每个节点上都运行,首先统计该节点和其他节点之间的通信量,当占其通信总量的比例超过一定阈值时,则开始进行均衡,首先按照通信量对外部节点进行排序,按照通信量从高到底的顺序,依次选择节点作为目标节点发送探测请求。如果目标节点还未响应其他节点,则该目标节点会响应当前节点,并回复目标的节点上计算任务的通信信息。当前节点收到之后,根据当前节点和目标节点上任务的通信信息,使用图分割算法对两个节点上的任务进行重新分配,减少2个节点之间的通信负载。
28.本节在charm 6.0.1的基础上进行实现,继承distbaselb实现了distcommlb类,实现了负载信息统计、负载信息收集、负载方案计算等功能。
29.整个算法将服务器的状态分为4个状态{init,looking,peer,noneed},在进入负载均衡算法时,当前服务器状态处于init状态,第一步根据本地节点的负载收集齐记录的负载信息和通信信息,计算非本地通信量的大小,并决定是否发起负载均衡,如果非本地通信量的占比超过阈值threshold_1。如果不需要,则状态改变为noneed,表示不需要调整本节点的通信负载,但该节点仍然可能被其他节点选为目标节点。为了选择一个合适的目标节点,将其他节点按照通信量降序进行排序,并依次向各个节点发送负载收集请求。为了避免多个节点选择同一目标节点,如果一个节点已经响应过其他节点的负载否则,状态改变为looking,开始选择一个合适的目标节点,统计所有计算任务的通信量,得到该节点与其他节点之间的通信量。收集请求,那么他的状态会变为peer,表示已经和其他节点形成一个节点对,之后它会拒绝当前的负载收集请求。处于looking节点都会按照排序向目标节点发送负载收集请求,直到找到一个目标节点成功响应其负载收集请求,其状态改变为peer,或者与当前的目标节点的通信量低于一个阈值threshold_2,它认为自己不再需要进行负载
均衡,并将自己的状态转变为noneed。特别的,如果某个节点处于looking状态,它也不会响应其他节点的负载收集请求,除非这这个节点当前的目标恰好也是发送请求的节点。其中,服务器状态的变化如图2所示。
30.其中,本节采用的图分割算法是metis算法。metis是一递归的图分割算法,首先将图粗化为一个具有较少节点数量的图,对这个图进行分割然后递归地对图的各个部分进行细化,得到最终的划分方案。在本节中,使用metis_pmetis_partgraphrecursive()函数进行划分,传入的主要参数为所有任务的计算负载、各个任务之间的通信负载,以及对于不均衡的容忍度。
31.本节的测试程序来源于使用charm 编写的kneighbor程序,是具有近邻通信模式的 benchmark。在此基准测试中,每个对象与固定大小的一组交换固定大小的消息每次迭代中的对象。每个对象被分配一个随机的计算负荷。在该测试程序中,计算对象之间的通信是影响程序执行时间的最关键的因素。
32.在实验对比中,分别比较以下几个算法:
33.1)commlb:基于贪心的集中式算法,对于每个任务,根据权重与其通信的k个任务放置在同一个节点上,来减少节点间的通信开销。
34.2)metislb:使用metis图分割算法的集中式均衡算法。
35.3)zoltanlb:使用zoltan图分割算法的集中式均衡算法。
36.4)greedylb:集中式的计算负载均衡算法,没有考虑到通信负载的分布。
37.首先本节比较了在kneighbor测试程序中,随着每个计算任务发送的消息大小的增加,程序的执行时间情况的对比。以没有负载均衡情况下的执行时间作为基准进行比较。其实验结果如图3所示,由于kneighbor测试程序的执行时间主要来自于对计算任务之间的互相通信,因此随着消息大小的增加,程序的执行时间也会增加。因此metislb、zoltanlb、commlb 等集中式的均衡算法,由于考虑到了节点之间的通信开销,能够有效减少节点之间的消息数量,因此使得程序的执行时间相比于不进行负载均衡花费的时间更短。而greedylb,没有考虑到计算任务之间的通信,因此相比于不进行均衡,并没有明显的提升,甚至由于负载均衡的额外开销导致性能的下降。而对于本节提出的distcommlb,虽然效果不如集中式的图分割算法,但是效果也能够比拟基于贪心的commlb算法,对于减少系统中的通信量也有比较良好的效果。此外,本节还统计了整个系统中的网络通信的总量,结果如图4所示,仍然是与不进行均衡的情况下进行对比。从图中可以看出,对于没有考虑通信负载的greedylb算法,由于负载均衡带来的额外通信量,相比于不进行均衡,会有更多的通信量,但是随着计算任务发送消息大小的增加,额外通信量所占的比例也在降低。本节提出的distcommlb虽然在效果上无法比拟集中式的图分割算法,但是相比以不进行均衡,仍然能够有效减少系统中的节点间通信量。
38.最后,为了证明distcommlb的可扩展性,本节比较了不同算法的执行时间随着系统中计算任务数量的增加的变化,其中结果如图5所示。其中单位为秒,可以看出,随着系统中计算任务数量的增加,集中式算法的执行时间明显增加,并且特别是对于基于图分割的集中式算法,执行时间很长。而对于本节所提出的distcommlb算法,由于是分布式的算法,每次图分割算法只会在2个节点之间进行,虽然随着任务数量增加,两个节点上任务的总量也在增加,因此会花费更多的时间,但是相比于集中式的算法,distcommlb的执行时间具有
明显的提升,因此具有更好的可扩展性。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献