掌桥专利:专业的专利平台
掌桥专利
首页

多处理器任务调度方法、装置及存储介质

文献发布时间:2023-06-19 10:38:35


多处理器任务调度方法、装置及存储介质

技术领域

本发明涉及计算机任务管理技术领域,特别涉及一种多处理器任务调度方法、装置及存储介质。

背景技术

多处理器,指在一个计算机上汇集了一组处理器(CPU),各CPU之间共享内存子系统和总线结构。它被应用于各种中高端应用领域,比如消费电子、视像安防、智能硬件等产品平台。这些应用场景往往较为复杂,每个CPU都会被分配一定数量的任务,由操作系统根据实际需要去调度运行。操作系统的调度效率是影响系统整体性能的关键。每个CPU内部都有高速缓存单元(Cache),CPU访问高速缓存的速度远远高于访问主存。操作系统进行任务调度过程中,要尽可能充分利用CPU高速缓存,使其发挥最大的效率。

实际应用场景中,每个任务处理的事情不一样,需要的CPU资源也不一样,相应地,CPU在处理这些任务时,忙碌程度也不一样。比如带有复杂算法的任务运行时,CPU需要短时间内密集地运算,执行大量的指令,因此非常忙碌。而其他一些任务中,CPU只需要处理简单的事情,处理完后若无其他任务,CPU就进入空闲状态,以节省系统功耗。CPU的忙碌程度可用负载率来表示,它取值范围为0到100%,值越高表示CPU在这段时间越忙碌。

通常在系统运行时,操作系统会根据各CPU的负载率,实时地进行任务的重新分配,将任务从负载率高的CPU迁移到负载率低的CPU,这个过程叫负载均衡。

由于操作系统的任务调度行为本身也消耗CPU资源,因此任务调度的理想情况是,既要维持各CPU之间的负载均衡,又要让调度行为本身尽可能少地消耗CPU资源。如果同一个任务频繁地在不同CPU之间切来切去,不但无法充分利用CPU的高速缓存,也导致CPU时间过多地花在调度行为本身,而没有用在任务的实际执行上,导致任务调度效率低下。

发明内容

本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种多处理器任务调度方法,能够实现任务与CPU之间的动态绑定,提高任务调度的效率。

本发明还提出一种具有上述多处理器任务调度方法的多处理器任务调度装置。

本发明还提出一种具有上述多处理器任务调度方法的计算机可读存储介质。

根据本发明的第一方面实施例的多处理器任务调度方法,包括以下步骤:S100、接收任务创建指令,为所述任务分配CPU,确定所述任务为普通任务,将所述任务与所述CPU进行动态绑定;S200、接收任务恢复指令,获取恢复任务动态绑定的CPU,发送指令至所述CPU实现任务调度。

根据本发明的一些实施例,所述S100还包括:S110、接收任务创建指令;S120、确定所述任务为普通任务,则将所述任务动态的绑定至CPU,所述CPU默认为接收任务创建指令的CPU;S130、将所述任务添加至所述CPU的任务队列。

根据本发明的一些实施例,还包括:S140、确定所述任务为CPU特定任务,则将所述任务添加至对应CPU的任务队列。

根据本发明的一些实施例,所述S200还包括:S210、接收任务恢复指令,获取所述任务动态绑定的CPU,将任务添加至绑定的CPU任务队列;S220、确定动态绑定的CPU为接收任务恢复指令的CPU,则设置调度标记,在下个调度时间点进行调度。

根据本发明的一些实施例,还包括:S230、确定动态绑定的CPU不是接收任务恢复指令的CPU,则发送中断指令至所述动态绑定的CPU,通知所述动态绑定的CPU进行调度。

根据本发明的一些实施例,还包括:S300、接收任务重新分配指令,将任务从负载率大于第一阈值的CPU队列迁移至负载率小于第二阈值的CPU队列,更新CPU动态绑定关系。

根据本发明的一些实施例,所述第一阈值大于所述第二阈值。

根据本发明的一些实施例,所述动态绑定关系在一定条件下保持稳定。

根据本发明的第二方面实施例的多处理器任务调度装置,包括:任务分配模块,用于接收任务创建指令,为所述任务分配CPU,所述任务与所述CPU实现动态绑定关系;任务恢复处理模块,用于接收任务恢复指令,获取恢复任务动态绑定的CPU,发送指令至所述CPU实现任务调度。

根据本发明的第三方面实施例的一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被一个或多个处理器执行时能够执行上述任一项所述的多处理器任务调度方法的步骤。

根据本发明实施例的多处理器任务调度方法,至少具有如下有益效果:通过本发明的方法,任务创建时会与CPU进行动态绑定,绑定关系不会由于任务被挂起、恢复运行而改变,有效地维持了任务与CPU对应关系的稳定性。任务大部分时间运行在同样的CPU上,因此提高了CPU高速缓存的利用效率,避免了任务频繁在不同CPU之间迁移造成的调度开销,从而提高了任务调度效率。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明实施例的方法的流程示意图;

图2为本发明实施例的创建任务方法的流程示意图;

图3为本发明实施例的恢复任务方法的流程示意图;

图4为本发明实施例的任务重新分配方法的流程示意图;

图5为本发明实施例的装置的模块示意框图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个及两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。

参照图1,图1示出了本发明的实施例的方法包括:

S100、接收任务创建指令,为任务分配CPU,确定任务为普通任务,将任务与CPU进行动态绑定;

S200、接收任务恢复指令,获取恢复任务动态绑定的CPU,发送指令至CPU实现任务调度。

可以理解的是,对于对称式多处理器,每个CPU对应一个等待调度的任务队列,操作系统为了维持负载均衡,周期性地将任务从负载率最高的CPU迁移到负载率最低的CPU。多处理器中任务分为两类,一类是CPU特定的任务,它固定绑定在某个CPU上,不能被迁移到其他CPU上,比如负责处理当前CPU中断的任务。第二类是普通任务,它们没有绑定到特定CPU,能被动态迁移到其他CPU。系统中绝大部分任务是第二类任务,本发明主要针对第二类任务。

针对第二类任务的调度,传统的方法,任务创建时没有被动态绑定到某个CPU上,因此系统运行过程中,任务被动态地在CPU之间来回迁移。任务在CPU上运行时,会产生大量的CPU高速缓存,CPU依赖高速缓存来提升运行效率。由于各CPU的高速缓存彼此独立,当任务被迁移到其他CPU后,先前CPU上的高速缓存内容无法继续使用,任务需要在新CPU上重新产生高速缓存,这个过程比较消耗资源,导致系统效率低下;同时,由于任务没有绑定到CPU,所以会造成同一个任务在不同CPU之间来回迁移,资源过多地消耗在任务调度行为本身。

需要说明的是,对于目前存在的这些问题,本发明通过针对普通任务,将其动态的绑定到CPU上,使普通任务与绑定的CPU之间形成在一定条件下比较稳定的关系,能够使CPU的高速缓存得到充分利用,节约了系统调度中耗费的系统资源,另一方面,在系统任务恢复过程中,通过获取恢复任务动态绑定的CPU,对绑定的CPU发送指令,进一步节约系统资源。从而解决了现有技术中存在的技术问题。

如图2,图2为本发明实施例的创建任务方法的流程示意图,包括:

S110、接收任务创建指令;

S120、确定任务为普通任务,则将任务动态的绑定至CPU,CPU默认为接收任务创建指令的CPU;

S130、将任务添加至CPU的任务队列。

S140、确定任务为CPU特定任务,则将任务添加至对应CPU的任务队列。

具体的,创建任务时,若为CPU特定的任务,它固定绑定在某个CPU上,不能被迁移到其他CPU上,比如负责处理当前CPU中断的任务,则将特定任务添加到相应CPU的任务队列中;否则为任务动态分配待绑定的CPU,默认为当前CPU,即正在执行创建任务流程的CPU,然后将任务添加到待绑定CPU的任务队列。这样,新任务和当前CPU建立了动态绑定的关系,后续在该任务运行过程中,这个绑定关系很少变化,使得CPU的高速缓存能得到充分的利用。

图3中示出了本发明实施例的恢复任务方法的流程示意图,包括:

S210、接收任务恢复指令,获取任务动态绑定的CPU,将任务添加至绑定的CPU任务队列;

S220、确定动态绑定的CPU为接收任务恢复指令的CPU,则设置调度标记,在下个调度时间点进行调度。

S230、确定动态绑定的CPU不是接收任务恢复指令的CPU,则发送中断指令至动态绑定的CPU,通知动态绑定的CPU进行调度。

具体的,在任务运行的过程中,运行着的任务可能因为等待某个资源而挂起,任务被挂起后不占有CPU资源,也不在CPU的任务队列中,而会被添加到该资源的等待队列中,当资源到位后,任务被恢复运行。

在任务恢复的过程中,首先获取任务所动态绑定的CPU,然后将任务添加到绑定CPU的任务队列。若绑定CPU为当前CPU,则设置调度标记,在下个调度时间点进行调度;若绑定CPU不是当前CPU,则发送中断至绑定CPU,通知其进行调度,这样确保恢复运行的任务能及时被调度运行。同时,这个过程中任务的绑定CPU没有改变,这样原先高速缓存中的内容仍然能够被利用。

见图4,图4中是本发明实施例的任务重新分配方法的流程示意图,包括:

接收任务重新分配指令,将任务从负载率大于第一阈值的CPU队列迁移至负载率小于第二阈值的CPU队列,更新CPU动态绑定关系。

具体的,操作系统会根据各CPU的负载率,实时地进行任务的重新分配,将任务从负载率高的CPU的任务队列中,迁移到负载率低的CPU的任务队列中。随着任务被迁移到另外的CPU,相应的动态绑定关系也发生变化,任务会被重新绑定到新的CPU。首先将任务从源CPU(即负载率高的CPU)的任务队列中移除,然后将任务添加到目的CPU(即负载率低的CPU)的任务队列,最后修改绑定关系,将任务的绑定CPU更改为目的CPU。

需要说明的是,第一阈值与第二阈值均可以灵活的根据系统实际的运行情况进行设置,第一阈值能够指示负载率高的程度,第二阈值能够指示负载率低的程度,在系统进行负载均衡时,系统将负载率高的CPU中的任务调度入负载率低的CPU中,可以理解的是,第一阈值大于第二阈值。

在本发明一些具体的实施例中,动态绑定关系在一定条件下保持稳定,以此保证任务与CPU的动态绑定关系一旦建立,不会由于任务被挂起、恢复运行而改变,有效地维持了任务与CPU对应关系的稳定性,保证了任务不会频繁地在不同CPU之间随意切换,提高了CPU高速缓存的利用效率,降低了调度行为本身的开销,从而提高了任务调度效率。

图5是本发明实施例的装置的模块示意框图,包括:

任务分配模块,用于接收任务创建指令,为任务分配CPU,任务与CPU实现动态绑定关系;

任务恢复处理模块,用于接收任务恢复指令,获取恢复任务动态绑定的CPU,发送指令至CPU实现任务调度。

在本发明的一些实施例中,存在一种计算机可读存储介质,其上存储有计算机程序,计算机程序被一个或多个处理器执行时能够执行上述任一项的多处理器任务调度方法的步骤。

需要说明的是,传统的方法,任务没有与CPU建立动态绑定关系,因此系统运行过程中,任务可能被动态地在CPU之间来回迁移。导致CPU高速缓存利用率低,且资源会过多地消耗在任务调度行为本身。

本发明的方法,任务创建时会与CPU进行动态绑定,绑定关系不会由于任务被挂起、恢复运行而改变,仅在任务被迁移到其他CPU时才发生变化,有效地维持了任务与CPU对应关系的稳定性。任务大部分时间运行在同样的CPU上,因此提高了CPU高速缓存的利用效率,避免了任务频繁在不同CPU之间迁移造成的调度开销,从而提高了任务调度效率。

尽管本文描述了具体实施方案,但是本领域中的普通技术人员将认识到,许多其它修改或另选的实施方案同样处于本公开的范围内。例如,结合特定设备或组件描述的功能和/或处理能力中的任一项可以由任何其它设备或部件来执行。另外,虽然已根据本公开的实施方案描述了各种例示性具体实施和架构,但是本领域中的普通技术人员将认识到,对本文所述的例示性具体实施和架构的许多其它修改也处于本公开的范围内。

上文参考根据示例性实施方案所述的系统、方法、系统和/或计算机程序产品的框图和流程图描述了本公开的某些方面。应当理解,框图和流程图中的一个或多个块以及框图和流程图中的块的组合可分别通过执行计算机可执行程序指令来实现。同样,根据一些实施方案,框图和流程图中的一些块可能无需按示出的顺序执行,或者可以无需全部执行。另外,超出框图和流程图中的块所示的那些部件和/或操作以外的附加部件和/或操作可存在于某些实施方案中。

因此,框图和流程图中的块支持用于执行指定功能的装置的组合、用于执行指定功能的元件或步骤的组合以及用于执行指定功能的程序指令装置。还应当理解,框图和流程图中的每个块以及框图和流程图中的块的组合可以由执行特定功能、元件或步骤的专用硬件计算机系统或者专用硬件和计算机指令的组合来实现。

本文所述的程序模块、应用程序等可包括一个或多个软件组件,包括例如软件对象、方法、数据结构等。每个此类软件组件可包括计算机可执行指令,所述计算机可执行指令响应于执行而使本文所述的功能的至少一部分(例如,本文所述的例示性方法的一种或多种操作)被执行。

软件组件可以用各种编程语言中的任一种来编码。一种例示性编程语言可以为低级编程语言,诸如与特定硬件体系结构和/或操作系统平台相关联的汇编语言。包括汇编语言指令的软件组件可能需要在由硬件架构和/或平台执行之前由汇编程序转换为可执行的机器代码。另一种示例性编程语言可以为更高级的编程语言,其可以跨多种架构移植。包括更高级编程语言的软件组件在执行之前可能需要由解释器或编译器转换为中间表示。编程语言的其它示例包括但不限于宏语言、外壳或命令语言、作业控制语言、脚本语言、数据库查询或搜索语言、或报告编写语言。在一个或多个示例性实施方案中,包含上述编程语言示例中的一者的指令的软件组件可直接由操作系统或其它软件组件执行,而无需首先转换成另一种形式。

软件组件可存储为文件或其它数据存储构造。具有相似类型或相关功能的软件组件可一起存储在诸如特定的目录、文件夹或库中。软件组件可为静态的(例如,预设的或固定的)或动态的(例如,在执行时创建或修改的)。

上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

相关技术
  • 多处理器任务调度方法、装置及存储介质
  • 任务调度方法、任务调度装置、任务调度设备及存储介质
技术分类

06120112624219