CN101458634B - 负载均衡调度方法和装置 - Google Patents
负载均衡调度方法和装置 Download PDFInfo
- Publication number
- CN101458634B CN101458634B CN2008100008332A CN200810000833A CN101458634B CN 101458634 B CN101458634 B CN 101458634B CN 2008100008332 A CN2008100008332 A CN 2008100008332A CN 200810000833 A CN200810000833 A CN 200810000833A CN 101458634 B CN101458634 B CN 101458634B
- Authority
- CN
- China
- Prior art keywords
- processing unit
- task
- priority
- load balance
- scheduling
- 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
Landscapes
- Multi Processors (AREA)
Abstract
本发明提供了一种负载均衡调度方法和装置,其中,该方法包括以下步骤:步骤一,启动周期运行的负载均衡监控模块来监控多处理器系统中各个处理单元的任务优先级的分布,并且当监控到各个处理单元的任务优先级的分布不均衡且任务优先级的分布的最大差值超过预设阈值时,负载均衡监控模块确定源处理单元、目的处理单元、和所要执行的任务调度的优先级,并向相关负载均衡处理模块均发起负载均衡调度消息;以及步骤二,在接收到负载均衡调度消息后,相关负载均衡处理模块根据各个处理单元的任务优先级的分布以及各个处理单元之间的关系来执行任务调度,从而使对称多处理器系统中的各处理单元上任务负荷达到均衡。
Description
技术领域
本发明涉及计算机操作系统中的任务调度领域,更具体地,涉及一种负载均衡调度方法和装置。
背景技术
随着微处理器技术的发展,多核,超线程已经成为发展主流,目前,X86、PPC、MIPS、ARM等主流商用处理器体系都已经推出,或正在计划推出多核、超线程的商用处理器,这些处理器的多核结构都是基于对称多处理器体系的,即各处理单元没有主次之分,都是平等的。相对于普通单核体系的处理器来说,具备多核和超线程特性的处理器具备多个执行单元,可以同时运行多个任务,这和单核处理器一个时间只能运行一个任务的情况完全不同,为了支持多核,超线程处理器的这种特性,需要在操作系统的任务调度上做相应设计,以充分发挥处理器的这种并行处理能力。
在目前已经商用的操作系统中,也提供了对多处理器系统的支持,比如Linux、BSD、Windows等。在这些操作系统中,会定时统计系统中各处理器的利用率,当不同处理器之间的利用率差别超过一定阈值时,就将启动任务迁移的操作,将任务从比较忙的处理器上迁移到比较闲的处理器上。但是,这些操作系统主要是为传统的服务器设计,在调度上更注重调度的公平性,资源在各个进程之间的均衡分配。
在电信、电力、航空航天等领域的嵌入式系统中,大量用到了各种微处理器,随着处理器技术的发展,使用于这些领域上的微处理器性能也在不断提高,具有多核,超线程特性的处理器已经或即将进入应用。对于在这些领域的嵌入式系统上运行的业务应用来说,一般要求操作系统提供强实时性,强效率等特性,对于高优先级的任务,必须优先运行;由此可见,现有的操作系统对多核,超线程处理器的支持方式不能完全满足许多嵌入式系统的需要,具有如下缺点:
1、其负载均衡方法不是基于优先级均衡的方法,在整个对称多处理器系统中,各处理器上的运行队列优先级不均衡,不能确保系统内的每一个处理器上运行任务的优先级都比等待任务的优先级要高,会出现高优先级的任务在一个处理器上等待,而比它优先级低的任务却在其它处理器得到运行;
2、无法有效支持互斥信号量的优先级继承,在现有操作系统的支持模式下,由于无法保证在整个系统空间的优先级一致性,所以对互斥信号量的优先级继承只能在处理器内部实现,无法在整个对称多处理器系统内实现;以及
3、其均衡操作的时机不是基于优先级的,是按照各处理器的运行效率来触发的,无法满足高优先级任务必须在系统中得到及时执行的要求。
发明内容
为了解决现有技术中的问题,本发明提出了一种负载均衡调度方法,用于在嵌入式实时对称多处理器系统中,通过一个负载均衡监控模块和位于所述嵌入式实时对称多处理器系统中的各个处理单元的多个负载均衡处理模块,使对称多处理器系统中的各个处理单元之间达到均衡,即,保证系统中各处理器中优先级均衡,并在系统各处理器出现不均衡情况时,通过主动和被动的两种方式在系统内的处理器间进行任务的迁移,使系统随时保持均衡。
根据本发明的一个方面,提供了一种负载均衡调度方法,其包括以下步骤:步骤一,启动周期运行的负载均衡监控模块来监控多处理器系统中各个处理单元的任务优先级的分布,并且当监控到各个处理单元的任务优先级的分布不均衡且任务优先级的分布的最大差值超过预设阈值时,负载均衡监控模块确定源处理单元、目的处理单元、和所要执行的任务调度的优先级,并向相关负载均衡处理模块均发起负载均衡调度消息;以及步骤二,在接收到负载均衡调度消息后,相关负载均衡处理模块根据各个处理单元的任务优先级的分布以及各个处理单元之间的关系来执行任务调度,从而使对称多处理器系统中的各个处理单元之间达到均衡。
在步骤一之前,该方法还包括:步骤a,在多处理器系统初始化后,为处理单元中的每个建立一个任务优先级队列表;步骤b,为每个处理单元的各个优先级生成一个对应的空链表头并放在任务优先级队列表中;步骤c,读取多处理器系统的配置信息以及各个处理单元的信息,建立各个处理单元之间的树形关系结构层次图;以及步骤d,根据树形关系结构层次图,确定在各个处理单元之间进行任务调度的权重。
在上述步骤c中,还包括:将树形关系结构层次图分为三个层次,其中,第一层次为超线程处理单元,第二层次为同一个芯片内部的多核处理单元,以及第三层次为不同芯片但使用同一内存的多芯片处理单元。
另外,在步骤一中,在定时启动负载均衡监控模块之后,执行以下处理:负载均衡监控模块遍历每个处理单元,并获得每个处理单元的任务优先级队列表,以获得各个处理单元在当前任务优先级上的任务数量;根据各个处理单元在当前任务优先级上的任务数量,获得各个处理单元在当前任务优先级上的任务数量之间的最大差值,将最大差值与预设阈值进行比较;当最大差值大于预设阈值时,将在当前任务优先级上的任务数量最多的处理单元确定作为将要进行任务调度的源处理单元;根据源处理单元在当前任务优先级上的任务数量以及树形关系结构层次图,确定在当前任务优先级上,源处理单元与各个层次上的处理单元之间的任务数量的最大差值;以及将最大差值小于预设阈值并且任务数量最少的处理单元确定为目的处理单元。
在步骤一中还执行以下处理:负载均衡监控模块将目的处理单元、源处理单元、以及任务调度的优先级通知给相关负载均衡处理模块,并向相关负载均衡处理模块发起负载均衡调度消息。
在本发明中,负载均衡调度消息至少包括:源处理单元信息、目的处理单元信息、以及所要执行的任务调度的优先级信息。
在步骤二中,执行以下处理:在接收到负载均衡调度消息后,源处理单元的负载均衡处理模块解析出源处理单元信息、目的处理单元信息、以及所要执行的任务调度的优先级信息;计算源处理单元、目的处理单元在所要执行的任务调度的优先级上的任务数量的平均值,以确定源处理单元的任务数量与平均值的差值;根据差值,源处理单元的负载均衡处理模块锁定源处理单元,并从任务优先级队列表的所要执行的任务调度的优先级的队列尾部取出足够数量的任务;源处理单元的负载均衡处理模块将任务从源处理单元的任务优先级队列表中删除并解除对源处理单元的锁定;以及源处理单元的负载均衡处理模块向目的处理单元的负载均衡处理模块发起负载均衡调度消息。
另外,在步骤二中,还执行以下处理:在接收到负载均衡调度消息后,目的处理单元的负载均衡处理模块锁定目的处理单元,并将任务加入到目的处理单元的任务优先级队列表中;目的处理单元的负载均衡处理模块解除对目的处理单元的锁定。
根据本发明的另一个方面,还提供了一种负载均衡调度装置,其包括:负载均衡监控模块,用于经过周期启动运行来监控多处理器系统中各个处理单元的任务优先级的分布,并且当监控到各个处理单元的任务优先级的分布不均衡且任务优先级的分布的最大差值超过预设阈值时,确定源处理单元、目的处理单元、和所要执行的任务调度的优先级,并向相关负载均衡处理模块均发起负载均衡调度消息;以及多个负载均衡处理模块,位于各个处理单元内,与负载均衡监控模块相连,用于在接收到负载均衡调度消息后,根据各个处理单元的任务优先级的分布以及各个处理单元之间的关系来执行任务调度,从而使对称多处理器系统中的各个处理单元之间达到均衡。
另外,该装置还包括:初始化模块,用于初始化多处理器系统,并为处理单元中的每个建立一个任务优先级队列表,为每个处理单元的各个优先级生成一个对应的空链表头并放在任务优先级队列表中,读取多处理器系统的配置信息以及各个处理单元的信息,建立各个处理单元之间的树形关系结构层次图,以及根据树形关系结构层次图,确定在各个处理单元之间进行任务调度的权重。
因此,采用本发明,使用系统中优先级分布来做负载均衡的基本指标,而不是以处理器的空闲率作为负载均衡的指标。与传统方法相比,本发明具有实时响应性能好,负载均衡监控时的计算开销小,更适合于嵌入式系统应用。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是根据本发明的负载均衡调度方法的流程图;
图2是本发明的负载均衡调度方法所涉及的对称多处理单元树形层次的结构示意图;
图3是本发明的负载均衡调度方法所涉及的多处理单元多任务优先级队列表的示意图;
图4是根据本发明的负载均衡调度装置的框图;
图5是在图4中所示的负载均衡监控模块中所执行的处理的流程示意图;以及
图6是在图4中所示的负载均衡处理模块实体中所执行的任务迁移处理的流程示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
应了解,本发明的实现主要在于两个模块:负载均衡监控模块和负载均衡处理模块。其中,负载均衡监控模块被设置为定时运行,运行时将检查整个系统中各处理器的任务负荷状况,如果出现了任务负载不均衡的情况,它将在系统内进行分级搜索,搜索出源处理单元,目的处理单元和待迁移任务优先级,并将这些信息通知相应的负载均衡处理模块的实体。负载均衡处理模块在每个处理单元上都有实体,当它收到监控模块的通知后,会使用收到的任务迁移信息,将负荷较重的源处理单元中的任务转移到负荷较轻的目的处理单元中。
图1是根据本发明的负载均衡调度方法的流程图。如图1所示,包括以下步骤:
S102,启动周期运行的负载均衡监控模块来监控多处理器系统中各个处理单元的任务优先级的分布,并且当监控到各个处理单元的任务优先级的分布不均衡且任务优先级的分布的最大差值超过预设阈值时,负载均衡监控模块确定源处理单元、目的处理单元、和所要执行的任务调度的优先级,并向相关负载均衡处理模块均发起负载均衡调度消息;以及
S104,在接收到负载均衡调度消息后,相关负载均衡处理模块根据各个处理单元的任务优先级的分布以及各个处理单元之间的关系来执行任务调度,从而使对称多处理器系统中的各个处理单元之间达到均衡。
在S102之前,本方法还包括:步骤a,在多处理器系统初始化后,为处理单元中的每个建立一个任务优先级队列表;步骤b,为每个处理单元的各个优先级生成一个对应的空链表头并放在任务优先级队列表中;步骤c,读取多处理器系统的配置信息以及各个处理单元的信息,建立各个处理单元之间的树形关系结构层次图;以及步骤d,根据树形关系结构层次图,确定在各个处理单元之间进行任务调度的权重。
在步骤c中,将树形关系结构层次图分为三个层次,其中,第一层次为超线程处理单元,第二层次为同一个芯片内部的多核处理单元,以及第三层次为不同芯片但使用同一内存的多芯片处理单元。
在步骤d中,设定第一层次间的任务调度的权重小于第二层次间的任务调度的权重,以及设定第二层次间的任务调度的权重小于第三层次间的任务调度的权重。
在S102中,在定时启动负载均衡监控模块之后,执行以下处理:负载均衡监控模块遍历每个处理单元,并获得每个处理单元的任务优先级队列表,以获得各个处理单元在当前任务优先级上的任务数量;根据各个处理单元在当前任务优先级上的任务数量,获得各个处理单元在当前任务优先级上的任务数量之间的最大差值,将最大差值与预设阈值进行比较;当最大差值大于预设阈值时,将在当前任务优先级上的任务数量最多的处理单元确定作为将要进行任务调度的源处理单元;根据源处理单元在当前任务优先级上的任务数量以及树形关系结构层次图,确定在当前任务优先级上,源处理单元与各个层次上的处理单元之间的任务数量的最大差值;以及将最大差值小于预设阈值并且任务数量最少的处理单元确定为目的处理单元。
另外,在S102中还执行以下处理:负载均衡监控模块将目的处理单元、源处理单元、以及任务调度的优先级通知给相关负载均衡处理模块,并向相关负载均衡处理模块发起负载均衡调度消息。
在本发明,负载均衡调度消息至少包括:源处理单元信息、目的处理单元信息、以及所要执行的任务调度的优先级信息。
在S104中,执行以下处理:在接收到负载均衡调度消息后,源处理单元的负载均衡处理模块解析出源处理单元信息、目的处理单元信息、以及所要执行的任务调度的优先级信息;计算源处理单元、目的处理单元在所要执行的任务调度的优先级上的任务数量的平均值,以确定源处理单元的任务数量与平均值的差值;根据差值,源处理单元的负载均衡处理模块锁定源处理单元,并从任务优先级队列表的所要执行的任务调度的优先级的队列尾部取出足够数量的任务;源处理单元的负载均衡处理模块将任务从源处理单元的任务优先级队列表中删除并解除对源处理单元的锁定;以及源处理单元的负载均衡处理模块向目的处理单元的负载均衡处理模块发起负载均衡调度消息。
在S104中,还执行以下处理:在接收到负载均衡调度消息后,目的处理单元的负载均衡处理模块锁定目的处理单元,并将任务加入到目的处理单元的任务优先级队列表中;目的处理单元的负载均衡处理模块解除对目的处理单元的锁定。
图2是本发明的负载均衡调度方法所涉及的对称多处理单元树形层次的结构示意图,以及图3是本发明的负载均衡调度方法所涉及的多处理单元多任务优先级队列表的示意图。接下来将结合图2和图3本发明的方法进行详细描述。应了解,本发明的实现主要包括了如下的步骤。
步骤一,操作系统初始化时,首先建立系统中各处理单元的多优先级任务队列头表(如图3所示),该队列头表的优先级从高到低,每个处理单元都有自己的一个多优先级任务队列头表,初始时,为每个优先级生成一个空的链表头放在这个队列头表中,以后系统生成的对应其优先级任务则依次挂接在这个链表头之后;然后,通过对系统配置信息,处理器信息的读取,建立对称多处理器体系中各处理单元之间关系的一个树形层次结构,该结构的第一层次为共用高速缓存和部分寄存器的超线程单元,第二层次为同一芯片内部的多核单元,第三层次为同一系统内,不同芯片,使用同一套内存的多芯片单元。
如图3所示,描述了多优先级任务队列表的详细结构。每个处理单元都有自己的一个优先级队列表,按从高到低的顺序排列,表里每一项存放的是相应优先级任务队列的队列头指针,如果该优先级没有任务,当然该表项所指向的任务队列为空。当任务在不同的处理单元中迁移时,主要就是对这些队列的操作,一般是从源处理单元指定优先级的任务队列中删除指定数量的任务,然后再将这些任务挂接到目的处理单元的相应优先级的任务队列中去。该结构在操作系统初始化时建立,由操作系统的任务调度器使用,本实施例所描述的方法会在负载均衡处理时使用到这个结构。
步骤二,利用步骤一建立的树形关系结构(如图2所示),可以建立在各处理单元间做线程迁移的代价,在树形结构的第一层次的迁移代价最小,第二层次较高,第三层次最高。
如图2所示,在对称多处理体系的系统中,各处理单元之间关系的一个树形结构图,通过该图,可以建立系统内各处理单元之间的相互关系,为在负载均衡时进行目的处理单元搜索时奠定基础。当任务在处理单元间迁移时,会给系统的高速缓存、内存页表都带来一定开销。一般来说,在两个同一处理核内的超线程单元之间迁移,开销最小;其次,是在同一芯片的两个核之间,在同一对称多处理器系统内的两个芯片之间的迁移,相对来说开销最大。
在图2中,描述了本发明根据对称多处理系统的实际所建立的一个对应的树形结构,该树形结构从下到上共分三层,第一层是由超线程单元节点,在同一处理核内的超线程单元都被划为一组,挂接在同一个处理核的父节点下;第二层是处理核节点,在同一个芯片内的处理核都被被划为一组,挂接在同一个处理芯片父节点下;第三层是芯片节点,在系统内的所有处理芯片都是一组,都挂接在共同的父节点系统节点下。该结构在操作系统初始化时建立,本发明所描述的方法会在负载均衡监控时使用到这个结构。
步骤三,启动负载监控模块,将其挂接在操作系统的定时中断中。该模块被定时调用,并按照优先级从高到低进行如下基本处理流程:
首先,它遍历系统中,在当前处理优先级上,每一个处理单元的运行任务队列,取得各处理器单元在当前处理优先级上的数量分布;
然后,取得各处理单元在在当前处理优先级上的任务数量分布的最大差值,先将该差值与预置的阈值比较,如果小于阈值,则不做处理,直接退出,做下一优先级的处理,否则,当差值超过阈值时,则取在该优先级上任务最多的处理单元为需要移出任务的源处理单元,再继续下面的步骤来寻找移入任务的目的处理单元;
第三,确定要迁移出任务的源处理单元上该优先级的任务数,以及在该优先级上的最大任务差值,开始在树形关系结构的第一层次组内搜索,获取与源处理单元在第一层次组内的伙伴处理单元在该优先级的任务分布,如果在第一层次的组内处理单元间迁移部分任务,可以使得迁移后的最大任务差值小于阈值,则完成对目的处理单元的搜索,否则,继续搜索;
第四,在树形关系结构的第二层次组内搜索,取与源处理单元在第二层次组内的伙伴处理单元在该优先级的任务分布,如果在第二层次的组内处理单元间迁移部分任务,可以使得该优先级的最大任务差值小于阈值,则完成对目的处理器的搜索,否则,继续搜索;
第五,在系统内搜索,取在该优先级任务数量最少的处理单元为目的处理单元;
最后,将找到的源处理单元,目的处理单元,迁移任务的优先级这三个信息,并通知源处理单元上的负载均衡处理模块。
步骤四.启动负载均衡处理模块,并在系统内的每一个处理单元启动一个负载均衡模块的实体,该实体被分配为系统的最高优先级,确保可以在系统中被最优先执行。当该模块的一个实体被负载均衡监控模块启动后,将会有源处理单元,目的处理单元,和迁移任务优先级这三个信息,然后开始做任务迁移,该模块的任务迁移主要有如下几个步骤:
首先,在源处理单元的实体会获取源处理单元和目的处理单元在迁移优先级的总任务数,除2得出一个平均数,确定要迁移的任务数为源处理单元任务数与平均数的差值;
然后,该实体获取源处理单元的执行权,锁定源处理单元的任务运行队列,从迁移优先级的任务队列尾部取出足够数目的任务,并将这些任务从任务队列中删除。并通知目的处理器上的负载均衡处理模块实体;
第三,在目的处理单元的负载均衡处理模块实体会获取目的处理单元的执行权,锁定目的处理单元的任务运行队列,将在上一个步骤中取出的任务依次加入到迁移优先级任务队列的尾部,完成任务迁移。
图4是根据本发明的负载均衡调度装置400的框图。如图6所示,该装置包括:负载均衡监控模块402,用于经过周期启动运行来监控多处理器系统中各个处理单元的任务优先级的分布,并且当监控到各个处理单元的任务优先级的分布不均衡且任务优先级的分布的最大差值超过预设阈值时,确定源处理单元、目的处理单元、和所要执行的任务调度的优先级,并向相关负载均衡处理模块均发起负载均衡调度消息;以及多个负载均衡处理模块404,位于各个处理单元内,与负载均衡监控模块402相连,用于在接收到负载均衡调度消息后,根据各个处理单元的任务优先级的分布以及各个处理单元之间的关系来执行任务调度,从而使对称多处理器系统中的各个处理单元之间达到均衡。
根据本发明的装置还包括:初始化模块406,用于初始化多处理器系统,并为处理单元中的每个建立一个任务优先级队列表,为每个处理单元的各个优先级生成一个对应的空链表头并放在任务优先级队列表中,读取多处理器系统的配置信息以及各个处理单元的信息,建立各个处理单元之间的树形关系结构层次图,以及根据树形关系结构层次图,确定在各个处理单元之间进行任务调度的权重。
在本发明中,树形关系结构层次图分为三个层次,其中,第一层次为超线程处理单元,第二层次为同一个芯片内部的多核处理单元,以及第三层次为不同芯片但使用同一内存的多芯片处理单元。
负载均衡调度消息至少包括:源处理单元信息、目的处理单元信息、以及所要执行的任务调度的优先级信息。
图5是在图4中所示的负载均衡监控模块402中所执行的处理的流程示意图,以及图6是在图4中所示的负载均衡处理模块实体404中所执行的任务迁移处理的流程示意图。接下来结合图5和图6对图4所示的负载均衡调度装置的各个模块进行详细描述。
如图5所示,示出了负载均衡监控模块的详细处理流程。应了解,负载均衡模块一般挂接在系统中的定时中断,在系统中只存在一个实体,负责对系统内负载均衡情况进行监视,在发现系统内有负载不均衡的情况时,它会在系统内进行搜索,搜索出目的处理器、源处理器、不均衡的优先级、并将这些信息传递给负载均衡处理模块实体处理。具体地,在负载均衡监控模块中执行如下处理:
S502,当负载均衡监控模块被定时调用时,它遍历系统中每一个处理单元的多优先级运行任务队列(如图3所描述),取得每一优先级在各处理单元上的任务数量;
S504,按照优先级顺序,从高优先级开始处理,利用S502取得的各处理单元上该优先级的任务分布数据,取得当前处理优先级上各处理单元的任务数量的最大差值;
S506,将S504取得的最大差值与预置的阈值比较,如果小于阈值,则直接跳转到S516,否则,当差值超过阈值时,则取在该优先级上任务最多的处理单元为需要移出任务的源处理单元,再继续下面的步骤来寻找移入任务的目的处理单元;
S508,取得源处理单元上当前处理优先级的任务数,取得S504获得的当前处理优先级上的最大任务差值,在树形关系结构的第一层次组内搜索,取得与源处理单元在第一层次同一组内在当前处理优先级的任务数量最少的一个伙伴处理单元,取源处理单元和这个伙伴处理单元在当前处理优先级的任务数量均值,计算出源处理单元在当前处理优先级的任务数量与该均值的差值,用最大任务差值减去这个差值,所得值如果小于阈值,则以伙伴处理单元为目的处理单元,完成对目的处理单元的搜索,跳转到S514,否则,继续S510;
S510,在树形关系结构的第二层次组内搜索,取与源处理单元在第二层次组内的在当前处理优先级的任务数量最少的一个伙伴处理单元,取源处理单元和这个伙伴处理单元在当前处理优先级的任务数量均值,计算出源处理单元在当前处理优先级的任务数量与该均值的差值,用最大任务差值减去这个差值,所得值如果小于阈值,则完成对目的处理器的搜索,跳转到S514,否则,继续S512;
S512,在树形关系结构的第三层次组内也即整个系统内搜索,取得在当前处理优先级的任务数量最少的一个伙伴处理单元为目的处理单元,继续S514;
S514,将目的处理单元/源处理单元/迁移优先级通知相应负载均衡处理模块实体;以及
S516,判断所有优先级是否处理完毕,如果处理完毕,模块退出处理,否则,返回到S504。
接下来执行如图6所示的在负载均衡处理模块中执行的处理的流程。与负载均衡监控模块不同,负载均衡模块有多个实体,在系统内的每个处理单元都有一个实体,这个实体一般是处理单元内的一个最高优先级任务的形式出现,这样以确保该实体能在所有的任务中被最优先执行。该模块主要负责任务迁移工作,该工作的完成需要源处理单元的负载均衡模块实体和目的处理单元的负载均衡模块处理实体协同完成,每个处理单元上的负载均衡模块实体的功能都完全相同,都能完成作为源处理单元或目的处理单元时所需的工作。每个处理单元上的负载均衡实体在任务迁移时扮演的角色,完全由负载监控系统在负载监控处理时得到的结果来确定。具体地,负载均衡处理模块实体间协同完成任务迁移的处理流程如下:
S602,在源处理单元上的实体获取到负载监控模块传来的任务迁移消息,该消息包含了源处理单元、目的处理单元和迁移优先级等任务迁移必要信息,源处理单元的负载均衡处理实体会从收到的消息解析出源处理单元、目的处理单元和迁移优先级这些信息,然后,计算出源处理单元和目的处理单元在迁移优先级上的任务数量均值,从而确定在迁移优先级上要迁移的任务数为源处理单元任务数与均值的差值;
S604,该实体获取源处理单元的执行权,锁定源处理单元的任务队列,从迁移优先级的任务队列尾部取出足够数目的任务,并将这些任务从任务队列中删除,解除锁定,通知目的处理器上的负载均衡处理模块实体;以及
S606,在目的处理单元的负载均衡处理模块实体会获取目的处理单元的执行权,锁定目的处理单元的任务运行队列,将在S604中取出的任务依次加入到迁移优先级任务队列的尾部,解除锁定,完成任务迁移。
应了解,本发明主要是对对称多处理器系统的任务进行均衡,主要的功能是在整个多处理器系统中均衡调配,使得系统中的各处理执行单元的任务处理负荷保持均衡,使系统中不致出现一个处理器负载很重,而另外的处理器却很空闲的情况。
综上所述,采用本发明,使用了系统中优先级分布来做负载均衡的基本指标,而不是以处理器的空闲率作为负载均衡的指标,从而具有实时响应性能好,负载均衡监控时的计算开销小,更适合于嵌入式系统应用。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种负载均衡调度方法,用于在嵌入式实时对称多处理器系统中,通过一个负载均衡监控模块和位于所述嵌入式实时对称多处理器系统中的各个处理单元的多个负载均衡处理模块,使对称多处理器系统中的各个处理单元之间达到均衡,其特征在于,包括以下步骤:
步骤一,启动周期运行的负载均衡监控模块来监控所述多处理器系统中各个处理单元在当前任务优先级上的任务数量分布,并且当监控到所述各个处理单元在当前任务优先级上的任务数量分布不均衡且所述在当前任务优先级上的任务数量分布的最大差值超过预设阈值时,所述负载均衡监控模块确定源处理单元、目的处理单元、和所要执行的任务调度的优先级,并向相关负载均衡处理模块均发起负载均衡调度消息;以及
步骤二,在接收到所述负载均衡调度消息后,所述相关负载均衡处理模块根据所述各个处理单元在当前任务优先级上的任务数量分布以及所述各个处理单元之间的关系来执行所述任务调度,从而使所述对称多处理器系统中的各个处理单元之间达到均衡,
其中,在所述步骤一之前,还包括:
步骤a,在所述多处理器系统初始化后,为所述处理单元中的每个建立一个任务优先级队列表;
步骤b,为每个处理单元的各个优先级生成一个对应的空链表头并放在所述任务优先级队列表中;
步骤c,读取所述多处理器系统的配置信息以及所述各个处理单元的信息,建立所述各个处理单元之间的树形关系结构层次图;以及
步骤d,根据所述树形关系结构层次图,确定在所述各个处理单元之间进行任务调度的权重。
2.根据权利要求1所述的方法,其特征在于,在所述步骤c中,还包括:
将所述树形关系结构层次图分为三个层次,
其中,第一层次为超线程处理单元,第二层次为同一个芯片内部的多核处理单元,以及第三层次为不同芯片但使用同一内存的多芯片处理单元。
3.根据权利要求1所述的方法,其特征在于,在所述步骤一中,在定时启动所述负载均衡监控模块之后,执行以下处理:
所述负载均衡监控模块遍历每个处理单元,并获得所述每个处理单元的任务优先级队列表,以获得所述各个处理单元在当前任务优先级上的任务数量;
根据所述各个处理单元在当前任务优先级上的任务数量,获得所述各个处理单元在当前任务优先级上的任务数量之间的最大差值,将所述最大差值与所述预设阈值进行比较;
当所述最大差值大于所述预设阈值时,将在所述当前任务优先级上的任务数量最多的处理单元确定作为将要进行任务调度的源处理单元;
根据所述源处理单元在所述当前任务优先级上的任务数量以及所述树形关系结构层次图,确定在所述当前任务优先级上,所述源处理单元与各个层次上的处理单元之间的任务数量的最大差值;以及
将所述最大差值小于所述预设阈值并且任务数量最少的处理单元确定为所述目的处理单元。
4.根据权利要求3所述的方法,其特征在于,在所述步骤一中还执行以下处理:
所述负载均衡监控模块将所述目的处理单元、所述源处理单元、以及所述任务调度的优先级通知给所述相关负载均衡处理模块,并向所述相关负载均衡处理模块发起所述负载均衡调度消息。
5.根据权利要求4所述的方法,其特征在于,所述负载均衡调度消息至少包括:源处理单元信息、目的处理单元信息、以及所要执行的任务调度的优先级信息。
6.根据权利要求5所述的方法,其特征在于,在所述步骤二中,执行以下处理:
在接收到所述负载均衡调度消息后,所述源处理单元的负载均衡处理模块解析出所述源处理单元信息、所述目的处理单元信息、以及所要执行的任务调度的优先级信息;
计算所述源处理单元、所述目的处理单元在所述所要执行的任务调度的优先级上的任务数量的平均值,以确定所述源处理单元的任务数量与所述平均值的差值;
根据所述差值,所述源处理单元的负载均衡处理模块锁定所述源处理单元,并从所述任务优先级队列表的所述所要执行的任务调度的优先级的队列尾部取出足够数量的任务;
所述源处理单元的负载均衡处理模块将所述任务从所述源处理单元的所述任务优先级队列表中删除并解除对所述源处理单元的锁定;以及
所述源处理单元的负载均衡处理模块向所述目的处理单元的负载均衡处理模块发起所述负载均衡调度消息。
7.根据权利要求6所述的方法,其特征在于,在所述步骤二中,还执行以下处理:
在接收到所述负载均衡调度消息后,所述目的处理单元的负载均衡处理模块锁定所述目的处理单元,并将所述任务加入到所述目的处理单元的所述任务优先级队列表中;
所述目的处理单元的负载均衡处理模块解除对所述目的处理单元的锁定。
8.一种负载均衡调度装置,其特征在于,包括:
负载均衡监控模块,用于经过周期启动运行来监控所述多处理器系统中各个处理单元在当前任务优先级上的任务数量分布,并且当监控到所述各个处理单元在当前任务优先级上的任务数量分布不均衡且所述在当前任务优先级上的任务数量分布的最大差值超过预设阈值时,确定源处理单元、目的处理单元、和所要执行的任务调度的优先级,并向相关负载均衡处理模块均发起负载均衡调度消息;
多个负载均衡处理模块,位于各个处理单元内,与所述负载均衡监控模块相连,用于在接收到所述负载均衡调度消息后,根据所述各个处理单元在当前任务优先级上的任务数量分布以及所述各个处理单元之间的关系来执行所述任务调度,从而使所述对称多处理器系统中的各个处理单元之间达到均衡;以及
初始化模块,用于初始化所述多处理器系统,并为所述处理单元中的每个建立一个任务优先级队列表,为每个处理单元的各个优先级生成一个对应的空链表头并放在所述任务优先级队列表中,读取所述多处理器系统的配置信息以及所述各个处理单元的信息,建立所述各个处理单元之间的树形关系结构层次图,以及根据所述树形关系结构层次图,确定在所述各个处理单元之间进行任务调度的权重。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100008332A CN101458634B (zh) | 2008-01-22 | 2008-01-22 | 负载均衡调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100008332A CN101458634B (zh) | 2008-01-22 | 2008-01-22 | 负载均衡调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101458634A CN101458634A (zh) | 2009-06-17 |
CN101458634B true CN101458634B (zh) | 2011-03-16 |
Family
ID=40769509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100008332A Active CN101458634B (zh) | 2008-01-22 | 2008-01-22 | 负载均衡调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101458634B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593168A (zh) * | 2012-08-13 | 2014-02-19 | 株式会社突飞软件 | 利用多重处理的渲染处理装置及方法 |
WO2021139726A1 (zh) * | 2020-01-07 | 2021-07-15 | 中科寒武纪科技股份有限公司 | 任务迁移的方法、装置、计算机设备及可读存储介质 |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968748B (zh) * | 2010-09-17 | 2014-04-02 | 北京星网锐捷网络技术有限公司 | 多线程数据调度方法、装置及网络设备 |
CN102455934A (zh) * | 2010-10-25 | 2012-05-16 | 北大方正集团有限公司 | 工作流的调度方法和装置 |
CN102455944A (zh) * | 2010-10-29 | 2012-05-16 | 迈普通信技术股份有限公司 | 多核负载均衡的方法以及处理器 |
CN102480378A (zh) * | 2010-11-26 | 2012-05-30 | 中兴通讯股份有限公司 | 一种管理资源的方法及系统 |
CN102323896B (zh) * | 2011-05-12 | 2013-02-27 | 中山爱科数字科技股份有限公司 | 一种能根据业务节点数自动进行负载均衡的综合业务平台 |
CN102184093A (zh) * | 2011-06-14 | 2011-09-14 | 复旦大学 | 多cell处理器构建的并行计算阵列架构 |
CN102646059B (zh) * | 2011-12-01 | 2017-10-20 | 中兴通讯股份有限公司 | 多核处理器系统的负载平衡处理方法及装置 |
CN102541467B (zh) * | 2011-12-06 | 2014-10-29 | 华中科技大学 | 一种对象数据服务器读写请求的调度方法 |
CN102402461A (zh) * | 2011-12-08 | 2012-04-04 | 曙光信息产业(北京)有限公司 | 一种基于作业规模的均衡调度方法 |
CN102638457B (zh) * | 2012-03-23 | 2014-10-15 | 苏州阔地网络科技有限公司 | 一种服务器资源自动分配方法及系统 |
CN102681902A (zh) * | 2012-05-15 | 2012-09-19 | 浙江大学 | 一种基于多核系统任务分配的负载均衡方法 |
CN103530173B (zh) * | 2012-07-06 | 2018-07-17 | 上海宝信软件股份有限公司 | 动态权重事件处理系统和方法 |
CN103729248B (zh) * | 2012-10-16 | 2017-12-15 | 华为技术有限公司 | 一种基于缓存感知的确定待迁移任务的方法和装置 |
CN102932170B (zh) | 2012-10-22 | 2016-06-22 | 中兴通讯股份有限公司 | 网元负载不均检测处理方法、装置及其系统 |
US20140189302A1 (en) * | 2012-12-28 | 2014-07-03 | Intel Corporation | Optimal logical processor count and type selection for a given workload based on platform thermals and power budgeting constraints |
CN103955355B (zh) * | 2013-03-18 | 2016-12-28 | 清华大学 | 一种应用于非易失处理器中的分段并行压缩方法及系统 |
CN103488728A (zh) * | 2013-09-17 | 2014-01-01 | 北京思特奇信息技术股份有限公司 | 一种业务系统中进程数量的动态伸缩调整方法及装置 |
CN103746838B (zh) * | 2013-12-26 | 2016-12-07 | 华北计算技术研究所 | 一种无中心节点计算机网络的任务调度方法 |
CN104754647B (zh) * | 2013-12-29 | 2018-06-22 | 中国移动通信集团公司 | 一种负载迁移的方法和设备 |
CN103927225B (zh) * | 2014-04-22 | 2018-04-10 | 浪潮电子信息产业股份有限公司 | 一种多核心架构的互联网信息处理优化方法 |
WO2015192345A1 (zh) * | 2014-06-18 | 2015-12-23 | 华为技术有限公司 | 一种数据处理装置及数据处理方法 |
CN104199738B (zh) * | 2014-08-11 | 2018-05-25 | 阔地教育科技有限公司 | 一种多数据处理设备协同工作方法及系统 |
WO2016044980A1 (zh) * | 2014-09-22 | 2016-03-31 | 华为技术有限公司 | 线程迁移方法、装置和系统 |
CN105528330B (zh) * | 2014-09-30 | 2019-05-28 | 杭州华为数字技术有限公司 | 负载均衡的方法、装置、丛集和众核处理器 |
CN106852173B (zh) * | 2014-10-29 | 2020-02-21 | 华为技术有限公司 | 访存的方法、内存控制器和处理器核 |
CN106569779A (zh) * | 2015-10-12 | 2017-04-19 | 北京京东尚科信息技术有限公司 | 一种防止重复执行的任务执行方法及装置 |
CN107665144B (zh) * | 2016-07-29 | 2021-02-26 | 北京京东尚科信息技术有限公司 | 分布式任务的均衡调度中心、方法、系统和装置 |
CN107515781B (zh) * | 2017-07-20 | 2020-07-07 | 哈尔滨工业大学(威海) | 一种基于多处理器的确定性任务调度及负载均衡系统 |
CN107562535A (zh) * | 2017-08-02 | 2018-01-09 | 广东睿江云计算股份有限公司 | 一种基于任务调度的负载均衡方法、系统 |
CN107656813A (zh) * | 2017-09-29 | 2018-02-02 | 上海联影医疗科技有限公司 | 一种负载调度的方法、装置及终端 |
CN109814985B (zh) * | 2017-11-20 | 2021-07-16 | 华为技术有限公司 | 一种任务调度方法及调度器、计算设备、系统 |
CN108255604A (zh) * | 2017-12-07 | 2018-07-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种smt多核操作系统的负载均衡方法 |
CN108710535A (zh) * | 2018-05-22 | 2018-10-26 | 中国科学技术大学 | 一种基于智能处理器的任务调度系统 |
KR102641520B1 (ko) * | 2018-11-09 | 2024-02-28 | 삼성전자주식회사 | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법 |
CN109976880B (zh) * | 2019-04-10 | 2021-08-31 | 上海东方财富证券投资咨询有限公司 | 一种虚拟机资源使用的方法及其系统 |
CN112579281B (zh) * | 2019-09-27 | 2023-10-10 | 杭州海康威视数字技术股份有限公司 | 资源分配方法、装置、电子设备及存储介质 |
CN112579263A (zh) * | 2019-09-29 | 2021-03-30 | 北京国双科技有限公司 | 任务执行方法及装置、存储介质及电子设备 |
CN112925616A (zh) * | 2019-12-06 | 2021-06-08 | Oppo广东移动通信有限公司 | 任务分配方法、装置、存储介质及电子设备 |
CN114386725A (zh) * | 2020-10-19 | 2022-04-22 | 中国科学院沈阳计算技术研究所有限公司 | 智能产线数据调度通信装置 |
CN112506640B (zh) * | 2021-02-07 | 2021-05-18 | 浙江地芯引力科技有限公司 | 一种用于加密运算芯片的多处理器架构及调配方法 |
-
2008
- 2008-01-22 CN CN2008100008332A patent/CN101458634B/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593168A (zh) * | 2012-08-13 | 2014-02-19 | 株式会社突飞软件 | 利用多重处理的渲染处理装置及方法 |
WO2021139726A1 (zh) * | 2020-01-07 | 2021-07-15 | 中科寒武纪科技股份有限公司 | 任务迁移的方法、装置、计算机设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101458634A (zh) | 2009-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101458634B (zh) | 负载均衡调度方法和装置 | |
Guo et al. | ishuffle: Improving hadoop performance with shuffle-on-write | |
Jalaparti et al. | Network-aware scheduling for data-parallel jobs: Plan when you can | |
CN106502792B (zh) | 一种面向不同类型负载的多租户资源优化调度方法 | |
CN102831120B (zh) | 一种数据处理方法及系统 | |
CN111327681A (zh) | 一种基于Kubernetes的云计算数据平台构建方法 | |
Wang et al. | Pigeon: An effective distributed, hierarchical datacenter job scheduler | |
CN103426072B (zh) | 一种高并发竞争库存的订单处理系统及其处理方法 | |
CN104050042B (zh) | Etl作业的资源分配方法及装置 | |
Chatzistergiou et al. | Fast heuristics for near-optimal task allocation in data stream processing over clusters | |
Wided et al. | Load balancing with Job Migration Algorithm for improving performance on grid computing: Experimental Results | |
Tao et al. | Dynamic resource allocation algorithm for container-based service computing | |
CN101290668B (zh) | 一种分时作业动态调度方法和装置 | |
CN108139939A (zh) | 用于并行工作窃取处理系统的抢先资源管理 | |
CN101957780A (zh) | 一种基于资源状态信息的网格任务调度处理器及方法 | |
Jiang et al. | Symbiosis: Network-aware task scheduling in data-parallel frameworks | |
CN102081554A (zh) | 云计算操作系统及其内核控制系统及方法 | |
CN108536528A (zh) | 应用感知的大规模网格作业调度方法 | |
Wong et al. | Parallel analytics as a service | |
Mohamed et al. | Hadoop-MapReduce job scheduling algorithms survey | |
CN112463395A (zh) | 一种资源分配方法、装置、设备及可读存储介质 | |
CN107515781A (zh) | 一种多处理器系统确定性调度和负载均衡方法 | |
Yi et al. | Dynamic weight based load balancing for microservice cluster | |
Li et al. | A frequency-aware and energy-saving strategy based on DVFS for Spark | |
LaFon et al. | On distributed file tree walk of parallel file systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |