负载平衡是分布式系统的一个重要研究领域, 节点间负载的不平衡会严重影响工作效率.在分布式系统中, 每个节点可多次提交不同类型的新任务并动态地加入和退出[1].处理大规模任务时, 将任务划分为多个子任务并分配到各个节点处理, 返回的结果由系统重新融合.若某些节点繁忙不能及时返回结果, 将严重影响系统性能.现有的负载平衡研究分为以下几个方面:1)通过使用典型的控制模型进行负载平衡[2].分布式控制模型的主要特征是节点之间可以自主地相互协调以进行任务分配.通过模型控制可以适应不同的系统规模, 并允许一些节点出现故障, 因此鲁棒性很高.但由于每个节点只能知道相邻节点的信息, 结果可能只是局部最优的.节点之间的协商会产生额外的计算成本.2)负载平衡中的一些典型的资源优化方法.其中, 自主资源优化方法[3]只考虑节点本身的资源, 忽略节点之间资源的协调, 该方法仅在大多数节点可以自主完成分配的任务的情况下才能很好地执行.基于资源的上下文优化方法[4]考虑了节点之间的协调, 适用于协作分布式系统, 但是这些优化方法需要大量的计算, 在大规模系统中会产生高成本.3)实现负载平衡可靠性有基于冗余的方法[5]和基于非冗余的方法[6].针对某些特殊情况, 使用启发式方法以最低的成本实现理论上可靠的性能.4)利用典型协调机制对异构节点之间进行协调以便实现负载平衡.异构节点之间的协调机制常用博弈论[7]和图论[8].节点的角色总是假定在任务分配和执行期间保持固定.节点可以动态地改变在系统中的角色, 根据自己的策略进行单独决策.5)根据网络结构的特征在不同的网络拓扑结构中实现负载平衡.网络结构影响了节点之间的协调以及执行任务.通常有两种网络结构:节点通过物理通信网络结构互连[9], 在任务分配中应考虑节点的资源和位置;节点通过虚拟交互网络结构互连[10].
本文结合脉冲切换系统模型和时滞系统模型的特点针对分布式动态负载平衡过程提出了一个时滞脉冲切换负载平衡模型.该模型是由4个连续的子系统构成的一个连续-离散系统.在进行负载迁移时, 根据本节点和其他所有节点的处理能力计算迁移比例, 只有空载和轻载节点接收迁移的负载, 同时兼顾了各状态的节点.节点状态改变时通过脉冲信号切换系统, 并在此时广播节点信息, 降低通信开销, 提高负载平衡的效率.
1 时滞脉冲切换负载平衡模型本系统包含多个连续的子系统, 子系统之间是离散的, 属于连续-离散系统.每个节点在不同时刻根据自身状态对应不同的子系统, 各个子系统在状态改变时触发切换.不同的子系统交替发生、相互作用, 最终使系统达到平衡状态, 并使性能得到改善.
1.1 时滞脉冲切换负载平衡过程描述分布式系统中一个典型的时滞脉冲切换负载均衡过程可由图 1来描述.节点2为重载节点, 它将过量负载迁移到轻载节点3和空载节点4上执行.最终各节点均处于适载状态, 系统达到平衡.
系统由n个节点Pi(0≤i≤n-1)组成.定义Pi的处理能力ai是Pi的核心数Nci, 频率Fi, 内存Mi和当前利用率Ui(t)的综合指标:
(1) |
其中:Ξi=Nci(Fi+εMi), ε=0.2;α=0.2;β=0.55.
定义1(节点状态判断依据):当节点Pi的负载分别满足条件wi < winf, winf < wi < wsup, wi>wsup或wi=0时, Pi为轻载、适载、重载或空载节点.其中, wsup=w′i(1+ξ), winf=w′i(1-ξ), ξ=0.05.
节点Pi的负载为wi(0≤i≤n-1), 在子系统的第k个驻留时间段[tk, tk+1)内所能处理的负载为理想负载w′i.系统启动时, 节点Pi将其状态和负载信息进行广播, 并收集其他节点的信息.节点Pi使用式(2)计算系统当前状态.
(2) |
当state=1时, 系统超载, 使用w′i=ωw′i对w′i进行处理, 则state转换为0.当state=0时, 使用时滞脉冲切换负载均衡模型(3)处理.
(3) |
其中:wi(t)∈Rn是系统的状态变量, 表示节点Pi的负载队列长度;σi(k)为节点Pi在第k个时间段[tk, tk+1)内被激活的子系统, tk+1-tk是子系统的驻留时间;ΓOLN, ΓMLN, ΓLLN和ΓELN表示重载、适载、轻载和空载状态分别对应的子系统σ1, σ2, σ3和σ4;σl(l=1, 2, …, 4)在[t0, t]内驻留的总时间为Tl;切换时刻序列满足0≤t0 < t1 < …tk < tk+1 < …;系统时滞τi>0;f是一个分段连续向量值函数, f(t, 0, 0)≡0, t∈R+;Δwi(tk+1)表示状态跃变;初值条件为wi(θ)=wi(t0);wi:[t0-τi, t0]→Rn除了有限个点t外是连续的, 而在t处满足wi(t+)和wi(t-)存在并相等;wi(t0)表示节点Pi在初始时刻负载队列的长度.
定义2(负载迁移规则):对于处于状态σi(k)和σj(k)的任意两个节点Pi和Pj, 负载按{
节点的ai不同, 每次迁移的负载量各不相同, 对节点性能的影响也各不相同.若按固定划分, 会使节点的状态发生频繁的转换. ai较小的节点应该比ai较大的节点每次接收的负载量要少, 因为其w′i较小,当超过w′i时, 系统的状态将发生变化.为了保证系统的稳定性, ai较大的节点每次迁移出的负载量不宜过大.因此, 使用式(4)计算适合的负载迁移比例pi.
(4) |
根据定义1判断节点的状态, 当节点Pi处于重载状态时, 除了处理自身任务和生成新任务外, 只将自身过量负载迁移给轻载和空载节点Pj,而不再接收其他节点迁移的负载.迁移过程按照负载迁移规则进行, 负载迁移比例根据式(4)计算.针对该过程使用控制理论建立子系统模型, 其状态空间具体描述如下:
(5) |
当节点Pj处于轻载状态时, 除了处理自身任务和生成新任务外, 只接收其他重载节点Pi迁移的负载, 而不再对自身的负载进行迁移.若接收到了迁移负载, 其状态空间具体描述为式(6).若没有接收到迁移负载, 则根据式(7)进行状态转换.
(6) |
当节点Pi处于适载状态时, 只处理自身任务和生成新任务, 既不接收其他节点迁移的负载, 也不对自身的负载进行迁移.其状态空间具体描述为
(7) |
当节点Pj处于空载状态时, 只接收其他重载节点Pi迁移的负载, 而自身没有可处理的任务, 也没有新任务生成, 也不迁移负载.若接收到了迁移负载, 其状态空间具体描述为式(8).若没有接收到迁移负载, 节点状态不改变.
(8) |
式(5)~(8)中:状态变量wi表示节点Pi的负载队列长度;输入变量ui表示单位时间内从节点Pi上迁移到其他节点上的过量负载;输出变量yi表示节点Pi上的过量负载;w′i表示节点Pi的理想负载队列长度;ki表示单位时间内负载平衡系统的闭环增益;pi表示节点Pi的负载迁移比例;ηij表示节点Pi到节点Pj的传输时延;νi, μi分别表示节点Pi的任务生成率和处理率, 使用式(9)和式(10)计算:
(9) |
(10) |
其中,ri∈R+, 其值由负载的固有属性确定.
2 时滞脉冲切换负载平衡算法1) 根据式(1)计算系统中节点Pi的处理能力ai.
2) 依据定义1判断节点Pi所处的状态, 并计算节点Pi的理想负载w′i.
3) 依据式(2)判断系统当前状态.当系统超载时, 对理想负载w′i进行处理.
4) 根据定义2对系统中处于ΓOLN状态的重载节点进行负载迁移.使用式(4)计算适合的负载迁移比例pi.根据式(11)计算单位时间内从节点Pi上迁移到节点Pj上的过量负载.
(11) |
5) 根据定义1判断节点Pi所处的状态, 如果系统中还存在重载节点, 返回步骤4).否则, 负载平衡过程结束.
动态负载平衡算法如下.
初始化:定义系统规模, 计算每个节点的理想负载和状态, 定义负载均衡的起始条件和结束条件.
当(重载节点数z >0)
{如果(重载节点Pi中包含的uij的数量u大于空载节点数k和轻载节点数q之和)
在传输时延η下, 节点Pi将每个大小为uij的负载传输给空载节点和轻载节点.
否则, 如果(重载节点Pi中包含的uij的数量u小于等于空载节点数k)
在传输时延η下, 节点Pi随机选择u个空载节点, 并将每个大小为uij的负载传输给这u个空载节点.
否则
在传输时延η下, 节点Pi随机选择u-k个轻载节点, 并将每个大小为uij的负载传输给这u-k个轻载节点和所有空载节点.
}
更新节点的信息, 输出结果.
3 实验结果与分析在Intel Core i7平台上对CloudSim仿真框架做出扩展并进行实验. CloudSim是墨尔本大学Rajkumar Buyya教授团队开发的云计算仿真器, 是一个通用、可扩展的新型仿真框架, 支持无缝建模和模拟, 对不同应用和服务模型的调度和分配策略的性能进行量化的比较, 达到控制使用云计算资源的目的[11].
实验环境:Win8操作系统, JDK1.8版本, CloudSim3.0.3版本, Eclipse 4.7.1a.根据实验要求, 对主机和VM相关参数进行配置, 如表 1所示.
按照CloudSim的实验步骤, 在创建DataCenter和PowerDataCenter时对其进行扩展, 实现所需的任务调度算法.
为了便于分析系统中各节点状态及队列长度的变化, 以4个节点为例进行分析说明. 4个节点的初始队列分别为w1=420, w2=980, w3=1500, w4=0.图 2描述了各个节点的状态及队列长度的变化.
从图 2中可以看到, 各节点状态及队列长度变化发生在T1=17.723 ms, T2=22.366 ms, T3=25.001 ms, T4=27.431 ms和T5=29.057 ms时刻.在初始时刻T0, 统计每个节点的瞬时负载信息和节点状态, 并判断系统状态, 根据式(2)对理想负载进行处理; 各节点线程计算本节点处理能力ai和理想负载w′i.初始时刻各节点分别处于适载、重载、轻载和空载状态.节点2分别给节点3和节点4迁移一个单位的负载u2(T1).迁移后在T1时刻节点4转变为轻载状态.但是由于节点3的处理能力远强于节点2, 所以接收到的一个单位的负载u2(T1)后不会对其状态产生影响.节点2继续给节点3和节点4迁移一个单位的负载u2(T2).由于节点2迁出单位变小, 因此在T2时刻的w2落差明显低于T1时刻, 此时没有轻载和空载节点.所以重载节点2不迁移负载.所有节点均处理自己的负载.到T3时刻, 节点1和4转变为轻载状态.节点2开始分别给这2个节点迁移一个单位的负载u2(T4).在T4时刻, 4个节点变为重载、适载、适载和适载状态.由于u1(T4)升高导致处理能力a1降低, 从而使w′降低, 因此节点1成为了重载节点.各节点均处理本节点的负载不迁移也不接收.到T5时刻, 系统中不存在重载节点, 达到平衡状态.
为了证明本模型和算法的有效性, 不仅与传统算法中的均分负载算法和二分负载算法进行比较, 还与使用典型的控制模型实现负载平衡的DDLB算法[1]进行比较, 系统的负载平衡时间如图 3所示.
从图 3中可以看出, 在不同规模下, 本模型算法所需的负载平衡时间均比其他算法少.二分负载算法中, 因为每次按网络中的节点数将网络划分为两个子网络, 然后按照两个子网络的处理速度之比将负载进行迁移, 递归上述过程, 直到系统达到平衡状态, 该过程对负载多次重复迁移, 产生较大的数据传输代价.与其比较, 本模型负载平衡时间减少了62.21%.均分负载算法和DDLB算法均没有考虑负载迁移节点与其他节点的处理能力, 也没有考虑负载接收节点的状态, 导致过量负载被多次迁移, 但是与二分负载算法相比迁移次数减少很多.与均分负载算法和DDLB算法相比, 本模型负载平衡时间分别减少了18.11%和9.14%.
负载平衡过程中, 在负载进行迁移时所产生的数据传输开销对系统最终达到负载平衡所需的时间影响较大.图 4为几种负载平衡算法的数据传输代价的比较图.
从图 4中可以看出, 本模型所采用的算法在各种规模下的数据传输开销都是最小的, 这是因为在负载迁移过程中, 以每个节点的处理能力和节点当前所处的状态为依据, 将重载节点的负载按照合适的比例迁移到相应的节点上, 既不会将负载迁移到其他重载节点上, 同时尽量避免了负载的重复迁移, 降低了系统的数据传输代价.DDLB算法中每个重载节点以增益k将过量负载按固定划分比例平均迁移给其他所有节点, 同时接收其他节点迁移出的过量负载, 导致系统中每个节点频繁迁出迁进负载, 使重载节点负担加重, 但是它重复迁移的负载比均分负载和二分负载算法少.
4 结论本文采用控制理论思想对分布式动态负载均衡过程提出了一个基于状态空间描述的时滞脉冲切换负载平衡模型.对系统中每个节点的不同状态建立对应的子系统.在进行负载迁移时, 综合考虑本节点和其他所有节点的处理能力, 不会导致迁移后出现更多的重载节点, 有效平衡节点负载, 提高了负载均衡的效率.通过实验分析, 本模型算法使负载平衡时间平均减少29.82%.今后将采用Lyapunov泛函方法对本系统进行稳定性分析, 分析其对负载平衡的影响.
[1] |
Meng Q Y, Qiao J Z, Lin S K, et al.A delay-based dynamic load balancing method and its stability analysis and simulation[C]//Proceedings of European Conference on Parallel Computing.Ischia, 2010: 192-203.
|
[2] |
Shah R, Veeravalli B, Misra M.
On the design of adaptive and decentralized load-balancing algorithms with load estimation for computational grid environments[J]. IEEE Transactions on Parallel and Distributed Systems, 2007, 18(12): 1675–1686.
DOI:10.1109/TPDS.2007.1115 |
[3] |
Xu J, Lam A, Li V.
Chemical reaction optimization for task scheduling in grid computing[J]. IEEE Transactions on Parallel and Distributed Systems, 2011, 22(10): 1624–1631.
DOI:10.1109/TPDS.2011.35 |
[4] |
Jiang Y C, Zhou Y F, Li Y P.
Reliable task allocation with load balancing in multiplex networks[J]. ACM Transactions on Autonomous and Adaptive Systems, 2015, 10(1): 1–32.
|
[5] |
Kang Q M, He H, We J.
An effective iterated greedy algorithm for reliability-oriented task allocation in distributed computing systems[J]. Journal of Parallel and Distributed Computing, 2013, 73(8): 1106–1115.
DOI:10.1016/j.jpdc.2013.03.008 |
[6] |
Faragardi H R, Shojaee R, Keshtkar M A, et al.Optimal task allocation for maximizing reliability in distributed real-time systems[C]//Proceedings of the IEEE/ACIS 12th International Conference on Computer and Information Science.Niigata, 2013: 513-519.
|
[7] |
Subrata R, Zomaya A, Landfeldt B.
Game-theoretic approach for load balancing in computational grids[J]. IEEE Transactions on Parallel and Distributed Systems, 2008, 19(1): 66–76.
DOI:10.1109/TPDS.2007.70710 |
[8] |
Bajaj R, Agrawal D.
Improving scheduling of tasks in a heterogeneous environment[J]. IEEE Transactions on Parallel and Distributed Systems, 2004, 15(2): 107–118.
DOI:10.1109/TPDS.2004.1264795 |
[9] |
Jiang Y C, Li Z F.
Locality-sensitive task allocation and load balancing in networked multiagent systems:talent versus centrality[J]. Journal of Parallel and Distributed Computing, 2011, 71(6): 822–836.
DOI:10.1016/j.jpdc.2011.01.006 |
[10] |
Jiang Y C, Zhou Y F, Wang W Y.
Task allocation for undependable multiagent systems in social networks[J]. IEEE Transactions on Parallel and Distributed Systems, 2013, 24(8): 1671–1681.
DOI:10.1109/TPDS.2012.249 |
[11] |
Kumar R, Sahoo G.
Cloud computing simulation using CloudSim[J]. International Journal of Engineering Trends and Technology, 2014, 8(2): 82–86.
DOI:10.14445/22315381/IJETT-V8P216 |