CN102455944A - 多核负载均衡的方法以及处理器 - Google Patents
多核负载均衡的方法以及处理器 Download PDFInfo
- Publication number
- CN102455944A CN102455944A CN2010105247958A CN201010524795A CN102455944A CN 102455944 A CN102455944 A CN 102455944A CN 2010105247958 A CN2010105247958 A CN 2010105247958A CN 201010524795 A CN201010524795 A CN 201010524795A CN 102455944 A CN102455944 A CN 102455944A
- Authority
- CN
- China
- Prior art keywords
- task
- nuclear
- execution
- load
- wheel
- 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
Links
Landscapes
- Multi Processors (AREA)
Abstract
本发明针对无操作系统提供一种有效的多核负载均衡的方法以及实现该方法的处理器。处理器将每个核需要执行的任务组织成一个链表,在预设时间内记录每个核对应的执行轮数,执行轮数为核执行完对应链表上的所有任务的次数;处理器根据每个核对应的执行轮数判断每个核的负载情况并进行负载均衡;核对应的执行轮数越低,其核的负载越大。本发明中负载的计算不依赖于任务的执行时间,而是由执行轮数决定。在一定时间内,核完成的执行轮数间接表征了核的繁忙程度或者负载。执行轮数与负载的关系为:执行轮数越低,负载越大;执行轮数越高,表明核有执行更多任务的能力,负载越小。
Description
技术领域
本发明涉及基于多核处理技术,尤其涉及多核负载均衡技术。
背景技术
充分利用各个核的处理能力以提高系统吞吐率,是多核转发系统的关键。为此,需要把系统中的任务“均匀”的分布到各个核上去运行。均匀的分布并不是按任务的个数,而是让各个核的负载尽量均衡。
要实现各个核的负载均衡,首先必须了解各个核的当前负载情况。获得各个核的当前负载后,就可以向各个核上调度任务,以实现负载均衡。
核上如果运行了操作系统,那么核的负载很容易计算。操作系统支持的任务通常拥有不同的运行状态,只要把在一定时间内,核上所有任务处于运行状态的时间计算出来,那么核的负载就能够得出了。
上述计算负载的方式有个前提,即,核上运行了操作系统。如果没有,怎么办呢?
在一个无操作系统的核上,所有需要执行的任务,通常等价于被组织成FIFO(First InFirst Out,先进先出)链表。由于没有时钟中断,某个任务执行的前提条件为:在FIFO链表中其前面的任务执行完成。如果仍然按照拥有操作系统的核所使用的方法来计算负载,那么我们得出的结果有可能是不准确的。
假设核C上只运行了一个任务J,其运行特点为:每次运行首先会去轮询某个资源,如果资源存在,则对资源进行处理;否则退出,等待下次运行。由于核C上无操作系统,任务J退出后,系统会把任务J重新添加到FIFO链表中以等待下次调度执行。
如果系统调度一个任务的开销为Ts,任务J轮询资源的开销为Tp,处理资源的开销为Td,那么核C的负载介于Tp/(Tp+Ts)与(Tp+Td)/(Tp+Td+Ts)之间。通常,CPU负载就是一段时间内,任务执行时间总和与该时间段的比值。如1分种内,所有任务执行时间为30秒,那么该CPU的负载即为30秒/1分钟=50%。本文中,由于没有操作系统,CPU其实是一直都在运行,于是我们计算负载Tp/(Tp+Ts)的意义为:(Tp+Ts)为一个时间周期,而Tp则是这个周期内任务的执行时间(Ts为调度开销,不记入任务执行时间)。(Tp+Td)/(Tp+Td+Ts)可以做类似的解释,不同之处为:此时任务在有效工作(Td就是任务有效的执行时间),而不是简单的轮询(Tp就是轮询时间)。
很明显,即使任务J什么也不做,核C的负载也有Tp/(Tp+Ts)。当Tp大于Ts时(这种条件通常是成立的,因为调度开销在无操作系统的环境中非常小),核的负载不能被正确反映,对于公式:Tp/(Tp+Ts),当Tp=3,Ts=1时,计算出的负载为75%,而该结果是不准确的,因为此时任务其实什么都没有做(没有有效工作,仅仅在不停的轮询),核却将始终保持较高负载。此时,计算出的负载无法真正帮助负载均衡器实施均衡操作,因为均衡范围太小了。根据Tp/(Tp+Ts),即使任务什么都不做,其所在CPU的负载也可能非常高(如Tp=3,Ts=1),这样导致就算任务真正工作的时候,负载(Tp+Td)/(Tp+Td+Ts)的值与Tp/(Tp+Ts)比较起来差距也不大了。例如,当Tp与Ts的比例为3∶1,根据计算,核的负载最小也为75%,于是负载均衡器的均衡范围最多只有12.5%(25%/2),而该值通常意味着不进行均衡操作。
发明内容
本发明所要解决的技术问题是,针对无操作系统提供一种有效的多核负载均衡的方法以及实现该方法的处理器。
多核负载均衡的方法,包括以下步骤:
处理器将每个核需要执行的任务组织成一个链表,在预设时间内记录每个核对应的执行轮数,执行轮数为核执行完对应链表上的所有任务的次数;
处理器根据每个核对应的执行轮数判断每个核的负载情况并进行负载均衡;核对应的执行轮数越低,其核的负载越大。
本发明中负载的计算不依赖于任务的执行时间,而是由执行轮数决定。在一定时间内,核完成的执行轮数间接表征了核的繁忙程度或者负载。执行轮数与负载的关系为:执行轮数越低,负载越大;执行轮数越高,表明核有执行更多任务的能力,负载越小。
处理器根据每个核对应的执行轮数进行负载均衡具体步骤如下:
预设时间到,将每个核对应的执行轮数放入集合,逐轮进行如下负载均衡处理:在集合中选取当前的最大执行轮数与最小执行轮数,当 则将准备迁移的任务迁移至最小执行轮数所对应的核上,然后删除集合中的当前的最大执行轮数与最小执行轮数,返回以上负载均衡处理步骤,直至集合中不同时存在最大执行轮数与最小执行轮数时或者负载均衡结束。
进一步的,得出最大执行轮数所对应核上准备迁移的任务的步骤如下:在所述预设时间内,每个核每执行任务一次后,累加对应任务的执行时间;并将所述最大执行轮数所对应核上执行的每个任务放入集合,依次在集合中选取执行时间最长的任务作为准备迁移的任务,直至则不再在集合中选取任务,得出本次最大执行轮数所对应核上准备迁移的所有任务。表示准备迁移的任务在所在核上导致的负载,而不大于是因为必须保证迁移后不会导致新的不平衡。因为我们的迁移条件是,迁移后两个核的负载差异应小于预设值,那么迁移的任务所导致的负载须保证不大于
优选的,所述预设值为20%。
无操作系统的处理器,包括2个或2个以上的核、负载均衡器;
核用于,执行其对应链表中的任务,在预设时间内记录该核对应的执行轮数,执行轮数为核执行完对应链表上的所有任务的次数;
负载均衡器用于,根据每个核对应的执行轮数判断每个核的负载情况并进行负载均衡;核对应的执行轮数越低,其核的负载越大。
负载均衡器具体用于,预设时间到,将每个核对应的执行轮数放入集合,开始逐轮进行负载均衡处理,步骤如下:在集合中选取当前的最大执行轮数与最小执行轮数;当则将最大执行轮数所对应核上准备迁移的任务迁移至最小执行轮数所对应的核上,然后删除集合中的当前的最大执行轮数与最小执行轮数,继续进行以上负载均衡的处理步骤,直至集合中不同时存在最大执行轮数与最小执行轮数时或者负载均衡结束。
进一步的,核还用于,每个核每执行一次任务后,累加对应任务的执行时间;
负载均衡器还用于,得出最大执行轮数所对应核上准备迁移的任务,步骤如下:在所述预设时间内,每个核每执行任务一次后,累加对应任务的执行时间;并将所述最大执行轮数所对应核上执行的每个任务放入集合,依次在集合中选取执行时间最长的任务作为准备迁移的任务,直至则不再在集合中选取任务,得出本次最大执行轮数所对应核上准备迁移的所有任务。
根据每个核对应的执行轮数、任务的执行时间,逐轮进行负载均衡处理,在集合中选取当前的最大执行轮数与最小执行轮数;当且最大执行轮数所对应的核上将准备迁移的任务迁移至最小执行轮数所对应的核上,之后,再删除集合中的当前的最大执行轮数与最小执行轮数,继续进行负载均衡的处理,直至集合中不同时存在最大执行轮数与最小执行轮数时,负载均衡结束。
本发明的有益效果是,核的负载能够被正确反映,并有效进行负载均衡。
具体实施方式
在无操作系统的多核平台上进行负载均衡过程如下:
将每个需要核执行的任务被组织成一个链表,核每执行完一次链表上所有的任务,执行轮数加1;同时,核每执行一次任务,把执行时间累加到对应任务上;
负载均衡器每隔预设时间T,根据各个核在该时间内的执行轮数(表征负载)进行负载均衡;
进行负载均衡时,负载均衡器首先把每个核的执行轮数放入集合S中,然后开始逐轮进行负载均衡;
每轮负载均衡,均衡器从集合S中选取差异最大的两个值——Max和Min。
如果Max和Min不同时存在(包括S为空),或者(Max-Min)/Max小于20%,则整个负载均衡过程结束。
如果Max和Min同时存在,则只有当两者执行轮数差异大于或等于20%,并且任务迁移后不会导致新的不均衡才进行负载均衡(从Max对应核上选取一个或者多个任务,只要这些任务的执行时间之和Sum(JXT)除以预设时间T小于等于10%,从Max对应核上选取一个或者多个任务的执行时间之和用Sum(JXT)表示),任务调度后把Max和Min从集合S中删除;否则把Max从集合S中删除,然后进行下轮负载均衡。
无操作系统的处理器,包括2个或2个以上的核、负载均衡器;处理器具体实现多核的负载均衡时,定义如下对象:
IDJ,空闲任务,不做任何操作。IDJ每次执行就立即退出。
RJQ,就绪任务队列,初始时只有一个任务,即IDJ。所有需要核调度执行的任务按照FIFO的方式组织到RJQ上。
XJQ,执行任务队列,初始时为空即没有任务。所有正在被核执行的任务按照FIFO的方式组织到XJQ上。
XC,执行轮数。XC记录直至负载均衡器获取负载之前,核执行完XJQ上所有任务的次数,初始时值为0。
JXT,任务执行时间。JXT记录直至负载均衡器获取负载之前,核执该任务花费的时间,初始时值为0。
BT,均衡周期。每BT时间,均衡器开始执行均衡操作。
核的执行步骤(每个核相同):
步骤301,把整个就绪任务队列RJQ上的任务取出(至少有一个任务,IDJ),按照其在RJQ上的顺序组织到执行任务队列XJQ上,然后进行步骤302的处理;
步骤302,依次执行XJQ上的任务。每执行完一个任务,则把执行花费的时间累加到任务对应的JXT上(IDJ除外),同时把任务按照FIFO方式添加到RJQ上。所有任务执行完毕后,首先令执行轮数XC=XC+1,然后进行步骤303的处理;
步骤303,当收到负载均衡器发送的均衡开始通告后,进行步骤304的处理,否则进行步骤301的处理;
步骤304,当收到负载均衡器发送的均衡结束通告后,进行步骤305的处理;当收到负载均衡器发送的获取负载的通告后,进行步骤306的处理;当收到负载均衡器发送的任务迁移取出通告后,进行步骤307的处理;当收到负载均衡器发送的任务迁移插入通告后,进行步骤308的处理;否则,继续步骤304的处理;
步骤305,设置就绪任务队列RJQ上所有任务的任务执行时间JXT值为0,设置执行轮数XC=0,然后进行步骤301的处理;
步骤306,返回执行轮数XC的值,然后进行步骤304的处理;
步骤307,从就绪任务队列RJQ上选取一个或者多个任务,使得这些任务的SUM(JXT)除以BT小于等于10%。只要Sum(JXT)/BT不超过10%,可以选择多个任务进行迁移。任务选取完成后,从就绪任务队列RJQ把这些任务取出,然后发送给负载均衡器,然后进行步骤304的处理;
步骤308,把任务迁移插入通告中的任务按照FIFO方式插入就绪任务队列RJQ中,然后进行步骤304的处理;
负载均衡器的执行步骤:
步骤309,启动定时器(时间间隔为BT),然后进行步骤309的处理;
步骤310,当定时器超时,进行步骤311的处理,否则继续进行步骤310的处理;
步骤311,依次发送均衡开始通告给各个核,然后进行步骤312的处理;
步骤312,依次发送获取负载通告给各个核,收集完所有核的执行轮数XC后,把所有执行轮数XC放入集合S中,作为其元素,然后进行步骤313的处理;
步骤313,从集合S中选取一个值最大的元素Max和一个值最小的元素Min。如果Max和Min不同时存在(集合S为空或者只有一个元素),依次发送均衡结束通告给各个核,返回步骤310;如果Max和Min同时存在,则进行步骤314的处理;
步骤314,如果(Max-Min)/Max小于20%,依次发送均衡结束通告给各个核,然后返回步骤310;否则,进行步骤315的处理;
步骤315,发送任务迁移取出通告给Max所对应的核,然后等待其返回的迁移任务。如果返回为空,则把Max从S中删除,然后返回步骤313;否则,首先把返回的迁移任务通过迁移插入通告发送给Min所对应的核,接着把Max和Min从集合S中删除,然后返回步骤313。
Claims (8)
1.多核负载均衡的方法,其特征在于,包括以下步骤:
处理器将每个核需要执行的任务组织成一个链表,在预设时间内记录每个核对应的执行轮数,执行轮数为核执行完对应链表上的所有任务的次数;
处理器根据每个核对应的执行轮数判断每个核的负载情况并进行负载均衡;核对应的执行轮数越低,其核的负载越大。
4.如权利要求2或3所述多核负载均衡的方法,其特征在于,所述预设值为20%。
5.处理器,其特征在于,包括2个或2个以上的核、负载均衡器;
所述核用于,执行其对应链表中的任务,在预设时间内记录该核对应的执行轮数,执行轮数为核执行完对应链表上的所有任务的次数;
所述负载均衡器用于,根据每个核对应的执行轮数判断每个核的负载情况并进行负载均衡;核对应的执行轮数越低,其核的负载越大。
8.如权利要求6或7所述处理器,其特征在于,所述预设值为20%。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105247958A CN102455944A (zh) | 2010-10-29 | 2010-10-29 | 多核负载均衡的方法以及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105247958A CN102455944A (zh) | 2010-10-29 | 2010-10-29 | 多核负载均衡的方法以及处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102455944A true CN102455944A (zh) | 2012-05-16 |
Family
ID=46039156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105247958A Pending CN102455944A (zh) | 2010-10-29 | 2010-10-29 | 多核负载均衡的方法以及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102455944A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786614A (zh) * | 2015-01-14 | 2016-07-20 | 联发科技股份有限公司 | 电子设备中处理器的负载计算方法和负载计算系统 |
CN106487784A (zh) * | 2016-09-28 | 2017-03-08 | 东软集团股份有限公司 | 一种会话迁移的方法、装置及防火墙 |
CN106502779A (zh) * | 2014-03-28 | 2017-03-15 | 哈尔滨工业大学 | 一种基于NoC多核同构系统的负载判断方法的任务迁移方法 |
CN107885585A (zh) * | 2016-09-30 | 2018-04-06 | 罗伯特·博世有限公司 | 一种在多核电子控制单元中的动态任务调度器 |
CN108139928A (zh) * | 2015-08-26 | 2018-06-08 | Netapp股份有限公司 | 在cpu核之间的迁移 |
CN109086128A (zh) * | 2018-08-28 | 2018-12-25 | 迈普通信技术股份有限公司 | 任务调度方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256515A (zh) * | 2008-03-11 | 2008-09-03 | 浙江大学 | 多核处理器操作系统负载均衡的实现方法 |
CN101458634A (zh) * | 2008-01-22 | 2009-06-17 | 中兴通讯股份有限公司 | 负载均衡调度方法和装置 |
-
2010
- 2010-10-29 CN CN2010105247958A patent/CN102455944A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458634A (zh) * | 2008-01-22 | 2009-06-17 | 中兴通讯股份有限公司 | 负载均衡调度方法和装置 |
CN101256515A (zh) * | 2008-03-11 | 2008-09-03 | 浙江大学 | 多核处理器操作系统负载均衡的实现方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502779A (zh) * | 2014-03-28 | 2017-03-15 | 哈尔滨工业大学 | 一种基于NoC多核同构系统的负载判断方法的任务迁移方法 |
CN106502779B (zh) * | 2014-03-28 | 2019-07-02 | 哈尔滨工业大学 | 一种基于NoC多核同构系统的负载判断方法的任务迁移方法 |
CN105786614A (zh) * | 2015-01-14 | 2016-07-20 | 联发科技股份有限公司 | 电子设备中处理器的负载计算方法和负载计算系统 |
CN105786614B (zh) * | 2015-01-14 | 2020-03-10 | 联发科技股份有限公司 | 电子设备中处理器的负载计算方法和负载计算系统 |
CN108139928A (zh) * | 2015-08-26 | 2018-06-08 | Netapp股份有限公司 | 在cpu核之间的迁移 |
CN106487784A (zh) * | 2016-09-28 | 2017-03-08 | 东软集团股份有限公司 | 一种会话迁移的方法、装置及防火墙 |
CN106487784B (zh) * | 2016-09-28 | 2019-06-25 | 东软集团股份有限公司 | 一种会话迁移的方法、装置及防火墙 |
CN107885585A (zh) * | 2016-09-30 | 2018-04-06 | 罗伯特·博世有限公司 | 一种在多核电子控制单元中的动态任务调度器 |
CN109086128A (zh) * | 2018-08-28 | 2018-12-25 | 迈普通信技术股份有限公司 | 任务调度方法及装置 |
CN109086128B (zh) * | 2018-08-28 | 2021-06-18 | 迈普通信技术股份有限公司 | 任务调度方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102455944A (zh) | 多核负载均衡的方法以及处理器 | |
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
US8806498B2 (en) | Method and system for resolving dependency among the enqueued works and/or finished works and scheduling the dependency-resolved works | |
CN106293950B (zh) | 一种面向集群系统的资源优化管理方法 | |
CN106776272B (zh) | 嵌入式系统实时性能测试方法 | |
US8549524B2 (en) | Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems | |
EP3376379A1 (en) | Task management methods and system, and computer storage medium | |
WO2017048420A1 (en) | Efficient scheduling of multi-versioned tasks | |
US9588808B2 (en) | Multi-core system performing packet processing with context switching | |
CN105204938B (zh) | 一种内存访问的数据密集型进程调度方法 | |
JP2011507112A5 (zh) | ||
CN104572305A (zh) | 均衡负载的集群渲染任务调度方法 | |
US20120246652A1 (en) | Processor Management Via Thread Status | |
CN107506234B (zh) | 一种虚拟机调度方法及装置 | |
US9417930B2 (en) | Time slack application pipeline balancing for multi/many-core PLCs | |
WO2013185571A1 (zh) | 多线程虚拟流水线处理器的线程控制和调用方法及其处理器 | |
CN113835866B (zh) | 多线程任务调度优化方法 | |
Yildiz et al. | Chronos: Failure-aware scheduling in shared Hadoop clusters | |
CN111506430A (zh) | 多任务下数据处理的方法、装置及电子设备 | |
WO2017052920A1 (en) | Adaptive chunk size tuning for data parallel processing on multi-core architecture | |
CN108829519A (zh) | 基于云平台的任务调度方法、云平台及计算机可读存储介质 | |
CN102402461A (zh) | 一种基于作业规模的均衡调度方法 | |
CN110011936A (zh) | 基于多核处理器的线程调度方法及装置 | |
CN110275765A (zh) | 基于分支dag依赖的数据并行作业调度方法 | |
Gharajeh et al. | Heuristic-based task-to-thread mapping in multi-core processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120516 |