CN111837104B - 一种在多个处理器之间调度软件任务的方法和装置 - Google Patents
一种在多个处理器之间调度软件任务的方法和装置 Download PDFInfo
- Publication number
- CN111837104B CN111837104B CN201980009713.5A CN201980009713A CN111837104B CN 111837104 B CN111837104 B CN 111837104B CN 201980009713 A CN201980009713 A CN 201980009713A CN 111837104 B CN111837104 B CN 111837104B
- Authority
- CN
- China
- Prior art keywords
- coroutine
- group
- processor
- fusion
- priority
- 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
- 238000000034 method Methods 0.000 title claims abstract description 72
- 230000004927 fusion Effects 0.000 claims abstract description 135
- 238000012545 processing Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 abstract description 14
- 230000015654 memory Effects 0.000 description 33
- 230000000875 corresponding effect Effects 0.000 description 22
- 230000006870 function Effects 0.000 description 15
- 101100224522 Mus musculus Dppa3 gene Proteins 0.000 description 14
- 101100329418 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CRG1 gene Proteins 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 102100025248 C-X-C motif chemokine 10 Human genes 0.000 description 6
- 239000000306 component Substances 0.000 description 6
- 230000005012 migration Effects 0.000 description 6
- 238000013508 migration Methods 0.000 description 6
- 101100222378 Mus musculus Cxcl10 gene Proteins 0.000 description 4
- 230000002079 cooperative effect Effects 0.000 description 3
- 101000858088 Homo sapiens C-X-C motif chemokine 10 Proteins 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000008358 core component Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Multi Processors (AREA)
Abstract
本申请实施例公开了一种在多个处理器之间调度软件任务的方法和装置,涉及通信技术领域,解决了现有技术中调度协程组时,不能满足业务时序要求,运行效率低等问题。具体方案为:获取多个处理器中第二处理器的第一协程组,第一协程组为从第二处理器迁移至多个处理器中的第一处理器的协程组;融合第一协程组与第一处理器的第二协程组以得到融合协程组;其中,融合协程组包括多个协程,多个协程包括第一协程组中的至少一个第一协程和第二协程组中的至少一个第二协程,每个协程具有一优先级,且多个协程在融合协程组中按照多个协程的优先级来排序;在执行融合协程组时,按照排序执行多个协程。
Description
技术领域
本申请实施例涉及通信技术领域,尤其涉及一种在多个处理器之间调度软件任务的方法和装置。
背景技术
通信系统,如5G通信系统中的处理器可以同时运行一个或多个线程。传统线程作为操作系统(Operating System,OS)调度的最小粒度,能够满足传统业务的正常运行。但对于对称多处理器(Symmetrical Multi-Processing,SMP)系统,由于多核间实时的优先级调度以及在传统调度的基础上增加了锁开销,由任务调度引起的任务在不同核之间的切换的时间消耗有所增加。因此对于时延要求较高的业务,基于线程的调度方案性能不佳。因此,现有技术发展出一种采用协程(Coroutine,CR)的轻量级调度的方案,能够更好满足这种场景。为了根据业务所处的不同场景对业务进行迁移,可以将强相关的一组协程划分到一个协程组(Coroutine Group,CRG)里。假定一个核是一个处理器,例如中央处理器(CentralProcessing Unit,CPU),在峰值场景下,充分利用CPU资源,每个CPU都运行着不同的CRG,满足5G通信的性能要求;在非峰值场景下,为了降低系统功耗,可以将多个CRG迁移到一个CPU上。
如图1所示,每个圆圈代表一个协程,SMP系统包括四个CPU,CPU2上运行CRG0,CPU3上运行CRG1,其中,CRG0和CRG1的优先级相同,CRG0和CRG1中的协程A/B的优先级高于协程C/D,协程C/D的优先级高于协程E/F。为了降低处理器的功耗,可以将CPU3中的CRG1迁移至CPU2上,所述迁移也叫切换。现有的一种调度方案为了提高切换效率,可以先调度CRG0再调度CRG1,但这将导致CRG1中的高优先级的协程A/B会被推迟到CRG0中的较低优先级的协程E/F之后运行,不满足业务时序要求,影响业务基本功能。现有的另一种调度方案,可以基于预设时序进行调度,但该方案将出现CRG0和CRG1中的协程在协程组之间交错运行,降低切换效率。
发明内容
本申请实施例提供一种在多个处理器之间调度软件任务的方法和装置,能够在满足业务时序要求的同时,提高软件任务的调度效率,降低系统功耗。
为达到上述目的,本申请实施例采用如下技术方案:
本申请实施例的第一方面,提供一种在多个处理器之间调度软件任务的方法,该方法包括:获取多个处理器中第二处理器的第一协程组,该第一协程组为从上述第二处理器迁移至上述多个处理器中的第一处理器的协程组;融合该第一协程组与上述第一处理器的第二协程组以得到融合协程组;其中,该融合协程组包括多个协程,该多个协程包括上述第一协程组中的至少一个第一协程和上述第二协程组中的至少一个第二协程,每个协程具有一优先级,且该多个协程在上述融合协程组中按照该多个协程的优先级来排序;在执行上述融合协程组时,按照该排序执行该多个协程。基于本方案,通过将第一协程组和第二协程组融合得到融合协程组,并按照融合协程组中的多个协程的优先级顺序执行融合协程组,从而能够满足业务时序要求;而且通过将多个协程组融合为一个融合协程组进行调度,能够提高软件任务的调度效率,降低系统功耗。
结合第一方面,在一种可能的实现方式中,每个协程组具有协程组优先级;上述融合协程组、上述第一协程组和上述第二协程组具有相同的第一协程组优先级。基于本方案,可以将协程组优先级相同的第一协程组和第二协程组融合得到融合协程组。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在融合上述第一协程组与上述第一处理器的第二协程组以得到融合协程组之前,上述方法还包括:根据上述第一协程组优先级确定支持融合上述第一协程组与上述第二协程组;或者,根据上述第一协程组和上述第二协程组的第一标识确定支持融合上述第一协程组与上述第二协程组。基于本方案,可以根据协程组的优先级或者协程组携带的第一标识确定是否支持融合第一协程组和第二协程组。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,上述方法还包括:获取上述第二处理器的第三协程组,该第三协程组为从上述第二处理器迁移至上述第一处理器的协程组;该第三协程组的第二协程组优先级不同于上述融合协程组的第一协程组优先级,或者,该第三协程组的第一标识不支持融合;按照上述第二协程组优先级和上述第一协程组优先级的排序执行上述融合协程组和该第三协程组。基于本方案,可以将不支持融合的第三协程组和融合协程组按照协程组的优先级顺序进行调度。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,上述融合协程组包括的上述多个协程共用同一个融合栈空间、任务控制块和上下文信息。基于本方案,由于融合协程组中的多个协程共用同一个融合栈空间、任务控制块和上下文信息,因此在按照融合协程组中的多个协程的优先级顺序执行融合协程组时,是在一个协程组中的不同协程之间进行切换,与现有技术中在不同的协程组之间切换相比,本实施例的切换时间更短,软件任务的调度效率更高。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,上述第一协程组具有第一栈空间,上述第二协程组具有第二栈空间,上述融合协程组具有融合栈空间,该融合栈空间与上述第一栈空间或上述第二栈空间相同,或者,该融合栈空间与上述第一栈空间和所述第二栈空间均不同。基于本方案,融合协程组对应的栈空间可以复用第一协程组或第二协程组对应的栈空间,也可以为融合协程组创建新的栈空间。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,上述方法由所述第一处理器执行。基于本方案,可以通过第一处理器融合第一协程组和第二协程组,并调度相应的软件任务。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,若上述第一处理器为主处理器,上述方法还包括:在迁移上述融合协程组中的上述第一协程组时,将上述第一协程组从上述第一处理器迁移至上述多个处理器中的第三处理器。基于本方案,可以以协程组的粒度对第一协程组和第二协程组分别分开管理,在迁移融合协程组中的第一协程组时,可以将融合协程组中的第一协程组以协程组的粒度重新进行迁移,无需对融合协程组中的多个协程重新划分协程组,能够充分管理和利用硬件资源。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,若上述第一处理器为从处理器,上述方法还包括:在迁移上述融合协程组中的上述第一协程组时,接收主处理器发送的配置信息,该配置信息用于指示上述第一协程组从上述第一处理器迁移至上述多个处理器中的第三处理器;释放上述融合协程组对应的融合栈空间。基于本方案,在迁移融合协程组中的第一协程组后,可以将融合栈空间释放,以节省内存空间。
本申请实施例的第二方面,提供一种多核处理设备,该多核处理设备包括多个处理器,该多个处理器包括第一处理器和第二处理器;该第一处理器,用于:获取多个处理器中第二处理器的第一协程组,该第一协程组为从上述第二处理器迁移至上述多个处理器中的第一处理器的协程组;融合该第一协程组与上述第一处理器的第二协程组以得到融合协程组;其中,该融合协程组包括多个协程,该多个协程包括上述第一协程组中的至少一个第一协程和上述第二协程组中的至少一个第二协程,每个协程具有一优先级,且该多个协程在上述融合协程组中按照该多个协程的优先级来排序;在执行上述融合协程组时,按照该排序执行该多个协程。
结合第二方面,在一种可能的实现方式中,每个协程组具有协程组优先级;上述融合协程组、上述第一协程组和上述第二协程组具有相同的第一协程组优先级。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,上述第一处理器,还用于根据上述第一协程组优先级确定支持融合上述第一协程组与上述第二协程组;或者,根据上述第一协程组和上述第二协程组的第一标识确定支持融合该第一协程组与第二协程组。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,上述第一处理器,还用于:获取上述第二处理器的第三协程组,该第三协程组为从上述第二处理器迁移至上述第一处理器协程组;该第三协程组的第二协程组优先级不同于上述融合协程组的第一协程组优先级,或者,该第三协程组的第一标识不支持融合;按照该第二协程组优先级和上述第一协程组优先级的排序执行上述融合协程组和上述第三协程组。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,上述融合协程组包括的上述多个协程共用同一个融合栈空间、任务控制块和上下文信息。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,上述第一协程组具有第一栈空间,上述第二协程组具有第二栈空间,上述融合协程组具有融合栈空间,该融合栈空间与上述第一栈空间或上述第二栈空间相同,或者,上述融合栈空间与上述第一栈空间和上述第二栈空间均不同。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,若上述第一处理器为主处理器,上述第一处理器,还用于在迁移上述融合协程组中的上述第一协程组时,将上述融合协程组中的第一协程组从上述第一处理器迁移至上述多个处理器中的第三处理器。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,上述多个处理器还包括第三处理器,若上述第一处理器为从处理器,上述第一处理器,还用于:在迁移上述融合协程组中的上述第一协程组时,接收主处理器发送的配置信息,该配置信息用于指示上述第一协程组从上述第一处理器迁移至上述多个处理器中的第三处理器;释放上述融合协程组对应的融合栈空间。
本申请实施例的第三方面,提供一种在多个处理器之间调度软件任务的装置,该装置包括:获取单元,用于获取多个处理器中第二处理器的第一协程组,该第一协程组为从该第二处理器迁移至上述多个处理器中的第一处理器的协程组;处理单元,用于融合上述第一协程组与上述第一处理器的第二协程组以得到融合协程组;其中,该融合协程组包括多个协程,该多个协程包括上述第一协程组中的至少一个第一协程和上述第二协程组中的至少一个第二协程,每个协程具有一优先级,且该多个协程在上述融合协程组中按照该多个协程的优先级来排序;在执行上述融合协程组时,按照该排序执行上述多个协程。
结合第三方面,在一种可能的实现方式中,每个协程组具有协程组优先级;上述融合协程组、上述第一协程组和上述第二协程组具有相同的第一协程组优先级。
结合第三方面和上述可能的实现方式,在另一种可能的实现方式中,上述处理单元,还用于根据上述第一协程组优先级确定支持融合上述第一协程组与上述第二协程组;或者,根据上述第一协程组和上述第二协程组的第一标识确定支持融合上述第一协程组与上述第二协程组。
结合第三方面和上述可能的实现方式,在另一种可能的实现方式中,上述获取单元,还用于获取上述第二处理器的第三协程组,该第三协程组为从上述第二处理器迁移至上述第一处理器协程组;该第三协程组的第二协程组优先级不同于上述融合协程组的第一协程组优先级,或者,该第三协程组的第一标识不支持融合;上述处理单元,还用于按照上述第二协程组优先级和上述第一协程组优先级的排序执行上述融合协程组和上述第三协程组。
结合第三方面和上述可能的实现方式,在另一种可能的实现方式中,上述融合协程组包括的上述多个协程共用同一个融合栈空间、任务控制块和上下文信息。
结合第三方面和上述可能的实现方式,在另一种可能的实现方式中,上述第一协程组具有第一栈空间,上述第二协程组具有第二栈空间,上述融合协程组具有融合栈空间,上述融合栈空间与上述第一栈空间或上述第二栈空间相同,或者,上述融合栈空间与上述第一栈空间和上述第二栈空间均不同。
结合第三方面和上述可能的实现方式,在另一种可能的实现方式中,若上述第一处理器为主处理器,上述处理单元,还用于在迁移上述融合协程组中的上述第一协程组时,将上述融合协程组中的第一协程组从上述第一处理器迁移至上述多个处理器中的第三处理器。
结合第三方面和上述可能的实现方式,在另一种可能的实现方式中,若上述第一处理器为从处理器,上述获取单元,还用于在迁移上述融合协程组中的上述第一协程组时,接收主处理器发送的配置信息,该配置信息用于指示上述第一协程组从上述第一处理器迁移至上述多个处理器中的第三处理器;上述处理单元,还用于释放上述融合协程组对应的融合栈空间。
上述第二方面以及第二方面的各种实现方式和第三方面以及第三方面的各种实现方式的效果描述可以参考第一方面和第一方面的各种实现方式的相应效果的描述,在此不再赘述。
本申请实施例的第四方面,提供一种计算机存储介质,该计算机存储介质中存储有计算机程序代码,当上述计算机程序代码在处理器上运行时,使得处理器执行第一方面或第一方面的可能的实现方式中任一所述的在多个处理器之间调度软件任务的方法。
本申请实施例的第五方面,提供了一种计算机程序产品,该程序产品储存有上述处理器执行的计算机软件指令,该计算机软件指令包含用于执行上述方面所述方案的程序。
本申请实施例的第六方面,提供了一种装置,该装置以芯片的产品形态存在,该装置的结构中包括处理器和存储器,该存储器用于与处理器耦合,保存该装置必要的程序指令和数据,该处理器用于执行存储器中存储的程序指令,使得该装置执行上述方法中在多个处理器之间调度软件任务的装置的功能。
附图说明
图1为现有技术提供的一种调度方法的示意图;
图2为本申请实施例提供的一种SMP系统的结构示意图;
图3为本申请实施例提供的一种在多个处理器之间调度软件任务的方法的流程示意图;
图4为本申请实施例提供的一种在多个处理器之间调度软件任务的方法的应用示意图;
图5为本申请实施例提供的另一种在多个处理器之间调度软件任务的方法的应用示意图;
图6为本申请实施例提供的另一种在多个处理器之间调度软件任务的方法的流程示意图;
图7为本申请实施例提供的另一种在多个处理器之间调度软件任务的方法的流程示意图;
图8为本申请实施例提供的另一种在多个处理器之间调度软件任务的方法的应用示意图;
图9为本申请实施例提供的一种在多个处理器之间调度软件任务的装置的组成示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c或a-b-c,其中a、b和c可以是单个,也可以是多个。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,操作系统调度软件任务时,可以采用协程的轻量级调度,协程的调度完全由用户控制。为了根据业务所处的具体场景,例如,峰值态、普通业务态、低功耗态等,充分管理利用硬件资源,可以在多个处理器之间调度软件任务,以提高运行效率,降低系统功耗。在本实施例中,软件任务可以是通信任务,例如5G通信任务。
本申请实施例提供一种在多个处理器之间调度软件任务的方法,能够应用于对称多处理器(Symmetrical Multi-Processing,SMP)系统,但是并不仅限于此种系统,后文以该SMP系统为例作介绍。该SMP系统包括多个处理器,该多个处理器汇集在一个计算机上,该多个处理器之间共享内存子系统和总线结构。该计算机可以为通信终端、平板电脑、桌面型、膝上型、笔记本电脑、超级移动个人计算机(Ultra-mobile Personal Computer,UMPC)、手持计算机、上网本、个人数字助理(Personal Digital Assistant,PDA)、等设备,本申请实施例中对计算机的具体形式不做特殊限制,后续以该计算机为一个通信终端为例做介绍。所述SMP系统可以是芯片、芯片组或电路板,并可以运行必要的计算机软件程序并软件在多个处理器之间调度软件任务。每个处理器可以是一个核。
图2为本申请实施例提供的一种SMP系统的结构示意图。如图2所示,该SMP系统200包括:硬件层和软件层,硬件层包括多个处理器201、存储器202、总线203等,软件层包括操作系统204。处理器201是SMP系统200的核心部件,用于运行SMP系统200的操作系统204与SMP系统200上的应用程序(包括系统应用程序和第三方应用程序)。图2所示的SMP系统200中的多个处理器201没有主次之分(除启动和初始化外),每个处理器201平等动态地从进程就绪队列中调度进程加以执行,中断请求也是等概率动态地分配给某个处理器201,由其提供中断服务。
示例性的,SMP系统200中包括的多个处理器201,通过一个操作系统控制不同处理器之间协同工作,该多个处理器201中的一个处理器201为主处理器,其他处理器为从处理器,该主处理器可以管理其他从处理器。例如,主处理器可以根据预设策略将多个协程组迁移到一个处理器上。本申请实施例中,处理器201具体可以为中央处理器(centralprocessing unit,CPU),其可以实现或执行结合本申请实施例公开的内容所描述的各种示例性的逻辑方框和流程,具体可包括不同模块和电路。每个处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等,也可以具体是一种特定处理器,如微处理器。本申请实施例仅以处理器包括CPU为例进行说明,但实际上每个处理器还可包括数字信号处理器、微处理器、微控制器或神经网络处理器。如图2所示,SMP系统200包括多个CPU,每个CPU包括一个或多个物理核(Core),每个Core可以是个数字信号处理器、微处理器、微控制器或神经网络处理器。本申请实施例对于SMP系统200包含的CPU的数量以及每个CPU包含的物理核Core的数量并不进行限制。可理解的是,图2仅为示例性结构图,每个CPU包括的Core的数量可以相同,也可以不同,本申请实施例对此不进行限定。
存储器202可用于存储软件程序以及软件模块,处理器201通过运行存储在存储器202里的软件程序以及模块,从而执行SMP系统200的各种功能应用以及数据处理。存储器202可包含一个或多个计算机可读存储介质。存储器202包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等,例如,可存储实现本申请实施例提供的在多个处理器之间调度软件任务的方法的程序。存储数据区可存储SMP系统200创建的数据等。例如,存储器202中包括每个协程组对应的栈空间,每个栈空间用于存储调度各个协程组时产生的局部变量和局部数组等。本申请实施例中,存储器202具体可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);该存储器也可以包括非易失性存储器(non-volatile memory),快闪存储器(flashmemory),硬盘(hard fisk drive,HDD)或固态硬盘(solid-state drive,SSD);该存储器还可以包括上述种类的存储器的组合。
总线203是计算机各种功能部件之间传送信息的公共通信干线,按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号,总线也可同时具有以上多种总线的功能,本实施例不限定。如图2所示,SMP系统200中包括的多个处理器201共用总线203。
操作系统204(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,用于支持其他软件,例如各种应用程序的运行。本申请实施例中操作系统可以为各种操作系统,例如,Windows操作系统、Linux操作系统、iOS操作系统,Android开源操作系统等。需要说明的是,本申请实施例中SMP系统200包括的多个处理器201运行同一个操作系统。可替换地,所述方案也可支持多操作系统,本实施例不限定。
可理解的是,图2仅为示例性说明,实际应用中,SMP系统200可以包括比图2所示更多或者更少的部件。例如,SMP系统200还可以包括用户接口,用于支持系统和用户之间进行交互和信息交换,或者SMP系统200还包括通信接口,用于支持终端与其它终端、服务器、网络之间的通信;图2所示结构不对本申请实施例提供的SMP系统构成任何限制。
在此,对本申请实施例中涉及的部分名词进行解释说明:
协程:是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。一个线程可以包括多个协程。
协程组:为包括多个协程的一组协程,一个协程组中的多个协程可以满足预设规则。例如,可以将业务强相关的一组功能的协程划分为一个协程组,本申请实施例对于协程组的划分原则并不进行限定,在此仅是示例性说明。可以理解的,由于协程本身没有独立的栈空间,不能实时迁移,因此通过将满足预设规则的多个协程划分为一个协程组,该协程组可以与传统的任务一样,作为协程的执行环境,有独立的栈空间,支持实时迁移。
为了解决背景技术中,调度协程组时,不能满足业务时序要求,运行效率低等问题,本申请实施例提供了一种在多个处理器之间调度软件任务的方法,该方法能够满足业务时序要求,提高软件任务的调度效率,降低系统功耗,充分管理和利用硬件资源。结合图2,如图3所示,本申请实施例提供的在多个处理器之间调度软件任务的方法可以包括步骤S301-S303。
S301、第一处理器获取第二处理器的第一协程组。第一协程组为从第二处理器迁移至的第一处理器的协程组。该第一处理器和第二处理器可以为图2所示的SMP系统200中的处理器。一种实现方式,若第一处理器为主处理器,步骤S301中第一处理器获取第二处理器的第一协程组可以包括:第一处理器将第二处理器的第一协程组从第二处理器迁移至第一处理器,即第一处理器将第一协程组从第二处理器配置给第一处理器。例如,该主处理器可以将第一协程组的数据结构绑定关系从与第二处理器绑定修改为与该主处理器绑定。示例性的,该第一处理器可以为图2所示的SMP系统200中的任一处理器。SMP系统200中除主处理器以外的其他处理器可以称为从处理器。
上述第一协程组迁移之前为第二处理器中的协程组,其中一个处理器中的协程组即被该处理器作为任务运行的协程组,第一协程组可以包括至少一个第一协程,该第一协程组中的多个第一协程为满足预设规则的一组协程。示例性的,上述第一协程组具有第一栈空间,该第一栈空间可以为初始化时为该第一协程组分配的栈空间,该第一栈空间用于存储调度该第一协程组中的协程时产生的局部变量和局部数组等。
示例性的,第一处理器可以根据预设策略将第二处理器中的一个或多个第一协程组从第二处理器迁移至第一处理器,本申请实施例对于第一协程组的数量并不进行限定。该一个或多个第一协程组可以为一个第二处理器中协程组,也可以为多个第二处理器中的协程组,即主处理器可以将一个或多个第二处理器中的多个第一协程组迁移至其他一个或多个处理器(第一处理器)上。示例性的,若SMP系统200为非峰值场景,即当前SMP系统200的业务量较小时,为了降低处理器功耗,第一处理器可以将第二处理器的第一协程组迁移至第一处理器。
示例性的,上述第一处理器将第二处理器的第一协程组迁移至第一处理器可以包括:第一处理器修改第一协程组的数据结构关系。例如,第一处理器修改第一协程组的绑定关系,该绑定关系修改之前该第一协程组与第二处理器的物理核绑定,绑定关系修改之后该第一协程组与第一处理器的物理核绑定。
如图4所示,SMP系统200包括4个处理器,分别为CPU0、CPU1、CPU2和CPU3,该四个CPU运行同一个操作系统,一个圆圈表示一个协程。四个处理器中的任一个处理器可以为主处理器,该第一处理器可以根据预设策略将CPU3(第二处理器)上运行的第一协程组(CRG0)迁移至CPU2(第一处理器)上。可以理解的,在此仅以第二处理器为一个处理器为例,实际应用中,该第二处理器可以包括多个处理器,即第一处理器可以将多个第二处理器中每个处理器上运行的一个或多个第一协程组迁移至第一处理器。
另一种实现方式中,若第一处理器为从处理器,步骤S301中第一处理器获取第二处理器的第一协程组可以包括:第一处理器接收主处理器发送的第一配置信息,该第一配置信息用于指示第一协程组从第二处理器迁移至第一处理器。即主处理器将第一协程组从第二处理器配置给第一处理器,例如,该主处理器可以将第一协程组的数据结构绑定关系从与第二处理器绑定修改为与第一处理器绑定,第一处理器接收该第一配置消息,即可获取迁移至第一处理器的第一协程组。该主处理器可以为图2所示的SMP系统200中的处理器。
S302、第一处理器融合第一协程组与第一处理器的第二协程组以得到融合协程组。该融合协程组包括多个协程,该多个协程包括第一协程组中的至少一个第一协程和第二协程组中的至少一个第二协程,每个协程具有一优先级,且多个协程在融合协程组中按照多个协程的优先级来排序。
示例性的,上述步骤S302中的融合第一协程组与第一处理器的第二协程组以得到融合协程组是指,将第一协程组和第二协程组中的部分或全部协程,按照协程的优先级顺序融合为一个协程组(融合协程组)。该融合协程组包括的多个协程共用同一个融合栈空间、任务控制块和上下文信息。该融合栈空间用于存储该融合协程组中的协程被第一处理器运行时产生的局部变量和局部数组等。
示例性的,上述第二协程组具有第二栈空间,融合协程组具有融合栈空间。该融合栈空间可以复用原有的栈空间,也可以为融合协程组创建新的栈空间。例如,该融合栈空间可以与第一栈空间或第二栈空间相同,或者,该融合栈空间也可以与第一栈空间和第二栈空间均不同。可以理解的,融合栈空间与第一栈空间和第二栈空间均不同时,该融合栈空间可以为第一处理器新创建的栈空间。
示例性的,上述第一协程组、第二协程组和融合协程组具有协程组优先级,该第一协程组、第二协程组和融合协程组可以具有相同的第一协程组优先级。示例性地,协程组优先级可以为1至255之间的任一数值,该协程组优先级可以是预先设定的。例如,如图4所示,若CRG0的协程组优先级为5、CRG2的协程组优先级为5,第一协程组(CRG0)的优先级和第二协程组(CRG2)具有相同的第一协程组优先级,该第一协程组优先级为5。
可选的,上述步骤S302之前还可以包括:根据预设条件,确定支持融合第一协程组和第二协程组。具体的,可以根据第一协程组优先级确定支持融合第一协程组与第二协程组;或者,根据第一协程组和第二协程组的第一标识确定支持融合第一协程组与第二协程组。该第一标识可以携带在协程组中。例如,该第一标识为1可以表示协程组支持融合,第一标识为0可以表示协程组不支持融合。在此仅以第一标识为1或0为例进行说明,实际应用中,对于该第一标识的具体形式本申请实施例并不进行限定。
示例性的,若第一协程组和第二协程组具有相同的第一协程组优先级,确定第一协程组和第二协程组支持融合,执行步骤S302;或者,若第一协程组和第二协程组的第一标识均为1,确定第一协程组和第二协程组支持融合,执行步骤S302。
例如,结合图4和图5所示,CPU2根据第一协程组优先级5,融合CRG0和CRG2。协程的优先级可以为1至255的任一数值,该协程的优先级可以是预先设定的,以优先级数值越小优先级越高为例。若协程A的优先级为3、协程B的优先级为9、协程C的优先级为15、协程D的优先级为5、协程E的优先级为10、协程F的优先级为17。如图5所示,融合协程组中协程的优先级顺序依次为:协程A-协程D-协程B-协程E-协程C-协程F。
S303、第一处理器在执行融合协程组时,按照上述排序执行多个协程。示例性的,执行融合协程组时可以按照融合协程组包括的多个协程的优先级顺序执行该多个协程。例如,如5所示,可以按照协程A-协程D-协程B-协程E-协程C-协程F的顺序依次执行。
示例性的,由于融合协程组包括的多个协程共用一个融合栈空间、任务控制块和上下文信息。因此在执行该融合协程组时,等于是在一个协程组中的不同协程之间切换,无需在不同的协程组之间切换,节省切换时间,切换效率更高。
可以理解的,本实施例通过将多个协程组融合为一个融合协程组进行调度,由于该融合协程组对应一个融合栈空间,因此按照融合协程组中多个协程的优先级顺序执行该多个协程时,是在一个协程组中的不同协程之间进行切换,与现有技术中在不同的协程组之间切换相比,本实施例能够在满足业务时序要求的同时,提高软件任务的调度效率,充分利用硬件资源。
本申请实施例还提供一种在多个处理器之间调度软件任务的方法,如图6所示,该方法在上述步骤S303之后,还包括步骤S601-S602,图6中未示出步骤S301-S303。
S601、第一处理器获取第二处理器的第三协程组。该第三协程组为从第二处理器迁移至第一处理器的协程组。该第三协程组的第二协程组优先级不同于融合协程组的第一协程组优先级,或者,该第三协程组的第一标识不支持融合,例如第三协程组的第一标识为0。即该第三协程组为不支持融合的协程组。
例如,如图4所示,融合协程组的第一协程组优先级为5,第三协程组CRG1的第二协程组优先级为8、第三协程组CRG1的第二协程组优先级8不同于融合协程组的第一协程组优先级5。
一种实现方式,若第一处理器为主处理器,步骤S601中第一处理器获取第二处理器的第三协程组可以包括:第一处理器将第二处理器的第三协程组从第二处理器迁移至第一处理器,即第一处理器将第三协程组从第二处理器配置给第一处理器,该第一处理器可以将第三协程组的数据结构绑定关系从与第二处理器绑定修改为与第一处理器绑定。
另一种实现方式中,若第一处理器为从处理器,步骤S601中第一处理器获取第二处理器的第三协程组可以包括:第一处理器接收主处理器发送的第二配置信息,该第二配置信息用于指示第三协程组从第二处理器迁移至第一处理器。即主处理器将第三协程组从第二处理器配置给第一处理器,该主处理器可以将第三协程组的数据结构绑定关系从与第二处理器绑定修改为与第一处理器绑定。
S602、第一处理器按照第二协程组优先级和第一协程组优先级的排序执行融合协程组和第三协程组。示例性的,第一处理器可以按照第二协程组优先级和第一协程组优先级从高到底的顺序执行融合协程组和第三协程组。
例如,结合图4和图5所示,若第三协程组CRG1的协程组优先级为8、融合协程组的第一协程组优先级为5,CPU2可以按照第三协程组CRG1的第二协程组优先级8和融合协程组的第一协程组优先级5的优先级顺序,依次执行融合协程组、CRG1。
示例性的,执行融合协程组或第三协程组时,可以按照融合协程组或第三协程组中的多个协程的优先级顺序进行调度。例如,若协程A的优先级为3、协程B的优先级为9、协程C的优先级为15、协程D的优先级为5、协程E的优先级为10、协程F的优先级为17,协程X的优先级为20、协程Y的优先级为25、协程Z的优先级为30,可以先按照协程组的优先级先调度融合协程组,再调度CRG1。其中,调度融合协程组时可以按照协程A-协程D-协程B-协程E-协程C-协程F的顺序依次进行调度;调度CRG1时,可以按照协程X-协程Y-协程Z的顺序依次进行调度。
可以理解的,本实施例通过将符合预设条件的多个协程组进行融合得到融合协程组,并基于融合协程组内多个协程的优先级顺序进行调度,将不符合预设条件的多个协程组,按照协程组的优先级顺序进行调度,从而能够节省切换时间,提升切换效率。本申请提供的在多个处理器之间调度软件任务的方法,通过将多个协程组作为一个融合协程组,并基于协程的优先级调度该融合协程组,从而能够满足业务时序要求;而且基于协程的优先级调度融合协程组时,是在一个协程组中的不同协程之间进行切换,相对于现有技术在不同的协程组之间切换,切换时间更短,切换效率更高,能够充分的管理和利用硬件资源。
进一步的,如图7所示,在步骤S602之后,上述方法还包括步骤S603-S604。S603、在迁移融合协程组中的第一协程组时,主处理器将融合协程组中的第一协程组从第一处理器迁移至第三处理器。该第三处理器可以为第二处理器,也可以为不同于第一处理器的其他任一处理器,本申请实施例对此并不进行限定。
示例性的,以该第三处理器为第二处理器为例,若主处理器确定迁移第一协程组,例如,当前第一处理器的业务量较大时,为了充分利用处理器资源,主处理器可以将第一协程组从第一处理器迁回至第二处理器,即主处理器将第一协程组从第一处理器配置给第二处理器,例如,主处理器可以将第一协程组与第一处理器的物理核解除绑定,并将第一协程组与第二处理器的物理核绑定。
如图8所示,对于主处理器而言,以协程组的粒度,对第一协程组和第二协程组分别分开管理,然而上述步骤S302-S303仅是将第一协程组和第二协程组作为一个融合协程组整体进行调度。对于主处理器而言,协程A、协程B和协程C仍为CRG2中的协程,协程D、协程E和协程F仍为CRG0中的协程,因此在将CRG0或者CRG2迁移至其他处理器时,仍可以按照协程组(CRG0或者CRG2)的粒度进行迁移,无需业务层重新划分多个协程。即本实施例中是将满足预设条件的多个协程组在调度时作为一个协程组整体进行调度,但在管理时将该多个协程组分开管理各个协程组,仍然可以将融合协程组中的第一协程组或第二协程组以协程组的粒度重新进行迁移,无需对融合协程组中的多个协程重新划分协程组,能够充分管理和利用硬件资源。
S604、第一处理器释放融合协程组对应的融合栈空间。该融合协程组对应的融合栈空间为不同与第一栈空间和第二栈空间的栈空间,即该融合栈空间为第一处理器新创建的栈空间。
示例性的,第一协程组从第一处理器迁移至第三处理器后,第一处理器可以将融合栈空间释放,以节省内存空间。可以理解的,若融合协程组对应的栈空间复用原有的栈空间,例如,融合协程组对应的栈空间为第一栈空间或者第二栈空间,在将第一协程组迁移至其他处理器时,无需释放融合协程组对应的栈空间,第一协程组对应的栈空间仍为第一栈空间,第二协程组对应的栈空间仍为第二栈空间。
本申请提供的在多个处理器之间调度软件任务的方法,通过将多个协程组作为一个融合协程组,并基于协程的优先级调度该融合协程组,从而能够满足业务时序要求;而且基于协程的优先级调度融合协程组时,是在一个协程组中的不同协程之间进行切换,相对于现有技术在不同的协程组之间切换,切换时间更短,切换效率更高,能够充分的管理和利用硬件资源。
上述主要从方法步骤的角度对本申请实施例提供的方案进行了介绍。可以理解的是,计算机为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块,具体参见图2。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件和计算机软件的结合形式来实现。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对计算机进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图9示出了上述实施例中所涉及的在多个处理器之间调度软件任务的装置900的一种可能的结构示意图,该装置900可以为上述实施例中的第一处理器或被第一处理器运行的软件产品或者是处理器与所述软件产品的结合,如图2中的某个处理器201与操作系统204或者与应用程序之间的组合。在一个实例中,该装置900可以包括:获取模块901和处理模块902。获取模块901可以用于支持装置900执行图3中S301,或图6中的S601;处理模块902可以用于支持装置900执行图3中的S302-S303,或图6中的S602,或图7中的S603-S604。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。结合图2所示,上述装置900可以为图2所示的SMP系统200中的任一个处理器201或操作系统204的全部或部分,亦或是二者结合,本申请实施例对此并不进行限定。该装置900中的至少一个单元可以软件、硬件或软件与硬件结合的方式实现。当任一单元以软件实现,其可以被之前图2对应实施例中的处理器201执行,以及被存储于存储器202。当任一单元以硬件实现,其可以位于任一处理器201中,具体可以以集成电路、电路模块、电子元器件、处理器、专用集成电路(ASIC)、或现场可编程门阵列(FPGA)等实现。
在采用集成的单元的情况下,本申请实施例还提供一种在多个处理器之间调度软件任务的装置,结合图2所示,该在多个处理器之间调度软件任务的装置包括:处理器201。该处理器201用于对该装置的动作进行控制管理,例如,处理器201用于支持该装置执行图3中的S301-S303,或图6中的S601-S602,或图7中的S601-S604,和/或用于本文所描述的技术的其它过程。该在多个处理器之间调度软件任务的装置可以为图2所示的SMP系统200中的任一个处理器,上述图2涉及的各部件的所有相关内容的描述均可以援引到该装置对应部件的功能描述,在此不再赘述。可选的,上述装置还可以包括存储器202,该存储器202用于存储计算机的程序代码和数据。另一种实现,上述实施例所涉及的在多个处理器之间调度软件任务的装置的结构还可以包括处理器和接口,处理器和接口通信,处理器用于执行本发明实施例。处理器可以是包括中央处理单元(CPU)、数字信号处理器(DSP)、微控制器(MCU)或微处理器中的至少一项。
本申请实施例还提供一种装置,该装置以至少一个芯片的产品形态存在,例如芯片组,该装置的结构中包括之前实施例提到的处理器和对应接口电路,处理器可以通过接口电路接收用户操作,可选的,该装置还可以包括存储器,该存储器用于与处理器耦合,保存该装置必要的程序指令和数据,该处理器用于执行存储器中存储的程序指令,使得该装置执行上述方法中调度装置的功能。可选地,所述存储器可以为所述芯片内的存储模块,如寄存器、缓存等,所述存储模块还可以是位于所述芯片外部的存储模块,如ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM等。
结合本申请公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(ElectricallyEPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
Claims (18)
1.一种在多个处理器之间调度软件任务的方法,其特征在于,所述方法包括:
获取多个处理器中第二处理器的第一协程组,所述第一协程组为从所述第二处理器迁移至所述多个处理器中的第一处理器的协程组;
融合所述第一协程组与所述第一处理器的第二协程组以得到融合协程组;其中,所述融合协程组包括多个协程,所述多个协程包括所述第一协程组中的至少一个第一协程和所述第二协程组中的至少一个第二协程,每个协程具有一优先级,且所述多个协程在所述融合协程组中按照所述多个协程的优先级来排序;
在执行所述融合协程组时,按照所述排序执行所述多个协程。
2.根据权利要求1所述的方法,其特征在于,每个协程组具有协程组优先级;所述融合协程组、所述第一协程组和所述第二协程组具有相同的第一协程组优先级。
3.根据权利要求2所述的方法,其特征在于,在融合所述第一协程组与所述第一处理器的第二协程组以得到融合协程组之前,所述方法还包括:
根据所述第一协程组优先级确定支持融合所述第一协程组与所述第二协程组;或者,
根据所述第一协程组和所述第二协程组的第一标识确定支持融合所述第一协程组与所述第二协程组。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
获取所述第二处理器的第三协程组,所述第三协程组为从所述第二处理器迁移至所述第一处理器的协程组;所述第三协程组的第二协程组优先级不同于所述融合协程组的第一协程组优先级;
按照所述第二协程组优先级和所述第一协程组优先级的排序执行所述融合协程组和所述第三协程组。
5.根据权利要求1所述的方法,其特征在于,所述融合协程组包括的所述多个协程共用同一个融合栈空间、任务控制块和上下文信息。
6.根据权利要求1所述的方法,其特征在于,所述第一协程组具有第一栈空间,所述第二协程组具有第二栈空间,所述融合协程组具有融合栈空间,所述融合栈空间与所述第一栈空间或所述第二栈空间相同,或者,所述融合栈空间与所述第一栈空间和所述第二栈空间均不同。
7.根据权利要求1所述的方法,其特征在于,所述方法由所述第一处理器执行。
8.根据权利要求7所述的方法,其特征在于,若所述第一处理器为主处理器,所述方法还包括:
在迁移所述融合协程组中的所述第一协程组时,将所述第一协程组从所述第一处理器迁移至所述多个处理器中的第三处理器。
9.根据权利要求7所述的方法,其特征在于,若所述第一处理器为从处理器,所述方法还包括:
在迁移所述融合协程组中的所述第一协程组时,接收主处理器发送的配置信息,所述配置信息用于指示所述第一协程组从所述第一处理器迁移至所述多个处理器中的第三处理器;
释放所述融合协程组对应的融合栈空间。
10.一种多核处理设备,其特征在于,所述多核处理设备包括多个处理器,所述多个处理器包括第一处理器和第二处理器;
所述第一处理器,用于:
获取多个处理器中第二处理器的第一协程组,所述第一协程组为从所述第二处理器迁移至所述多个处理器中的第一处理器的协程组;
融合所述第一协程组与所述第一处理器的第二协程组以得到融合协程组;其中,所述融合协程组包括多个协程,所述多个协程包括所述第一协程组中的至少一个第一协程和所述第二协程组中的至少一个第二协程,每个协程具有一优先级,且所述多个协程在所述融合协程组中按照所述多个协程的优先级来排序;
在执行所述融合协程组时,按照所述排序执行所述多个协程。
11.根据权利要求10所述的多核处理设备,其特征在于,每个协程组具有协程组优先级;所述融合协程组、所述第一协程组和所述第二协程组具有相同的第一协程组优先级。
12.根据权利要求11所述的多核处理设备,其特征在于,
所述第一处理器,还用于根据所述第一协程组优先级确定支持融合所述第一协程组与所述第二协程组;或者,根据所述第一协程组和所述第二协程组的第一标识确定支持融合所述第一协程组与所述第二协程组。
13.根据权利要求11或12所述的多核处理设备,其特征在于,所述第一处理器,还用于:
获取所述第二处理器的第三协程组,所述第三协程组为从所述第二处理器迁移至所述第一处理器协程组;所述第三协程组的第二协程组优先级不同于所述融合协程组的第一协程组优先级;
按照所述第二协程组优先级和所述第一协程组优先级的排序执行所述融合协程组和所述第三协程组。
14.根据权利要求10所述的多核处理设备,其特征在于,所述融合协程组包括的所述多个协程共用同一个融合栈空间、任务控制块和上下文信息。
15.根据权利要求10所述的多核处理设备,其特征在于,所述第一协程组具有第一栈空间,所述第二协程组具有第二栈空间,所述融合协程组具有融合栈空间,所述融合栈空间与所述第一栈空间或所述第二栈空间相同,或者,所述融合栈空间与所述第一栈空间和所述第二栈空间均不同。
16.根据权利要求10所述的多核处理设备,其特征在于,若所述第一处理器为主处理器,
所述第一处理器,还用于在迁移所述融合协程组中的所述第一协程组时,将所述融合协程组中的第一协程组从所述第一处理器迁移至所述多个处理器中的第三处理器。
17.根据权利要求10所述的多核处理设备,其特征在于,所述多个处理器还包括第三处理器,若所述第一处理器为从处理器,
所述第一处理器,还用于:
在迁移所述融合协程组中的所述第一协程组时,接收主处理器发送的配置信息,所述配置信息用于指示所述第一协程组从所述第一处理器迁移至所述多个处理器中的第三处理器;
释放所述融合协程组对应的融合栈空间。
18.一种计算机存储介质,所述计算机存储介质中存储有计算机程序代码,其特征在于,当所述计算机程序代码在处理器上运行时,使得所述处理器执行如权利要求1-9任一项所述的在多个处理器之间调度软件任务的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/075659 WO2020168505A1 (zh) | 2019-02-21 | 2019-02-21 | 一种在多个处理器之间调度软件任务的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111837104A CN111837104A (zh) | 2020-10-27 |
CN111837104B true CN111837104B (zh) | 2024-04-12 |
Family
ID=72143291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980009713.5A Active CN111837104B (zh) | 2019-02-21 | 2019-02-21 | 一种在多个处理器之间调度软件任务的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111837104B (zh) |
WO (1) | WO2020168505A1 (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101685391A (zh) * | 2002-01-04 | 2010-03-31 | 微软公司 | 管理计算系统中协处理器的计算资源的方法和系统 |
CN104008013A (zh) * | 2013-02-26 | 2014-08-27 | 华为技术有限公司 | 一种核资源分配方法、装置及众核系统 |
CN105242962A (zh) * | 2015-11-24 | 2016-01-13 | 无锡江南计算技术研究所 | 基于异构众核的轻量级线程快速触发方法 |
CN106407063A (zh) * | 2016-10-11 | 2017-02-15 | 东南大学 | 一种GPU L1 Cache处访存序列的仿真生成与排序方法 |
CN109298922A (zh) * | 2018-08-30 | 2019-02-01 | 百度在线网络技术(北京)有限公司 | 并行任务处理方法、协程框架、设备、介质和无人车 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8789063B2 (en) * | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
US8904216B2 (en) * | 2011-09-02 | 2014-12-02 | Iota Computing, Inc. | Massively multicore processor and operating system to manage strands in hardware |
CN102831011B (zh) * | 2012-08-10 | 2015-11-18 | 上海交通大学 | 一种基于众核系统的任务调度方法及装置 |
CN103870331B (zh) * | 2012-12-10 | 2018-03-27 | 联想(北京)有限公司 | 一种动态分配处理器内核的方法及电子设备 |
CN106293902A (zh) * | 2015-05-28 | 2017-01-04 | 宇龙计算机通信科技(深圳)有限公司 | 一种处理器调度方法及系统 |
CN106445686A (zh) * | 2016-09-21 | 2017-02-22 | 东软集团股份有限公司 | 资源分配方法及装置 |
CN107656813A (zh) * | 2017-09-29 | 2018-02-02 | 上海联影医疗科技有限公司 | 一种负载调度的方法、装置及终端 |
-
2019
- 2019-02-21 CN CN201980009713.5A patent/CN111837104B/zh active Active
- 2019-02-21 WO PCT/CN2019/075659 patent/WO2020168505A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101685391A (zh) * | 2002-01-04 | 2010-03-31 | 微软公司 | 管理计算系统中协处理器的计算资源的方法和系统 |
CN104008013A (zh) * | 2013-02-26 | 2014-08-27 | 华为技术有限公司 | 一种核资源分配方法、装置及众核系统 |
CN105242962A (zh) * | 2015-11-24 | 2016-01-13 | 无锡江南计算技术研究所 | 基于异构众核的轻量级线程快速触发方法 |
CN106407063A (zh) * | 2016-10-11 | 2017-02-15 | 东南大学 | 一种GPU L1 Cache处访存序列的仿真生成与排序方法 |
CN109298922A (zh) * | 2018-08-30 | 2019-02-01 | 百度在线网络技术(北京)有限公司 | 并行任务处理方法、协程框架、设备、介质和无人车 |
Also Published As
Publication number | Publication date |
---|---|
CN111837104A (zh) | 2020-10-27 |
WO2020168505A1 (zh) | 2020-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10545762B2 (en) | Independent mapping of threads | |
US10275851B1 (en) | Checkpointing for GPU-as-a-service in cloud computing environment | |
CN107690622B9 (zh) | 实现硬件加速处理的方法、设备和系统 | |
CN110647394B (zh) | 一种资源分配方法、装置及设备 | |
US9158565B2 (en) | Predictable computing in virtualizated distributed computer systems based on partitioning of computation and communication resources | |
CN108293041B (zh) | 分布式系统、资源容器的分配方法、资源管理器及应用控制器 | |
US8972983B2 (en) | Efficient execution of jobs in a shared pool of resources | |
KR102074468B1 (ko) | 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법 | |
CN113037538B (zh) | 分布式资源管理中低时延节点本地调度的系统和方法 | |
CN109726005B (zh) | 用于管理资源的方法、服务器系统和计算机可读介质 | |
CN108064377B (zh) | 一种多系统共享内存的管理方法及装置 | |
CN112540841B (zh) | 任务调度的方法、装置、处理器与电子设备 | |
US11734172B2 (en) | Data transmission method and apparatus using resources in a resource pool of a same NUMA node | |
US9390033B2 (en) | Method and system for communicating with non-volatile memory via multiple data paths | |
CN110990154B (zh) | 一种大数据应用优化方法、装置及存储介质 | |
US11635981B2 (en) | Virtualizing shared computing resources | |
Salehi et al. | Resource provisioning based on preempting virtual machines in distributed systems | |
CN113296926B (zh) | 一种资源分配方法、计算设备及存储介质 | |
CN116185599A (zh) | 异构服务器系统及其使用方法 | |
US9377968B2 (en) | Method and system for using templates to communicate with non-volatile memory | |
US20130227243A1 (en) | Inter-partition communication in multi-core processor | |
CN111837104B (zh) | 一种在多个处理器之间调度软件任务的方法和装置 | |
US11080092B1 (en) | Correlated volume placement in a distributed block storage service | |
US10261817B2 (en) | System on a chip and method for a controller supported virtual machine monitor | |
US8346988B2 (en) | Techniques for dynamically sharing a fabric to facilitate off-chip communication for multiple on-chip units |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |