CN111597044A - 任务调度方法、装置、存储介质及电子设备 - Google Patents
任务调度方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111597044A CN111597044A CN202010409028.6A CN202010409028A CN111597044A CN 111597044 A CN111597044 A CN 111597044A CN 202010409028 A CN202010409028 A CN 202010409028A CN 111597044 A CN111597044 A CN 111597044A
- Authority
- CN
- China
- Prior art keywords
- task
- time
- cpu
- cpus
- 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.)
- Pending
Links
Images
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]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种任务调度方法、装置、存储介质及电子设备,方法包括:在***包含的多个中央处理器CPU中的第一CPU进入空闲状态而触发负载均衡时,获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务的任务切换时间;获取所述任务切换时间中距离当前时间的最远时间,将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行。因此,采用本申请实施例,可以在实现负载均衡的同时还可以降低调度延迟。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种任务调度方法、装置、存储介质及电子设备。
背景技术
任务唤醒或者任务被创建时,选择运行的CPU的时侯要考虑***包含的多个CPU中每一个CPU的当前负载量以维持负载均衡,以及,基于CPU空闲 (IDLE)的负载均衡,在CPU之间出现负载不均衡时,将一些任务从负载高的 CPU上转移到负载较低的CPU上去。
通过上述操作大体保证了CPU上的负载均衡,但是负载均衡不一定代表任务可以得到及时的执行。在Linux***中,部分操作(如原子锁、软中断及硬件中断等等)会关闭任务抢占,即不允许进行任务的调度。在这种情况下,即使任务被唤醒,而且其虚拟时间(vruntime)最低,但也获取不到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上,从而可以在实现负载均衡的同时还可以降低调度延迟。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种任务调度方法的流程示意图;
图2是本申请实施例提供的一种多任务***的结构示意图;
图3是本申请实施例提供的一种任务调度的时间关系的举例示意图;
图4是本申请实施例提供的一种任务调度方法的流程示意图;
图5是本申请实施例提供的一种任务调度装置的结构示意图;
图6是本申请实施例提供的一种任务调度装置的结构示意图;
图7是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
下面将结合附图1-附图4,对本申请实施例提供的任务调度方法进行详细介绍。该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的任务调度装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。其中,本申请实施例中的任务调度装置可以为用户终端,所述用户终端包括但不限于:智能手机、个人电脑、平板电脑、手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其它处理设备等。
请参见图1,为本申请实施例提供的一种任务调度方法的流程示意图。如图 1所示,本申请实施例的所述方法可以包括以下步骤:
S101,在***包含的多个中央处理器CPU中的第一CPU进入空闲状态而触发负载均衡时,获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务的任务切换时间;
本申请实施例应用在多中央处理器(Central Processing Unit,CPU)***中,包含有多个CPU。
其中,CPU是一个计算机的运算核心和控制核心,是信息处理、程序运行的最终执行单元。CPU包含运算逻辑部件、寄存器部件和控制部件等,并具有处理指令、执行操作、控制时间、处理数据等功能。
CPU的性能主要体现在其运行程序的速度上。影响运行速度的性能指标包括CPU的工作频率、Cache容量、指令***和逻辑结构等参数。CPU负载就是 CPU使用率,当CPU使用率较大时,导致CPU运行速度慢,可通过CPU调频限制CPU的使用。
多CPU***通常包括四种不同的形式,即多处理器***(MultiprocessorSystems)、多计算机***(Multicomputer Systems)、网络***(Network Systems) 和分布式***(Distributed Systems)。
多处理器***是指包含两台或多台功能相近的处理器,处理器之间彼此可以交换数据,所有处理器共享内存,I/O设备,控制器,及外部设备,整个硬件***由统一的操作***控制,在处理器和程序之间实现作业、任务、程序、数组极其元素各级的全面并行。
例如,如图2所示为一种多CPU***的结构示意图,***包括多个CPU,这多个CPU共享内存。所述***可以是SMP***,也可以是HMP***。
SMP和HMP***的区别在于,SMP***的多个CPU性能相同,而HMP ***的多个CPU性能不相同。
需要说明的是,每个CPU有不同的计算能力,即使在每个CPU计算能力相同的情况下,由于在不同时刻,每个CPU上运行不同的任务,也会存在剩余计算能力不同。所述剩余计算能力是指在某个时刻,除了CPU上运行的任务所占用的CPU资源外,剩余CPU资源可供计算的能力。
当某个CPU(第一CPU)进入空闲(IDLE)状态触发负载均衡时,或者发生tick触发负载均衡时,表明该第一CPU有足够的资源可供某个或者某些任务运行,因此,为了保持***负载均衡,则需要检测其余CPU上任务队列中等待较长时间而未分配到CPU资源的任务。负载均衡就是将任务分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。在本申请实施例中,是指将任务调度到其他CPU上运行以实现负载均衡。
具体的,需要获取各任务的任务切换时间last_sched_ts,所述任务切换时间last_sched_ts是指一个任务被唤醒的时间或者因时间片耗完被强制调度出去的时间。即任务切换时间与当前时间的差值即为获取CPU资源之前的延迟时间,当last_sched_ts越小,表明距离当前时间越远,也就是获取CPU资源之前的延迟时间越长。
其中,一个任务可以看做一个线程。通常在一个进程中可以包含至少一个线程。线程可以利用进程所拥有的资源,在引入线程的操作***中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有***资源,故对它的调度所付出的开销就会小得多,能更高效的提高***多个程序间并发执行的程度。
通常,一个进程具有以下三种基本状态:就绪(Ready)态、执行(Running) 态和阻塞(Blocked)态。
其中,当进程具备运行条件(已分配到除CPU以外的所有必要的资源)时,只要获得CPU资源便可立即执行,这时的进程状态称为就绪态。
当进程已获得CPU,其程序正在CPU上执行,此时的进程状态称为执行态。
正在执行的进程,由于等待某个事件发生而无法执行时,便放弃CPU而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信号等。
对于每个任务,其运行状态与所属进程的运行状态相同。在本申请实施例中,所针对的各任务是指运行状态为就绪态的认为。例如,该任务可以是被唤醒任务或因时间片耗完被强制调度出去的时间,还可以是新创建任务。总之,是从Ready到需要获得CPU资源的任务。
S102,获取所述任务切换时间中距离当前时间的最远时间,将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行。
可以理解的是,每当CPU上发生任务切换时,都需要更新任务的任务切换时间last_sched_ts。如果该任务是主动放弃CPU资源的话,将该任务的 last_sched_ts设置该字段为0,如果是因为时间片用完而被强制切换出去或者被唤醒的话,将该任务的last_sched_ts设置为任务切换发生的时间。此过程在实时或者周期性持续着,因此,所记录的last_sched_ts均为在当前时间之前的时间。
需要说明的是,当前时间是指本轮获取各CPU上各任务的任务切换时间的时间。
例如,如图3所示,每次在***包含的多个CPU中的任一CPU进入空闲状态而触发负载均衡需要进行任务调度,或者***每间隔预设周期检测触发任务调度时,就需要执行一轮本方案。若当前时刻为t1,也就是本轮执行本方案的触发时刻,上一轮执行本方案的触发时刻为t0,下一轮执行本方案的触发时刻为t2,那么需要统计在t0~t1时段内,各任务的任务切换时间,例如记录为ta、 tb、tc,则需要计算t1-ta、t1-tb、t1-tc,差值最大,表明距离当前时间最远,任务等待分配CPU资源的时间最长,因此,需要将该任务优先进行调度以获得CPU 资源,具体为调度至所述目标任务当前所在的CPU之外的其余CPU上运行。
例如,***包括CPU A、CPU B、CPU C和CPU D,目标任务当前在CPU A上运行,CPU B为第一CPU,则可将目标任务调度到CPU B上运行,也可以调度到CPU B、CPU C和CPU D中负载小且任务切换时间较大的某个CPU上运行,还可以是CPU B、CPU C和CPU D中剩余计算能力最大的CPU。
当然,目标任务可以包括一个或多个。当目标任务包括多个时,可将这多个任务添加至栈或队列中,并依次进行调度。
在本申请实施例中,在***包含的多个CPU中的第一CPU进入空闲状态而触发负载均衡时,获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务的任务切换时间,进而获取所述任务切换时间中距离当前时间的最远时间,将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行。以CPU进入空闲状态触发负载均衡为触发时机,根据每个任务的任务切换时间,从而可以将由于某些原因长时间没有得到运行的任务调度到其余的CPU上,从而可以在实现负载均衡的同时还可以降低调度延迟。
请参见图4,为本申请实施例提供的一种任务调度方法的流程示意图。图4 所示实施例相对于图1所示实施例的不同之处在于,图1强调的是在触发负载均衡时获取任务切换时间以进行任务调度的思路,图4中描述了方案的具体实现,强调了从进程描述结构体中获取各任务的任务切换时间的具体方式,以及对任务切换时间进行更新及保存的方案,该任务调度方法可以包括以下步骤:
S201,在***包含的多个CPU中的第一CPU进入空闲状态而触发负载均衡时,获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务对应的进程描述结构体;
本申请实施例应用在多中央处理器(Central Processing Unit,CPU)***中,包含有多个CPU。所述***可以是SMP***,也可以是HMP***。
当某个CPU(第一CPU)进入空闲(IDLE)状态触发负载均衡时,或者发生tick触发负载均衡时,表明该第一CPU有足够的资源可供某个或者某些任务运行,因此,为了保持***负载均衡,则需要检测其余CPU上任务队列中等待较长时间而未分配到CPU资源的任务。具体的,需要获取各任务的进程描述结构体以读取任务切换时间last_sched_ts。
当把一个程序加载到内存当中,此时,就有了进程。关于进程,有一个相关的结构叫做进程控制块(PCB),是***为了方便进行管理进程所设置的一个数据结构,通过PCB,就可以记录进程的特征以及一些信息。内核当中使用进程描述符task_struct。
task_struct就是一个结构体,通过这个结构体,可以对进程所有的相关的信息进行维护,对进程进行管理,通常定义在include/linux/sched.h文件中。
例如,一种进程描述结构体如下:
具体的,分别获取除第一CPU以外的其余CPU上各任务对应的进程描述结构体。
S202,获取所述各任务对应的进程描述结构体中的切换时间字段,获取各所述切换时间字段对应的任务切换时间;
在上述进程描述结构体中包括切换时间字段last_sched_ts。last_sched_ts是指一个任务被唤醒的时间或者因时间片耗完被强制调度出去的时间。
任务切换时间与当前时间的差值即为获取CPU资源之前的延迟时间,当 last_sched_ts越小,表明距离当前时间越远,也就是获取CPU资源之前的延迟时间越长。
S203,获取所述任务切换时间中距离当前时间的最远时间;
可以理解的是,首先确定每个CPU上对应的最小last_sched_ts,然后在其中找出最小last_sched_ts,也就是距离当前时间的最远时间。
可选的,当第一CPU剩余资源较多时,也可获取任务切换时间中距离当前时间较长的多个任务,如前三个。
可选的,每个任务都有相应的优先级,优先级决定它何时运行和接收多少 CPU资源。Windows***的优先级共32级,是从0到31的数值,称为基本优先级。***按照不同的优先级调度任务的运行,其中,0-15级是普通优先级,任务的优先级可以动态变化,高优先级任务优先运行,只有高优先级任务不运行时,才调度低优先级任务运行,优先级相同的任务按照时间片轮流运行。 16-31级是实时优先级,实时优先级与普通优先级的最大区别在于相同优先级任务的运行不按照时间片轮转,而是先运行的任务就先控制CPU,如果它不主动放弃控制,同级或低优先级的任务就无法运行。Linux***的优先级从0-140, 0-99表示实时任务,100-140表示非实时任务,与Windows相反,Linux优先级值越小,意味着级别越高,任务优先被内核调度。
在本申请实施例中,并不限定为Windows***或Linux***。可以先确定出距离当前时间较长的多个任务,及等待分配CPU资源较长的多个任务,再根据每个任务的优先级,确定出一个或多个目标任务以被调度。
S204,当所述距离当前时间的最远时间大于或者等于预设阈值时,将所述距离当前时间的最远时间指示的目标任务调度至所述第一CPU上运行,或者将所述距离当前时间的最远时间指示的目标任务调度至第二CPU上运行,所述第二CPU为所述多个CPU中负载小于负载阈值的CPU且所述CPU对应的任务切换时间距离当前时间最近;
可以理解的是,当所述距离当前时间的最远时间小于预设阈值时,表明该最远时间指示的目标任务等待分配CPU资源的时间不长,而无需调度到其余 CPU上,继续等待即可。此时相对调度到其他CPU上而言,反而增加了计算量。因此,当所述距离当前时间的最远时间大于或者等于预设阈值时,表明该最远时间指示的目标任务等待分配CPU资源的时间较长,而需要进行调度。
由于第一CPU进入空闲状态,有剩余足够的CPU资源而无任务进行处理,因此,可优先将目标任务调度至第一CPU,从而可快速为目标任务分配CPU资源而运行。
或者,除第一CPU以外,还有第二CPU剩余计算能力大,负载低,且没有等待较长的任务待运行,则可以将目标任务调度至第二CPU上运行。
当然,若目标任务数量较多时,也可以将这多个目标任务分别调度至第一 CPU和第二CPU上,从而可满足多个任务的调度及运行。
S205,当检测到所述多个CPU中至少一个CPU上发生任务切换事件时,对所述多个CPU上各任务的任务切换时间进行更新。
在到达下一轮任务调度时间之前(如图3中t1~t2时间段之间),若检测到某个CPU或者多个CPU上发生任务切换事件(如任务被唤醒或者被强制调度等),则对该CPU上的任务的任务切换时间last_sched_ts进行更新,并更新为发生任务切换事件的时间。若有多个任务均发生任务切换事件时,则分别进行更新。
具体的,确定所述任务切换事件对应的切换状态为被唤醒状态或被强制调度状态时,将所述多个CPU上各任务的任务切换时间设置为当前时间,确定所述任务切换事件对应的切换状态不为被唤醒状态或被强制调度状态时,将所述多个CPU上各任务的任务切换时间设置为零。
进一步的,确定所述任务切换对应的切换状态为被唤醒状态或被强制调度状态时,按照所述任务切换时间的先后顺序(如红黑树形式)保存所述任务切换时间,从而方便在下一轮任务调度时基于所保存任务切换时间进行任务调度。
需要说明的是,还可以在***包含的多个中央处理器CPU中的第一CPU进入空闲状态而触发负载均衡之前(如图3中t0~t1时间段),当检测到所述多个 CPU中至少一个CPU上发生任务切换事件时,对所述多个CPU上各任务的任务切换时间进行更新。
具体的,确定所述任务切换事件对应的切换状态为被唤醒状态或被强制调度状态时,将所述多个CPU上各任务的任务切换时间设置为当前时间;确定所述任务切换事件对应的切换状态不为被唤醒状态或被强制调度状态时,将所述多个CPU上各任务的任务切换时间设置为零。
确定所述任务切换对应的切换状态为被唤醒状态或被强制调度状态时,按照所述任务切换时间的先后顺序保存所述任务切换时间。
在本申请实施例中,以CPU进入空闲状态触发负载均衡为触发时机,根据每个任务的任务切换时间计算调度延迟,从而可以将调度延迟较大的任务调度到空闲的第一CPU上或者负载低且调度延迟小的第二CPU上运行,从而可以在实现负载均衡的同时还可以降低调度延迟,提升***性能,提升用户体验。此外,在进行调度前或者调度后,及时对任务的任务切换时间进行更新及保存,可以确保在任务调度时得到的任务调度时间准确有效,进而可以提高任务调度的准确性。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参见图5,其示出了本申请一个示例性实施例提供的任务调度装置的结构示意图。该任务调度装置可以通过软件、硬件或者两者的结合实现成为电子设备的全部或一部分。该装置1包括时间获取模块10和任务调度模块20。
时间获取模块10,用于在***包含的多个中央处理器CPU中的第一CPU 进入空闲状态而触发负载均衡时,获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务的任务切换时间;
任务调度模块20,用于获取所述任务切换时间中距离当前时间的最远时间,将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行。
可选的,所述时间获取模块10,具体用于:
获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务对应的进程描述结构体;
获取所述各任务对应的进程描述结构体中的切换时间字段,获取各所述切换时间字段对应的任务切换时间。
可选的,所述任务调度模块20,具体用于:
当所述距离当前时间的最远时间大于或者等于预设阈值时,将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行。
可选的,所述任务调度模块20,具体用于:
将所述距离当前时间的最远时间指示的目标任务调度至所述第一CPU上运行,或者将所述距离当前时间的最远时间指示的目标任务调度至第二CPU上运行,所述第二CPU为所述多个CPU中负载小于负载阈值的CPU且所述CPU对应的任务切换时间距离当前时间最近。
可选的,如图6所示,所述装置还包括时间更新模块30,用于:
当检测到所述多个CPU中至少一个CPU上发生任务切换事件时,对所述多个CPU上各任务的任务切换时间进行更新。
可选的,所述时间更新模块30,具体用于:
确定所述任务切换事件对应的切换状态为被唤醒状态或被强制调度状态时,将所述多个CPU上各任务的任务切换时间设置为当前时间;
确定所述任务切换事件对应的切换状态不为被唤醒状态或被强制调度状态时,将所述多个CPU上各任务的任务切换时间设置为零。
可选的,如图6所示,所述装置还包括时间保存模块40,用于:
确定所述任务切换对应的切换状态为被唤醒状态或被强制调度状态时,按照所述任务切换时间的先后顺序保存所述任务切换时间。
需要说明的是,上述实施例提供的任务调度装置在执行任务调度方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的任务调度装置与任务调度方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请实施例中,以CPU进入空闲状态触发负载均衡为触发时机,根据每个任务的任务切换时间计算调度延迟,从而可以将调度延迟较大的任务调度到空闲的第一CPU上或者负载低且调度延迟小的第二CPU上运行,从而可以在实现负载均衡的同时还可以降低调度延迟,提升用户体验。此外,在进行调度前或者调度后,及时对任务的任务切换时间进行更新及保存,可以确保在任务调度时得到的任务调度时间准确有效,进而可以提高任务调度的准确性。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1-图4所示实施例的方法步骤,具体执行过程可以参见图1-图4所示实施例的具体说明,在此不进行赘述。
请参见图7,为本申请实施例提供的一种电子设备的结构示意图。如图7所示,所述电子设备1000可以包括:至少一个处理器1001,至少一个网络接口 1004,用户接口1003,存储器1005,至少一个通信总线1002。
其中,通信总线1002用于实现这些组件之间的连接通信。
其中,用户接口1003可以包括显示屏(Display)、摄像头(Camera),可选用户接口1003还可以包括标准的有线接口、无线接口。
其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI 接口)。
其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种借口和线路连接整个电子设备1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行电子设备1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列 (Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1001可集成中央处理器 (Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作***、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。
其中,存储器1005可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作***的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图7所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及任务调度应用程序。
在图7所示的电子设备1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的任务调度应用程序,并具体执行以下操作:
在***包含的多个中央处理器CPU中的第一CPU进入空闲状态而触发负载均衡时,获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务的任务切换时间;
获取所述任务切换时间中距离当前时间的最远时间,将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余 CPU上运行。
在一个实施例中,所述处理器1001在执行获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务的任务切换时间时,具体执行以下操作:
获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务对应的进程描述结构体;
获取所述各任务对应的进程描述结构体中的切换时间字段,获取各所述切换时间字段对应的任务切换时间。
在一个实施例中,所述处理器1001在执行将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行时,具体执行以下操作:
当所述距离当前时间的最远时间大于或者等于预设阈值时,将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行。
在一个实施例中,所述处理器1001在执行将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行时,具体执行以下操作:
将所述距离当前时间的最远时间指示的目标任务调度至所述第一CPU上运行,或者将所述距离当前时间的最远时间指示的目标任务调度至第二CPU上运行,所述第二CPU为所述多个CPU中负载小于负载阈值的CPU且所述CPU对应的任务切换时间距离当前时间最近。
在一个实施例中,所述处理器1001还执行以下操作:
当检测到所述多个CPU中至少一个CPU上发生任务切换事件时,对所述多个CPU上各任务的任务切换时间进行更新。
在一个实施例中,所述处理器1001在执行对所述多个CPU上各任务的任务切换时间进行更新时,具体执行以下操作:
确定所述任务切换事件对应的切换状态为被唤醒状态或被强制调度状态时,将所述多个CPU上各任务的任务切换时间设置为当前时间;
确定所述任务切换事件对应的切换状态不为被唤醒状态或被强制调度状态时,将所述多个CPU上各任务的任务切换时间设置为零。
在一个实施例中,所述处理器1001还执行以下操作:
确定所述任务切换对应的切换状态为被唤醒状态或被强制调度状态时,按照所述任务切换时间的先后顺序保存所述任务切换时间。
在本申请实施例中,以CPU进入空闲状态触发负载均衡为触发时机,根据每个任务的任务切换时间计算调度延迟,从而可以将调度延迟较大的任务调度到空闲的第一CPU上或者负载低且调度延迟小的第二CPU上运行,从而可以在实现负载均衡的同时还可以降低调度延迟,提升用户体验。此外,在进行调度前或者调度后,及时对任务的任务切换时间进行更新及保存,可以确保在任务调度时得到的任务调度时间准确有效,进而可以提高任务调度的准确性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (10)
1.一种任务调度方法,其特征在于,所述方法包括:
在***包含的多个中央处理器CPU中的第一CPU进入空闲状态而触发负载均衡时,获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务的任务切换时间;
获取所述任务切换时间中距离当前时间的最远时间,将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行。
2.根据权利要求1所述的方法,其特征在于,所述获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务的任务切换时间,包括:
获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务对应的进程描述结构体;
获取所述各任务对应的进程描述结构体中的切换时间字段,获取各所述切换时间字段对应的任务切换时间。
3.根据权利要求1所述的方法,其特征在于,所述将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行,包括:
当所述距离当前时间的最远时间大于或者等于预设阈值时,将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行。
4.根据权利要求3所述的方法,其特征在于,所述将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行,包括:
将所述距离当前时间的最远时间指示的目标任务调度至所述第一CPU上运行,或者将所述距离当前时间的最远时间指示的目标任务调度至第二CPU上运行,所述第二CPU为所述多个CPU中负载小于负载阈值的CPU且所述CPU对应的任务切换时间距离当前时间最近。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到所述多个CPU中至少一个CPU上发生任务切换事件时,对所述多个CPU上各任务的任务切换时间进行更新。
6.根据权利要求5所述的方法,其特征在于,所述对所述多个CPU上各任务的任务切换时间进行更新,包括:
确定所述任务切换事件对应的切换状态为被唤醒状态或被强制调度状态时,将所述多个CPU上各任务的任务切换时间设置为当前时间;
确定所述任务切换事件对应的切换状态不为被唤醒状态或被强制调度状态时,将所述多个CPU上各任务的任务切换时间设置为零。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
确定所述任务切换对应的切换状态为被唤醒状态或被强制调度状态时,按照所述任务切换时间的先后顺序保存所述任务切换时间。
8.一种任务调度装置,其特征在于,所述装置包括:
时间获取模块,用于在***包含的多个中央处理器CPU中的第一CPU进入空闲状态而触发负载均衡时,获取所述多个CPU中除所述第一CPU以外的其余CPU上各任务的任务切换时间;
任务调度模块,用于获取所述任务切换时间中距离当前时间的最远时间,将所述距离当前时间的最远时间指示的目标任务调度至所述目标任务当前所在的CPU之外的其余CPU上运行。
9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~7任意一项的方法步骤。
10.一种电子设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~7任意一项的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010409028.6A CN111597044A (zh) | 2020-05-14 | 2020-05-14 | 任务调度方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010409028.6A CN111597044A (zh) | 2020-05-14 | 2020-05-14 | 任务调度方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111597044A true CN111597044A (zh) | 2020-08-28 |
Family
ID=72185641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010409028.6A Pending CN111597044A (zh) | 2020-05-14 | 2020-05-14 | 任务调度方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111597044A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035236A (zh) * | 2020-09-08 | 2020-12-04 | 深圳天源迪科信息技术股份有限公司 | 基于多因子协同的任务调度方法、装置、及存储介质 |
CN114880102A (zh) * | 2022-07-04 | 2022-08-09 | 北京智芯半导体科技有限公司 | 安全芯片及其多任务调度方法和装置、存储介质 |
CN116450306A (zh) * | 2022-09-26 | 2023-07-18 | 宁德时代新能源科技股份有限公司 | 任务调度方法、装置、设备、存储介质及产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001350639A (ja) * | 2000-06-06 | 2001-12-21 | Atr Adaptive Communications Res Lab | ソフトリアルタイムにおけるスケジューリング方法 |
CN109144696A (zh) * | 2018-08-30 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、电子设备及存储介质 |
CN109766180A (zh) * | 2017-11-09 | 2019-05-17 | 阿里巴巴集团控股有限公司 | 负载均衡方法和装置、存储介质、计算设备及计算*** |
-
2020
- 2020-05-14 CN CN202010409028.6A patent/CN111597044A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001350639A (ja) * | 2000-06-06 | 2001-12-21 | Atr Adaptive Communications Res Lab | ソフトリアルタイムにおけるスケジューリング方法 |
CN109766180A (zh) * | 2017-11-09 | 2019-05-17 | 阿里巴巴集团控股有限公司 | 负载均衡方法和装置、存储介质、计算设备及计算*** |
CN109144696A (zh) * | 2018-08-30 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
李其昌: "基于等待时间的多任务调度算法的研究与设计" * |
覃中: "基于多核***的线程调度" * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035236A (zh) * | 2020-09-08 | 2020-12-04 | 深圳天源迪科信息技术股份有限公司 | 基于多因子协同的任务调度方法、装置、及存储介质 |
CN114880102A (zh) * | 2022-07-04 | 2022-08-09 | 北京智芯半导体科技有限公司 | 安全芯片及其多任务调度方法和装置、存储介质 |
CN114880102B (zh) * | 2022-07-04 | 2022-10-25 | 北京智芯半导体科技有限公司 | 安全芯片及其多任务调度方法和装置、存储介质 |
CN116450306A (zh) * | 2022-09-26 | 2023-07-18 | 宁德时代新能源科技股份有限公司 | 任务调度方法、装置、设备、存储介质及产品 |
CN116450306B (zh) * | 2022-09-26 | 2023-12-26 | 宁德时代新能源科技股份有限公司 | 任务调度方法、装置、设备、存储介质及产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6646114B2 (ja) | 動的仮想マシンサイジング | |
US8539498B2 (en) | Interprocess resource-based dynamic scheduling system and method | |
EP3008594B1 (en) | Assigning and scheduling threads for multiple prioritized queues | |
CN109564528B (zh) | 分布式计算中计算资源分配的***和方法 | |
KR20180053359A (ko) | 다중-버전형 태스크들의 효율적 스케줄링 | |
CN111597044A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
JP2013506179A (ja) | 命令スレッドを組み合わせた実行の管理システムおよび管理方法 | |
EP2446357A1 (en) | High-throughput computing in a hybrid computing environment | |
CN111897637B (zh) | 作业调度方法、装置、主机及存储介质 | |
US20130036423A1 (en) | Systems and methods for bounding processing times on multiple processing units | |
CN111488210B (zh) | 基于云计算的任务调度方法、装置和计算机设备 | |
US10733022B2 (en) | Method of managing dedicated processing resources, server system and computer program product | |
WO2015052501A1 (en) | Scheduling function calls | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
CN114637536A (zh) | 任务处理方法、计算协处理器、芯片及计算机设备 | |
CN114968567A (zh) | 用于分配计算节点的计算资源的方法、装置和介质 | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN111930516B (zh) | 一种负载均衡方法及相关装置 | |
CN116795503A (zh) | 任务调度方法、任务调度装置、图形处理器及电子设备 | |
Nosrati et al. | Task scheduling algorithms introduction | |
CN114661415A (zh) | 调度方法及计算机*** | |
Pang et al. | Efficient CUDA stream management for multi-DNN real-time inference on embedded GPUs | |
CN112114967B (zh) | 一种基于服务优先级的gpu资源预留方法 | |
CN114968500A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
Ramasubramanian et al. | Studies on Performance Aspect of Scheduling Algorithms on Multicore Platform |
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 |