CN113626166A - Gaia系统中基于资源反馈的负载均衡任务调度方法及系统 - Google Patents

Gaia系统中基于资源反馈的负载均衡任务调度方法及系统 Download PDF

Info

Publication number
CN113626166A
CN113626166A CN202110890110.XA CN202110890110A CN113626166A CN 113626166 A CN113626166 A CN 113626166A CN 202110890110 A CN202110890110 A CN 202110890110A CN 113626166 A CN113626166 A CN 113626166A
Authority
CN
China
Prior art keywords
resource
load
cluster
node
firefly
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.)
Pending
Application number
CN202110890110.XA
Other languages
English (en)
Inventor
李文佳
王国仁
赵宇海
郑军
李博扬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN202110890110.XA priority Critical patent/CN113626166A/zh
Publication of CN113626166A publication Critical patent/CN113626166A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开了Gaia系统中基于资源反馈的负载均衡任务调度方法及系统,能够提高集群资源利用率,同时减少系统任务的执行时间。该方法可以在集群出现负载不均时,重新分配每个资源节点的任务,提高集群资源利用率的同时减少系统任务的执行时间。该方法通过实现的实时监控系统Monitor来监控资源节点的负载情况,并根据区域划分算法把集群划分为过负载、轻负载、近饱和以及差饱和四个区域,由于过负载区域的机器负载过重而影响整个集群的执行效率,因此用基于人工萤火虫算法的调度策略,把过负载区域中资源节点的任务调度给差饱和区域的资源节点,提高了系统的集群利用率、执行效率以及吞吐量效率。

Description

Gaia系统中基于资源反馈的负载均衡任务调度方法及系统
技术领域
本发明涉及大数据处理技术领域,具体涉及一种Gaia系统中基于资源反馈的负载均衡任务调度方法。
背景技术
近年来,伴随着数据的爆炸式增长与多种多样需求的出现,大数据计算系统的发展也受到越来越多的重视,大数据系统中存在着批计算和流计算两种计算方式,这两种数据计算方式往往需要不同的大数据计算框架来实现,这不仅耗费着维护人员的成本也不利于用户需求的开发。Gaia是基于以上背景,立足于国家重点研发计划,实现的批流融合大数据计算系统。
任务调度问题是大数据计算系统中的关键问题。Gaia系统中的任务调度策略是采用轮询调度算法,这种调度算法把任务按顺序分配给资源节点,既没有考虑每个任务的大小,也没有考虑资源节点的性能差异,这就造成了严重的数据倾斜,导致集群出现执行效率偏低、吞吐量效果较差、资源利用率不高等问题。Gaia系统中任务运行采用多线程模式,可以把复杂任务通过拆分处理来提高系统的执行效率,但是在分布式计算系统中,任务并不是被等量分割,由于作业被拆分后分配给每个资源节点的任务量大小差异性较大,并且每个资源节点的性能无法保持一致,因此在分布式计算系统中经常会出现负载不均的情况,即有的资源节点上承担了大量的任务来不及处理,而另外的资源节点出现空闲的情况。
现有方法对忽略了任务的异构性,容易导致集群出现执行效率偏低、吞吐量效果较差、资源利用率不高等问题。
发明内容
有鉴于此,本发明提供了一种Gaia系统中基于资源反馈的负载均衡任务调度方法,能够提高集群资源利用率,同时减少系统任务的执行时间。
为达到上述目的,本发明的技术方案包括如下步骤;
步骤1、针对Gaia集群系统中的所有资源节点进行实时资源性能监控,并计算每个资源节点的负载值,进而得到整个Gaia集群的负载值;
将每个资源节点的负载值和集群的负载均衡值存入MongoDB数据库中;
步骤2、依据每个资源节点相对于整个Gaia集群的负载值的偏移量以及预先设定的高低阈值,对Gaia集群进行区域划分,将整个Gaia集群划分为过负载、轻负载、近饱和和差饱和四个区域,依次记为UPGroup、LPGroup、NSGroup以及 DSGroup;
步骤3、基于人工萤火虫算法把过负载区域UPGroup中的节点j上的任务i 调度到差饱和区域DSGroup上的节点p上,UPGroup上按照负载值的大小做降序排序,依次调度到DSGroup上,直到集群负载值C_Load小于预设阈值β;
在人工萤火虫算法中把过负载区域UPGroup中的节点j上的任务i作为萤火虫,DSGroup区域上的节点p作为萤火虫的目标区域,任务的目标函数由UPGroup 上的节点j的任务数量、节点j中的任务i的优先级、目标节点p的负载值以及目标节点p上高优先级任务的数量共同决定。
进一步地,步骤1,具体包括如下步骤:
步骤1.1:Gaia集群中的资源监控系统每10秒统计一次Gaia集群中各个资源节点的CPU核数、CPU利用率、内存利用率以及总内存大小的性能指标,四个指标构成的综合值来代表当前资源节点的实时资源性能。
步骤1.2:根据四个性能指标计算出资源节点的负载值。
步骤1.3:把计算得出的资源节点的负载值放入MongoDB数据库中。
步骤1.4:基于每个资源节点的负载值计算得到整个Gaia集群的负载值,放入MongoDB数据库中,判断如果Gaia集群的负载值小于设定的均衡阈值则负载均衡任务调度方法结束,否则,进入步骤2。
进一步地,步骤2,具体包括如下步骤:
步骤2.1:根据Gaia集群中的各资源节点的负载值计算出Gaia集群的平均负载值。
步骤2.2:根据各资源节点的负载值和Gaia集群的平均负载值,计算出每个资源节点的负载偏差以及相对于阈值的偏移量。
步骤2.3:设定Gaia集群的高阈值和低阈值,将所有资源节点根据自身偏移量分别分配到过负载、差负载、过饱和以及近饱和四个区域中,依次记为UPGroup、 LPGroup、NSGroup以及DSGroup;Gaia集群的高低阈值是启发式经验值。
进一步地,设定高阈值为h_threshold≥0。
如果资源节点j的偏移量大于等于高阈值h_threshold,则节点j属于过负载UPGroup区域。
如果资源节点j的偏移量小于高阈值h_threshold且大于等于0,则节点j属于轻负载LPGroup区域。
设定低阈值l_threshold≤0。
如果资源节点j的偏移量小于低阈值l_threshold,则节点j属于差饱和 DSGroup区域。
如果资源节点j的偏移量大于低阈值l_threshold且小于0,则节点j属于近饱和NSGroup区域。
进一步地,步骤3包括如下具体步骤:
步骤3.1:把分配到过负载区域UPGroup的资源节点按照负载值由高到低排序,同时一个资源节点中的任务按照优先级由高到底进行排序。
步骤3.2:把位于过负载区域UPGroup的资源节点中位于等待队列中的任务依次调度到差饱和区域DSGroup。
步骤3.3:每10秒从MongoDB数据库中读取当前的实时资源性能指标。
步骤3.4:更新当前的区域划分,并重复步骤3.1、3.2和3.3,直到过负载区域UPGroup为空或者差饱和区域DSGroup为空为止,负载均衡任务调度方法完成。
进一步地,步骤3包括如下具体步骤:
S301:输入萤火虫集合N={n1,n2,…,nm}、m为萤火虫总数;迭代次数M以及上一节区域划分算法产生的过负载区域UPGroup、轻负载区域LPGroup、近饱和区域NSGroup、差饱和区域DSGroup集合,把UPGroup中的任务按照负载值高低进行排序,把UPGroup中的任务设定为萤火虫,DSGroup区域设定为发光区域,在发光区域中寻找最优解并把任务调度到最优的资源节点上;首先初始化萤火虫的步长s、荧光素的消失率ρ、荧光素的更新率γ以及决策域的更新率β,对于萤火虫集合中的每个萤火虫初始化其荧光素为l0、初始决策域为r0以及初始位置为xi(t)。
萤火虫i在时刻t的荧光素值为lt(t),ρ代表萤火虫中荧光色的消失率,γ代表荧光素的更新率,f(xi(t))表示萤火虫i在时间t时位置的目标函数值,li(t-1)为萤火虫i在时刻t-1的荧光素值;
li(t)=(1-ρ)li(t-1)+γf(xi(t)),i=1,2,…,m (7)
萤火虫i在t时刻的邻居集合Gi(t),其中xi(t)表示萤火虫i在t时刻所在的位置,
Figure RE-GDA0003281860840000041
表示萤火虫i在时间t时决策域范围,xj(t)表示萤火虫j在t时刻所在的位置,萤火虫j在时刻t的荧光素值为lj(t);
Figure RE-GDA0003281860840000042
萤火虫在时间t时的决策域
Figure RE-GDA0003281860840000051
更新公式为公式(9),其中rs表示萤火虫的感知域范围,β表示决策域的更新率,gt-1表示萤火虫在t-1时刻的邻域阈值, Gi(t-1)表示萤火虫在t-1时的邻域;
Figure RE-GDA0003281860840000052
对于集合中的萤火虫i需要分别根据公式(7)、公式(8)以及公式(9)去更新萤火虫的荧光素值、邻域集合以及决策域半径,对于当前萤火虫i的邻域集合Gi(t)去计算得到每个萤火虫i移向邻域集合Gi(t)内每个个体j的概率pij(t),并选出概率最大的j方向作为萤火虫i的移动方向,更新位置以及萤火虫t+1时刻的决策域范围
Figure RE-GDA0003281860840000053
直到完成迭代次数M,选出全局最优解,即差饱和区域中最合适的资源节点;当UPGroup和DSGroup都不为空时,把过负载区域UPGroup中的资源节点根据负载值由高到低进行排序,并把该资源节点中任务按照优先级进行由高到低的排序,对于UPGroup中的节点对应的分配任务模拟为萤火虫,DSGroup定义为萤火虫的区域移动范围。
S302:把位于过负载区域节点中位于等待队列中的任务依次调度到差饱和区域,把萤火虫i移到全局最优解的位置;其中萤火虫i对应UPGroup中的任务 i,全局最优解的位置对应DSGroup中的资源节点j。
S303:每10秒从MongoDB读取当前的资源性能指标;此时系统实时性能发生改变,从MongoDB数据库中获取实时的资源节点负载值信息,并根据资源节点当前的任务队列的数量区域重新进行区域分区。
S304:更新当前的区域划分,并重复S301、S302和S303,直到过负载区域为空或者差饱和区域为空为止,整体算法调度完成。
本发明还提供了一种Gaia系统中基于资源反馈的负载均衡任务调度系统,包括实时资源监控模块、区域划分模块以及调度模块。
实时资源监控模块,用于针对Gaia集群系统中的所有资源节点进行实时资源性能监控,并计算每个资源节点的负载值,进而得到整个Gaia集群的负载值;并将每个资源节点的负载值和集群的负载均衡值存入MongoDB数据库中。
区域划分模块,用于依据每个资源节点相对于整个Gaia集群的负载值的偏移量以及预先设定的高低阈值,对Gaia集群进行区域划分,将整个Gaia集群划分为过负载、轻负载、近饱和和差饱和四个区域,依次记为UPGroup、LPGroup、 NSGroup以及DSGroup。
调度模块,基于人工萤火虫算法把过负载区域UPGroup中的节点j上的任务 i调度到差饱和区域DSGroup上的节点p上,UPGroup上按照负载值的大小做降序排序,依次调度到DSGroup上,直到集群负载值C_Load小于预设阈值β。
在人工萤火虫算法中把过负载区域UPGroup中的节点j上的任务i作为萤火虫,DSGroup区域上的节点p作为萤火虫的目标区域,任务的目标函数由UPGroup 上的节点j的任务数量、节点j中的任务i的优先级、目标节点p的负载值以及目标节点p上高优先级任务的数量共同决定。
进一步地,实时资源监控模块包括实时监控集群性能单元、计算负载值单元以及MongoDB存储单元。
实时监控集群性能单元,每10秒统计一次Gaia集群中各个资源节点的CPU 核数、CPU利用率、内存利用率以及总内存大小的性能指标,四个指标构成的综合值来代表当前资源节点的实时资源性能。
计算负载值单元,用于根据四个性能指标计算出资源节点的负载值,并基于每个资源节点的负载值计算得到整个Gaia集群的负载值。
MongoDB存储单元,用于存储资源节点的负载值和整个Gaia集群的负载值。
实时资源监控模块在判断如果Gaia集群的负载值大于或等于设定的均衡阈值时,调用区域划分模块。
有益效果:
1、本发明提出基于资源反馈的负载均衡任务调度方法。该方法可以在集群出现负载不均时,重新分配每个资源节点的任务,提高集群资源利用率的同时减少系统任务的执行时间。该方法通过实现的实时监控系统Monitor来监控资源节点的负载情况,并根据区域划分算法把集群划分为过负载、轻负载、近饱和以及差饱和四个区域,由于过负载区域的机器负载过重而影响整个集群的执行效率,因此用基于人工萤火虫算法的调度策略,把过负载区域中资源节点的任务调度给差饱和区域的资源节点,提高了系统的集群利用率、执行效率以及吞吐量效率。
2、本发明设计了一个实时监控系统Monitor,该系统可以实时监控每个从节点(Slave)的CPU核数、CPU利用率、内存利用率、总内存大小等性能指标,从而获取每个资源节点的负载大小。
2、本发明提出了一种按照资源节点负载大小进行区域划分的策略。把整个 Gaia集群中每个资源节点按照负载值相对于集群平均负载的高低,划分到过负载、轻负载、近饱和和差饱和四个区域,将整个集群划分为需要减少负载压力、可以增加负载压力以及资源节点刚好可以处理掉这些负载的区域。
附图说明
图1为本发明采用一种Gaia系统中基于资源反馈的任务调度方法的整体框架示意图;
图2为本发明采用一种Gaia系统中基于资源反馈的任务调度方法的整体流程示意图;
图3为本发明实施例中一种Gaia系统中基于资源反馈的任务调度方法的具体运行过程示意图;
图4为本发明实施例中实时资源监控阶段的执行过程示意图;
图5为本发明实施例中MongoDB数据执行过程示意图;
图6为本发明实施例中区域划分阶段的执行过程示意图;
图7为本发明实施例中基于人工萤火虫的任务调度算法阶段的执行过程示意图;
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本实施例将一种基于资源反馈的负载均衡任务调度方法运用到大数据分析系统Gaia中,Gaia是一个面向多计算模型混合并存的高时效、可扩展的新一代大数据分析系统,任务调度是分布式计算中的关键问题之一,因而如何提高Gaia 任务调度的效率是大数据处理领域所必须要解决的挑战。本实施例将结合Gaia 平台自身的特点,将一种基于资源反馈的负载均衡任务调度方法运用进去,减少集群负载不均的情况,并提高任务的执行效率、吞吐量效率以及集群的整体资源利用率。
本实施例中一种Gaia系统中基于资源反馈的负载均衡任务调度方法,其整体框架如图1所示,本发明先通过实时监控集群的性能情况,得到每个资源节点的负载值以及整个集群的负载均衡值,并把负载值信息实时存储到MongoDB 数据库中,集群的负载均衡值越小,则说明整个集群的负载越平均。因此当负载均衡值小于阈值时,则说明集群处于均衡状态,算法结束;否则,按照区域划分算法中的原则划分整个集群,把集群分成过负载、轻负载、近饱和以及差饱和四个区域,最后采用基于人工萤火虫算法的任务调度算法结合任务的优先级把过负载区域的任务迁移到差饱和区域中的资源节点,以降低整个集群的负载均衡值,提高任务的整体执行效率。本实施例中的具体模块包括实时资源监控、区域划分以及基于人工萤火虫的负载均衡任务调度三个部分。
本发明实施例的具体运行过程如图2所示,包括如下步骤;
步骤1、针对Gaia集群系统中的所有资源节点进行实时资源性能监控,并计算每个资源节点的负载值,进而得到整个Gaia集群的负载值。
将每个资源节点的负载值和集群的负载均衡值存入MongoDB数据库中。步骤1用于为后期的区域划分阶段和基于人工萤火虫算法的任务调度阶段收集重要的系统实时信息,具体分为如下具体步骤:
步骤1.1:资源监控系统每10秒统计一次集群中各个节点的CPU核数、CPU 利用率、内存利用率以及总内存大小的性能指标,这四个指标反映节点当前的负载能力,因此可利用CPU核数、CPU利用率、内存利用率、总内存大小这四个指标构成的综合值来代表该资源节点的实时性能;
步骤1.2:根据这些性能指标计算出该节点的负载值,负载值代表该节点单位时间内可以运行的数据量大小,如果负载值越小,则表示该节点承受负载的能力越好,即可以承受更多的任务;反之,负载值越大,则该节点承受负载的能力越差,需要减少该节点执行的任务。
步骤1.3:把计算得出的负载值信息放入MongoDB数据库中。
步骤1.4:基于每个资源节点的负载值可以计算得到整个集群的负载值,如果集群负载值小于阈值,则代表此时集群负载处于均衡状态,算法结束,否则,进入区域划分阶段。
步骤2、依据每个资源节点相对于整个Gaia集群的负载值的偏移量以及预先设定的高低阈值,对Gaia集群进行区域划分,将整个Gaia集群划分为过负载、轻负载、近饱和和差饱和四个区域,依次记为UPGroup、LPGroup、NSGroup以及 DSGroup。
步骤2包括如下具体步骤:
步骤2.1:根据集群中的负载值大小可以计算出集群的平均负载值。
步骤2.2:根据步骤2.1得到的个体负载值和整体平均负载值可以计算出每个资源节点的负载偏差以及相对于阈值的偏移量。
步骤2.3:将所有资源节点根据本身的偏移量以及集群的高低阈值对应关系分配到过负载、差负载、过饱和以及近饱和四个区域中,集群的高低阈值是启发式经验值。
步骤3、基于人工萤火虫算法把过负载区域UPGroup中的节点j上的任务i 调度到差饱和区域DSGroup上的节点p上,UPGroup上按照负载值的大小做降序排序,依次调度到DSGroup上,直到集群负载值C_Load小于预设阈值β;
在人工萤火虫算法中把过负载区域UPGroup中的节点j上的任务i作为萤火虫,DSGroup区域上的节点p作为萤火虫的目标区域,任务的目标函数由UPGroup 上的节点j的任务数量、节点j中的任务i的优先级、目标节点p的负载值以及目标节点p上高优先级任务的数量共同决定。
对于从上一个区域划分阶段得到的过负载、差负载、近饱和以及差饱和四个区域,分配到过负载区域的资源节点代表这个资源节点承担的负载过大,分配到差负载和近饱和代表这个资源节点的负载处于可以承担的范围之内,分配到差饱和区域代表本节点的资源空闲比较大,能够承受更多的任务;
步骤3.1:把分配到过负载区域节点按照负载值由高到低排序,同时一个节点中的任务按照优先级由高到底进行排序;
步骤3.2:把位于过复杂区域节点中位于等待队列中的任务依次调度到差饱和区域;
步骤3.3:每10秒从MongoDB读取当前的资源性能指标;
步骤3.4:更新当前的区域划分,并重复步骤3.1、3.2和3.3,直到过负载区域为空或者差饱和区域为空为止,整体算法调度完成。
实施例1
本发明实施例中针对Gaia系统中基于资源反馈的负载均衡任务调度方法,包括以下步骤:
步骤1:实时资源监控阶段,为后期的区域划分阶段和基于人工萤火虫算法的任务调度阶段收集重要的系统实时信息,实时资源监控阶段的执行过程如图4 所示,本实施例集群中共有6个资源节点;
步骤1.1:资源监控系统每10秒对每个资源节点统计一次实时资源性能数据,而在计算资源中最具代表性的是CPU核数、CPU使用率、内存使用率以及总内存大小,这四个指标反映节点当前的负载能力,因此可利用CPU核数、CPU 利用率、内存利用率、总内存大小这四个指标构成的综合值来代表该资源节点的实时性能,资源节点性能指标的计算如公式(1)所示,其中C1、C2为常数, Core_Numj表示资源节点j的CPU核数,ω1j表示资源节点j的CPU利用率,ω2j表示资源节点j的内存利用率,ω3j表示资源节点j的总内存大小,资源节点的性能指标Metricj由CPU核数、CPU利用率和空闲内存大小决定,Metricj作归一化处理;
Figure RE-GDA0003281860840000111
步骤1.2:根据这些性能指标通过公式计算每个资源节点的负载值,进而得到整个集群的负载均衡值,负载值代表该资源节点上任务负载量相对于该节点当前性能的承担能力,如果负载值越小,则表示该节点承受负载的能力越好,即可以承受更多的任务;反之,负载值越大,则该节点承受负载的能力越差,需要减少该节点执行的任务,负载值的定义如公式2所示。TaskNumj表示资源节点j上的任务队列中的任务数量,Metricj代表资源节点j的性能指标,Metricj越大,代表该资源性能越好,可以在单位时间内处理更多的任务,反之,则代表该资源的性能越差,在单位时间内处理的任务越少,集群负载平均值定义如公式3所示;
Figure RE-GDA0003281860840000121
Figure RE-GDA0003281860840000122
步骤1.3:把计算得出的负载值信息放入MongoDB数据库中,MongoDB任务的实际执行过程如图5所示,对于应用程序而言,它只知道连接了一个mongod, mongod是用来控制分片集群和提供查询的路由器。mongod路由器中存储了数据和片的对应关系,并负责数据请求的分发,当mongod回应请求后,路由器就会将所有数据收集并返回给客户端;
步骤1.4:基于每个资源节点的负载值可以计算得到整个集群的负载值,如果集群负载值小于阈值,则代表此时集群负载处于均衡状态,算法结束,否则,对集群中的每个资源节点j,根据监控和管理Java虚拟机(JVM)的管理接口的 ManagementFactory管理工厂类中的getOperatingSystemMXBea方法去获取资源节点底层的性能指标,并计算节点j的CPU核数Core_Numj、CPU利用率ω1j、空闲内存量ω2j,集群负载值表示整个集群的负载均衡的程度,如公式4所示,如果集群负载值C_Load小于阈值β,则说明集群整体负载处于均衡状态,即算法结束;否则,集群负载值越大,说明集群负载不均的程度越高,此时需要将每个节点的负载值和集群负载值存入MongoDB数据库中,为下一阶段的区域划分以及任务重新调度做准备;
Figure RE-GDA0003281860840000123
步骤2:区域划分阶段,将整个集群划分为过负载、轻负载、近饱和和差饱和四个区域,依次记为UPGroup、LPGroup、NSGroup以及DSGroup;区域划分阶段的执行过程如图6所示;在本实施例中集群由6个TaskManager组成,根据上一节提出的资源监控系统,每个TaskManager的实时负载值都存储在 MongoDB数据库中,每10秒从该数据库中重新提取当前资源中每个节点的负载值loadj以及集群的负载值C_Load,并计算得到每个节点相对于集群平均负载的偏移量,该实例中TaskManager 1、TaskManager 2、TaskManager 3、TaskManager 4、TaskManager 5以及TaskManager 6的偏移量分别是0.91、0.71、0.81、0.13、 0.21、0.88,集群的高阈值为0.83低阈值为0.27,根据区划划分算法,分配结果如图4右图所示,TaskManager 1、TaskManager 6被分配到UPGroup,TaskManager 2和TaskManager 3被分配到NSGroup,TaskManager 4、TaskManager 5被分配到 DSGroup。
步骤2.1:计算每个资源节点的负载值loadj和集群平均负载
Figure RE-GDA0003281860840000131
的差值δj,如公式5所示;
Figure RE-GDA0003281860840000132
步骤2.2:根据步骤2.1得到的个体负载值和整体平均负载值可以计算出每个资源节点的负载偏差以及相对于阈值的偏移量;
步骤2.3:将所有资源节点根据本身的偏移量以及集群的高低阈值对应关系分配到过负载、差负载、过饱和以及近饱和四个区域中,集群的高低阈值是启发式经验值,通过定义偏移量offset来划分集群的区域,如公式6所示,如果资源节点j的偏移量大于等于高阈值h_threshold(h_threshold≥0),则节点j属于过负载UPGroup区域;如果资源节点j的偏移量小于高阈值h_threshold且大于等于0,则节点j属于轻负载LPGroup区域;如果资源节点j的偏移量小于低阈值 l_threshold(l_threshold≤0),则节点j属于差饱和DSGroup区域;如果资源节点 j的偏移量大于低阈值l_threshold且小于0,则节点j属于近饱和NSGroup区域;
offsetj=δj-β,j=1,2,…m (6)
步骤3:基于人工萤火虫算法的任务调度阶段,该任务调度阶段的执行过程如图7所示,基于上一节的区域划分算法把过负载区域UPGroup中的节点j上的任务i按照基于人工萤火虫算法的任务调度策略调度到差饱和区域DSGroup上的节点p上,UPGroup上按照负载值的大小做降序排序,依次调度到DSGroup上,直到集群负载值C_Load小于阈值β,在该算法中把任务i定义为萤火虫,DSGroup 区域上的节点p定义为萤火虫的目标区域,任务的目标函数由UPGroup上的节点 j的任务数量、节点j中的任务i的优先级、目标节点p的负载值以及目标节点p 上高优先级任务的数量共同决定;
令N={n1,n2,…,nm}为萤火虫的集合,初始化每个萤火虫的荧光素为l0,决策域为r0。萤火虫i在时刻t的荧光素值如公式7所示,ρ代表萤火虫中荧光色的消失率,γ代表荧光素的更新率,f(xi(t))表示萤火虫i在时间t时位置的目标函数值。
li(t)=(1-ρ)li(t-1)+γf(xi(t)),i=1,2,…,m (7)
萤火虫i在t时刻的邻居集合Gi(t),如公式8所示,其中xi(t)表示萤火虫i 在t时刻所在的位置,
Figure RE-GDA0003281860840000141
表示萤火虫i在时间t时决策域范围。
Figure RE-GDA0003281860840000142
萤火虫在时间t时的决策域
Figure RE-GDA0003281860840000143
更新公式如公式9所示,其中rs表示萤火虫的感知域范围,β表示决策域的更新率,gt-1表示萤火虫在t-1时刻的邻域阈值, Gi(t-1)表示萤火虫在t-1时的邻域。
Figure RE-GDA0003281860840000144
步骤3.1:输入萤火虫集合N={n1,n2,…,nm}、迭代次数M以及上一节区域划分算法产生的过负载区域UPGroup、轻负载区域LPGroup、近饱和区域NSGroup、差饱和区域DSGroup集合,把UPGroup中的任务按照负载值高低进行排序,把 UPGroup中的任务设定为萤火虫,DSGroup区域设定为发光区域,在发光区域中寻找最优解并把任务调度到最优的资源节点上。算法过程中首先需要初始化萤火虫的步长s、荧光素的消失率ρ、荧光素的更新率γ以及决策域的更新率β,对于萤火虫集合中的每个萤火虫需要初始化它们的荧光素为l0、初始决策域为r0以及初始位置为xi(t),对于集合中的萤火虫i需要分别根据公式7、公式8以及公式9去更新萤火虫的荧光素值、邻域集合以及决策域半径,对于该萤火虫的邻域集合Gi(t)去计算得到每个萤火虫i移向邻域集合Gi(t)内每个个体j的概率 pij(t),并选出概率最大的j方向作为萤火虫i的移动方向,更新位置以及萤火虫 t+1时刻的决策域范围
Figure RE-GDA0003281860840000151
直到完成迭代次数M,选出全局最优解,即差饱和区域中最合适的资源节点;如图7的步骤(a)为本实施例中原本的区域分配情况以及任务和资源节点的对应调度情况,当UPGroup和DSGroup都不为空时,把过负载区域UPGroup中的资源节点根据负载值由高到低进行排序,并把该资源节点中任务按照优先级进行由高到低的排序,对于UPGroup中的节点对应的分配任务模拟为萤火虫,DSGroup定义为萤火虫的区域移动范围。
步骤3.2:把位于过复杂区域节点中位于等待队列中的任务依次调度到差饱和区域,把萤火虫i(UPGroup中的任务i)移到全局最优解的位置(DSGroup中的资源节点j);在本次实例中UPGroup中资源节点为TaskManager 1和 TaskManager 6,它们的偏移量分别是0.91和0.87,对于TaskManager 1中的任务Task1、Task2、Task3的优先级分别是低、低和高,对于TaskManager 1中的任务Task10的优先级分高;对于DSGroup中的TaskManager 4和TaskManager 5 的偏移量分别是0.13和0.28,NSGroup中资源节点为TaskManager 2和TaskManager 3,LPGroup区域为空。因为UPGroup中的任务重新调度的顺序为先按照资源节点中偏移量由高到低排序,对于同一资源节点中的任务再按照任务的优先级由高到低排序,因此对于UPGroup中的第一个被调度的任务为 TaskManager 1中的Task 3,由于DSGroup中TaskManager 4的偏移量低于TaskManager 5的偏移量,因此TaskManager 1中的Task 3任务被调度到 TaskManager 4中;
步骤3.3:每10秒从MongoDB读取当前的资源性能指标;此时系统实时性能发生改变,从MongoDB数据库中获取实时的资源节点负载值信息,并根据节点当前的任务队列的数量区域进行重新分区,此时集群任务分配情况如步骤(b), TaskManager 1偏移量更新为0.64处于LPGroup区域,下一个被调度的任务为 UPGroup中的TaskManager 6的Task 10,此时DSGroup中的TaskManager 4和 TaskManager 5的偏移量分别是0.21和0.26,因此Task10被调度到TaskManager 4中;
步骤3.4:更新当前的区域划分,并重复步骤3.1、3.2和3.3,,直到过负载区域为空或者差饱和区域为空为止,整体算法调度完成。在本发明中的实施例中由于资源节点的性能发生变化,此时集群重新划分,TaskManager 4被划分到 LPGroup,TaskManager 6被划分到DSGroup区域,此时UPGroup为空,即算法结束。
综上,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种Gaia系统中基于资源反馈的负载均衡任务调度方法,其特征在于,包括如下步骤;
步骤1、针对Gaia集群系统中的所有资源节点进行实时资源性能监控,并计算每个资源节点的负载值,进而得到整个Gaia集群的负载值;
将每个资源节点的负载值和集群的负载均衡值存入MongoDB数据库中;
步骤2、依据每个资源节点相对于整个Gaia集群的负载值的偏移量以及预先设定的高低阈值,对Gaia集群进行区域划分,将整个Gaia集群划分为过负载、轻负载、近饱和和差饱和四个区域,依次记为UPGroup、LPGroup、NSGroup以及DSGroup;
步骤3、基于人工萤火虫算法把过负载区域UPGroup中的节点j上的任务i调度到差饱和区域DSGroup上的节点p上,UPGroup上按照负载值的大小做降序排序,依次调度到DSGroup上,直到集群负载值C_Load小于预设阈值β;
在所述人工萤火虫算法中把过负载区域UPGroup中的节点j上的任务i作为萤火虫,DSGroup区域上的节点p作为萤火虫的目标区域,任务的目标函数由UPGroup上的节点j的任务数量、节点j中的任务i的优先级、目标节点p的负载值以及目标节点p上高优先级任务的数量共同决定。
2.如权利要求1所述的负载均衡任务调度方法,其特征在于,所述步骤1,具体包括如下步骤:
步骤1.1:Gaia集群中的资源监控系统每10秒统计一次Gaia集群中各个资源节点的CPU核数、CPU利用率、内存利用率以及总内存大小的性能指标,四个指标构成的综合值来代表当前资源节点的实时资源性能;
步骤1.2:根据四个性能指标计算出资源节点的负载值;
步骤1.3:把计算得出的资源节点的负载值放入MongoDB数据库中;
步骤1.4:基于每个资源节点的负载值计算得到整个Gaia集群的负载值,放入MongoDB数据库中,判断如果Gaia集群的负载值小于设定的均衡阈值则负载均衡任务调度方法结束,否则,进入步骤2。
3.如权利要求1或2所述的负载均衡任务调度方法,其特征在于,所述步骤2,具体包括如下步骤:
步骤2.1:根据Gaia集群中的各资源节点的负载值计算出Gaia集群的平均负载值;
步骤2.2:根据各资源节点的负载值和Gaia集群的平均负载值,计算出每个资源节点的负载偏差以及相对于阈值的偏移量;
步骤2.3:设定Gaia集群的高阈值和低阈值,将所有资源节点根据自身偏移量分别分配到过负载、差负载、过饱和以及近饱和四个区域中,依次记为UPGroup、LPGroup、NSGroup以及DSGroup;Gaia集群的高低阈值是启发式经验值。
4.如权利要求3所述的负载均衡任务调度方法,其特征在于,所述设定高阈值为h_threshold≥0;
如果资源节点j的偏移量大于等于高阈值h_threshold,则节点j属于过负载UPGroup区域;
如果资源节点j的偏移量小于高阈值h_threshold且大于等于0,则节点j属于轻负载LPGroup区域;
设定低阈值l_threshold≤0;
如果资源节点j的偏移量小于低阈值l_threshold,则节点j属于差饱和DSGroup区域;
如果资源节点j的偏移量大于低阈值l_threshold且小于0,则节点j属于近饱和NSGroup区域。
5.如权利要求1~4任一所述的负载均衡任务调度方法,其特征在于,所述步骤3包括如下具体步骤:
步骤3.1:把分配到过负载区域UPGroup的资源节点按照负载值由高到低排序,同时一个资源节点中的任务按照优先级由高到底进行排序;
步骤3.2:把位于过负载区域UPGroup的资源节点中位于等待队列中的任务依次调度到差饱和区域DSGroup;
步骤3.3:每10秒从MongoDB数据库中读取当前的实时资源性能指标;
步骤3.4:更新当前的区域划分,并重复步骤3.1、3.2和3.3,直到过负载区域UPGroup为空或者差饱和区域DSGroup为空为止,负载均衡任务调度方法完成。
6.如权利要求1~4任一所述的负载均衡任务调度方法,其特征在于,所述步骤3包括如下具体步骤:
S301:输入萤火虫集合N={n1,n2,…,nm}、m为萤火虫总数;迭代次数M以及上一节区域划分算法产生的过负载区域UPGroup、轻负载区域LPGroup、近饱和区域NSGroup、差饱和区域DSGroup集合,把UPGroup中的任务按照负载值高低进行排序,把UPGroup中的任务设定为萤火虫,DSGroup区域设定为发光区域,在发光区域中寻找最优解并把任务调度到最优的资源节点上;首先初始化萤火虫的步长s、荧光素的消失率ρ、荧光素的更新率γ以及决策域的更新率β,对于萤火虫集合中的每个萤火虫初始化其荧光素为l0、初始决策域为r0以及初始位置为xi(t),
萤火虫i在时刻t的荧光素值为li(t),ρ代表萤火虫中荧光色的消失率,γ代表荧光素的更新率,f(xi(t))表示萤火虫i在时间t时位置的目标函数值,li(t-1)为萤火虫i在时刻t-1的荧光素值;
li(t)=(1-ρ)li(t-1)+γf(xi(t)),i=1,2,…,m (7)
萤火虫i在t时刻的邻居集合Gi(t),其中xi(t)表示萤火虫i在t时刻所在的位置,
Figure FDA0003195635360000041
表示萤火虫i在时间t时决策域范围,xj(t)表示萤火虫j在t时刻所在的位置,萤火虫j在时刻t的荧光素值为lj(t);
Figure FDA0003195635360000042
萤火虫在时间t时的决策域
Figure FDA0003195635360000043
更新公式为公式(9),其中rs表示萤火虫的感知域范围,β表示决策域的更新率,gt-1表示萤火虫在t-1时刻的邻域阈值,Gi(t-1)表示萤火虫在t-1时的邻域;
Figure FDA0003195635360000044
对于集合中的萤火虫i需要分别根据公式(7)、公式(8)以及公式(9)去更新萤火虫的荧光素值、邻域集合以及决策域半径,对于当前萤火虫i的邻域集合Gi(t)去计算得到每个萤火虫i移向邻域集合Gi(t)内每个个体j的概率pij(t),并选出概率最大的j方向作为萤火虫i的移动方向,更新位置以及萤火虫t+1时刻的决策域范围
Figure FDA0003195635360000045
直到完成迭代次数M,选出全局最优解,即差饱和区域中最合适的资源节点;当UPGroup和DSGroup都不为空时,把过负载区域UPGroup中的资源节点根据负载值由高到低进行排序,并把该资源节点中任务按照优先级进行由高到低的排序,对于UPGroup中的节点对应的分配任务模拟为萤火虫,DSGroup定义为萤火虫的区域移动范围;
S302:把位于过负载区域节点中位于等待队列中的任务依次调度到差饱和区域,把萤火虫i移到全局最优解的位置;其中萤火虫i对应UPGroup中的任务i,全局最优解的位置对应DSGroup中的资源节点j;
S303:每10秒从MongoDB读取当前的资源性能指标;此时系统实时性能发生改变,从MongoDB数据库中获取实时的资源节点负载值信息,并根据资源节点当前的任务队列的数量区域重新进行区域分区;
S304:更新当前的区域划分,并重复S301、S302和S303,直到过负载区域为空或者差饱和区域为空为止,整体算法调度完成。
7.Gaia系统中基于资源反馈的负载均衡任务调度系统,其特征在于,包括实时资源监控模块、区域划分模块以及调度模块;
所述实时资源监控模块,用于针对Gaia集群系统中的所有资源节点进行实时资源性能监控,并计算每个资源节点的负载值,进而得到整个Gaia集群的负载值;并将每个资源节点的负载值和集群的负载均衡值存入MongoDB数据库中;
所述区域划分模块,用于依据每个资源节点相对于整个Gaia集群的负载值的偏移量以及预先设定的高低阈值,对Gaia集群进行区域划分,将整个Gaia集群划分为过负载、轻负载、近饱和和差饱和四个区域,依次记为UPGroup、LPGroup、NSGroup以及DSGroup;
所述调度模块,基于人工萤火虫算法把过负载区域UPGroup中的节点j上的任务i调度到差饱和区域DSGroup上的节点p上,UPGroup上按照负载值的大小做降序排序,依次调度到DSGroup上,直到集群负载值C_Load小于预设阈值β;
在所述人工萤火虫算法中把过负载区域UPGroup中的节点j上的任务i作为萤火虫,DSGroup区域上的节点p作为萤火虫的目标区域,任务的目标函数由UPGroup上的节点j的任务数量、节点j中的任务i的优先级、目标节点p的负载值以及目标节点p上高优先级任务的数量共同决定。
8.如权利要求7所述的负载均衡任务调度系统,其特征在于,所述实时资源监控模块包括实时监控集群性能单元、计算负载值单元以及MongoDB存储单元;
所述实时监控集群性能单元,每10秒统计一次Gaia集群中各个资源节点的CPU核数、CPU利用率、内存利用率以及总内存大小的性能指标,四个指标构成的综合值来代表当前资源节点的实时资源性能;
所述计算负载值单元,用于根据四个性能指标计算出资源节点的负载值,并基于每个资源节点的负载值计算得到整个Gaia集群的负载值;
所述MongoDB存储单元,用于存储资源节点的负载值和整个Gaia集群的负载值;
所述实时资源监控模块在判断如果Gaia集群的负载值大于或等于设定的均衡阈值时,调用区域划分模块。
CN202110890110.XA 2021-08-04 2021-08-04 Gaia系统中基于资源反馈的负载均衡任务调度方法及系统 Pending CN113626166A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110890110.XA CN113626166A (zh) 2021-08-04 2021-08-04 Gaia系统中基于资源反馈的负载均衡任务调度方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110890110.XA CN113626166A (zh) 2021-08-04 2021-08-04 Gaia系统中基于资源反馈的负载均衡任务调度方法及系统

Publications (1)

Publication Number Publication Date
CN113626166A true CN113626166A (zh) 2021-11-09

Family

ID=78382526

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110890110.XA Pending CN113626166A (zh) 2021-08-04 2021-08-04 Gaia系统中基于资源反馈的负载均衡任务调度方法及系统

Country Status (1)

Country Link
CN (1) CN113626166A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114546610A (zh) * 2022-01-17 2022-05-27 山西省信息通信网络技术保障中心 一种海量数据分布式脱敏装置
CN116185645A (zh) * 2023-04-28 2023-05-30 联通沃音乐文化有限公司 基于神经网络的集群资源智能调度方法、系统及存储介质
CN116700993A (zh) * 2023-08-02 2023-09-05 浪潮(北京)电子信息产业有限公司 一种负载均衡方法、装置、设备及可读存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114546610A (zh) * 2022-01-17 2022-05-27 山西省信息通信网络技术保障中心 一种海量数据分布式脱敏装置
CN114546610B (zh) * 2022-01-17 2022-11-18 山西省信息通信网络技术保障中心 一种海量数据分布式脱敏装置
CN116185645A (zh) * 2023-04-28 2023-05-30 联通沃音乐文化有限公司 基于神经网络的集群资源智能调度方法、系统及存储介质
CN116185645B (zh) * 2023-04-28 2023-08-04 联通沃音乐文化有限公司 基于神经网络的集群资源智能调度方法、系统及存储介质
CN116700993A (zh) * 2023-08-02 2023-09-05 浪潮(北京)电子信息产业有限公司 一种负载均衡方法、装置、设备及可读存储介质
CN116700993B (zh) * 2023-08-02 2024-02-09 浪潮(北京)电子信息产业有限公司 一种负载均衡方法、装置、设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN113626166A (zh) Gaia系统中基于资源反馈的负载均衡任务调度方法及系统
CN110287245B (zh) 用于分布式etl任务调度执行的方法及系统
Yagoubi et al. Dynamic load balancing strategy for grid computing
CN107273209B (zh) 基于最小生成树聚类改进遗传算法的Hadoop任务调度方法
CN107832129B (zh) 一种面向分布式流计算系统的动态任务调度优化方法
US20100325637A1 (en) Allocation of resources to a scheduler in a process
CN109491761A (zh) 基于eda-ga混合算法的云计算多目标任务调度方法
CN103699433B (zh) 一种于Hadoop平台中动态调整任务数目的方法及系统
CN103401939A (zh) 一种采用混合调度策略的负载均衡方法
CN112817728B (zh) 任务调度方法、网络设备和存储介质
CN114996001A (zh) 一种分布式机器学习任务gpu资源调度分配方法及系统
CN114489925A (zh) 一种容器化服务调度框架及弹性调度算法
CN106407007B (zh) 面向弹性分析流程的云资源配置优化方法
CN111309472A (zh) 一种基于虚拟机预部署的在线虚拟资源分配方法
CN109976873B (zh) 容器化分布式计算框架的调度方案获取方法及调度方法
CN112231081A (zh) 云环境下基于pso-ahp的单调速率资源调度方法及系统
CN110167031B (zh) 一种面向集中式基站的资源分配方法、设备及存储介质
CN116069496A (zh) 一种gpu资源调度的方法及装置
CN113608855B (zh) 一种边缘计算中服务功能链放置的强化学习方法
CN112632615B (zh) 基于混合云环境的科学工作流数据布局方法
CN113641448A (zh) 一种边缘计算容器分配和层下载排序体系结构及其方法
CN117539612A (zh) 基于混沌麻雀算法的ai训推平台任务调度方法和系统
CN117493020A (zh) 一种数据网格的计算资源调度实现方法
CN113190342A (zh) 用于云-边协同网络的多应用细粒度卸载的方法与系统架构
EP4300305A1 (en) Methods and systems for energy-efficient scheduling of periodic tasks on a group of processing devices

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