发明名称 一种大规模行为模拟应用中的负载均衡方法
摘要 本发明公开了一种大规模行为模拟应用中的负载均衡方法,包括以下步骤:建立两个哈希表,其中一个用于存放块中的所有模拟对象,另一个用于存放域中的所有块信息,并对该哈希表进行初始化,重复增量计算各域的负载,直到大规模行为模拟应用结束为止,以生成增量计算负载后的域D,对域D进行划分以生成域集合D<sub>set</sub>,其中划分后的域集合D<sub>set</sub>中每一个域D2的负载均为T1,且其中的块都是相互连接的,将域D和其在划分后的域集合D<sub>set</sub>中的相邻域进行合并,其中合并后的域D的负载为T1,且域D中的块都是相互连接的,执行各数据处理器之间的域调度,实现数据处理器的负载均衡。本发明能够解决大规模行为模拟应用中现有方法难以有效消除的负载不均衡问题。
申请公布号 CN103491018B 申请公布日期 2016.04.20
申请号 CN201310398936.X 申请日期 2013.09.04
申请人 华中科技大学 发明人 廖小飞;金海;张宇
分类号 H04L12/803(2013.01)I 主分类号 H04L12/803(2013.01)I
代理机构 华中科技大学专利中心 42201 代理人 朱仁玲
主权项 一种大规模行为模拟应用中的负载均衡方法,是应用在一种负载均衡器中,该负载均衡器用于迁移其所在数据处理器中数据管理器的数据,以实现数据处理器之间的负载均衡,其特征在于,所述方法包括以下步骤:(1)建立两个哈希表,其中一个用于存放块中的所有模拟对象,另一个用于存放域中的所有块信息,并对该哈希表进行初始化;(2)重复增量计算各域的负载,直到大规模行为模拟应用结束为止,以生成增量计算负载后的域D;本步骤包括以下子步骤:(2‑1)判断是否所有新一轮被处理完的模拟对象都已经被处理过,如果是则进入步骤(2‑8),否则进入步骤(2‑2);(2‑2)获取各域中被处理后的模拟对象O的新位置信息(O<sub>x</sub>,O<sub>y</sub>,O<sub>z</sub>);(2‑3)根据模拟对象的新位置信息并按照以下公式计算此模拟对象所在块的编号K<sub>new</sub>:<img file="re-FDA0000860381300000011.GIF" wi="771" he="271" />其中N<sub>x</sub>,N<sub>y</sub>和N<sub>z</sub>是用户定义的沿大规模行为模拟应用模拟空间x,y和z轴的块数量,S<sub>x</sub>、S<sub>y</sub>和S<sub>z</sub>是块分别沿x,y和z轴的大小;(2‑4)判断计算所得的块编号K<sub>new</sub>和被处理后的模拟对象O所在的块编号是否相同,如果不同,则进入步骤(2‑5),否则返回步骤(2‑1);(2‑5)将此模拟对象从旧编号为K<sub>old</sub>的块中取出,并将此模拟对象插入编号为K<sub>new</sub>的块中,并更新块表中编号为K<sub>old</sub>和编号为K<sub>new</sub>的块的模拟对象数信息和模拟对象列表信息;(2‑6)判断编号为K<sub>old</sub>和编号为K<sub>new</sub>的块的模拟对象数量变化值Δ|P|是否超过阈值T,如果超过,就进入步骤(2‑7),否则返回步骤(2‑1);(2‑7)增量更新编号为K<sub>old</sub>和编号为K<sub>new</sub>的块所在域的负载和该域相邻域的负载,然后返回步骤(2‑1);(2‑8)判断是否所有域都已经处理完毕,若是则进入步骤(5),否则进入步骤(2‑9);(2‑9)判断所有增量计算负载后的域D的负载是否大于T<sub>max</sub>,如果是,则进入步骤(3),否则进入步骤(2‑10);(2‑10)判断所有增量计算负载后的域D的负载是否小于T<sub>min</sub>,如果是,则进入步骤(4),否则返回步骤(2‑8);(3)对域D进行划分以生成域集合D<sub>set</sub>,其中划分后的域集合D<sub>set</sub>中每一个域D2的负载均为T1,且其中的块都是相互连接的;本步骤包括以下子步骤:(3‑1)新建一个域D2,从域D的边缘取出一块负载小于T1的块P1,并将其插入域D2;(3‑2)获取域D中所有与块P1相连接的块集合P<sub>set</sub>;(3‑3)从块集合P<sub>set</sub>中取出块P2;(3‑4)判断块P2插入域D2后,D2的负载是否少于T1,如果是,则进入步骤(3‑5),否则进入步骤(3‑7);(3‑5)将块P2插入D2,并更新D2的负载;(3‑6)获取D中与P2相邻的块集合,并将其并入集合P<sub>set</sub>,然后返回步骤(3‑3);(3‑7)将D2插入结果域集合D<sub>set</sub>;(3‑8)判断D的负载是否仍然大于T<sub>max</sub>,如果是,则返回步骤(3‑1),否则返回步骤(2‑8);(4)将域D和其在划分后的域集合D<sub>set</sub>中的相邻域进行合并,其中合并后的域D的负载为T1,且域D中的块都是相互连接的;(5)执行各数据处理器之间的域调度,实现数据处理器的负载均衡, 其中同一个数据处理器的各个域相互连接;(6)通知任务执行器开始大规模行为模拟应用新一轮的执行;(7)判断大规模行为模拟程序新一轮计算是否结束,如果是,则进入步骤(8),否则返回步骤(7);(8)判断大规模行为模拟程序是否已经达到用户定义的结束条件,如果是,则结束负载均衡器的运行,否则返回步骤(2)。
地址 430074 湖北省武汉市洪山区珞喻路1037号