CN117632400A - 任务调度方法、电子设备及计算机可读存储介质 - Google Patents

任务调度方法、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN117632400A
CN117632400A CN202211001547.4A CN202211001547A CN117632400A CN 117632400 A CN117632400 A CN 117632400A CN 202211001547 A CN202211001547 A CN 202211001547A CN 117632400 A CN117632400 A CN 117632400A
Authority
CN
China
Prior art keywords
task
load
feature
processor
cpu
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
Application number
CN202211001547.4A
Other languages
English (en)
Inventor
李海程
周轶刚
王耀光
谢星华
路旭
成坚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211001547.4A priority Critical patent/CN117632400A/zh
Priority to PCT/CN2023/093867 priority patent/WO2024037068A1/zh
Publication of CN117632400A publication Critical patent/CN117632400A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Hardware Redundancy (AREA)
  • Stored Programmes (AREA)
  • Power Sources (AREA)

Abstract

本发明涉及计算机技术领域,具体涉及一种任务调度方法、电子设备及计算机可读存储介质。其中的方法包括:计算出执行第一任务需要的第一负载值,并确定与第一负载值所属的第一负载范围所对应的至少一个第一等级处理器;采用至少一个第一等级处理器中的处于空闲状态的第一等级处理器处理第一任务;计算出执行第二任务需要的第二负载值,并确定与第二负载值所属的第二负载范围所对应的至少一个第二等级处理器;采用至少一个第二等级处理器中的处于空闲状态的第二等级处理器处理第二任务。本申请能够在任务执行前或者任务执行过程中,将任务及时调度到算力等级匹配且空闲的CPU上继续处理,有利于提高任务执行效率,并有利于提高电子设备的处理性能。

Description

任务调度方法、电子设备及计算机可读存储介质
技术领域
本发明涉及计算机技术领域,具体涉及一种任务调度方法、电子设备及计算机可读存储介质。
背景技术
随着计算机技术的发展,各类云与互联网场景中非结构化数据的比例逐渐上升。为了满足对大量非结构化数据的存储需求,各类电子设备采用的存储***扩展方式也由通过提高CPU单核频率来提高算力的纵向扩展(Scale Up)方式,逐步演进为通过增加CPU核数来提高算力的横向扩展(Scale-out)方式。这主要由于横向扩展方式中每个节点上扩展的CPU往往可以包含更大的处理能力、更大容量以及更大的I/O带宽,能够在扩展容量的同时带来处理性能的提升。相应地,各类电子设备执行各项任务的处理时,需要适应不同任务的负载特征,调用计算能力以及运行效率等适配的处理器(Central Processing Unit,CPU)进行相应任务的计算和处理。可以理解,任务的负载特征可以用于衡量该任务执行过程中需要消耗的计算、存储等方面资源的多少。
为了实现将不同负载特征的任务调度到适配的处理器上运行,业内提出了多种处理器架构,例如针对多核CPU提出的异构众核架构,可以通过非一致性内存访问(Non-Uniform Memory Access,NUMA)来实现处理器算力的横向扩展,并且可以通过非对称多处理器(Asymmetric Multi-Processing,AMP)架构来提升不同场景下的计算机***算力。其中,AMP架构将不同算力的处理器通过总线互联,由于不同算力等级的处理器的能效比不同,因此操作***(Operation System,OS)需要在执行任务时根据该任务的实时负载特征,来匹配具有相应算力的处理器,然后将该任务调度到匹配到的处理器上继续运行。以此来提高整个***中的处理器等硬件的整体能效比,也有效提升***整体吞吐率与瞬时响应速度。因此,需要一种任务调度方案来将各任务调度到算力匹配的处理器上执行处理。
发明内容
有鉴于此,为将电子设备处理的各类任务调度到算力匹配的处理器上执行处理,提高对电子设备上各个CPU的算力资源分配效率,本申请实施例提供了一种任务调度方法、电子设备及计算机可读存储介质。
第一方面,本申请实施例提供了一种任务调度方法,应用于电子设备,该方法包括:
计算出执行第一任务需要的第一负载值,并确定与第一负载值所属的第一负载范围所对应的至少一个第一等级处理器;采用至少一个第一等级处理器中的处于空闲状态的第一等级处理器处理第一任务;
计算出执行第二任务需要的第二负载值,并确定与第二负载值所属的第二负载范围所对应的至少一个第二等级处理器;采用至少一个第二等级处理器中的处于空闲状态的第二等级处理器处理第二任务。
即本申请实施例提供的任务调度方法,通过计算电子设备上执行的各个任务对应需要的任务负载特征值,将各个任务及时调度到算力等级匹配并且空闲的CPU上运行。如此,可以提高电子设备对所执行的各个任务进行动态调度,及时为各个任务分配算力匹配的CPU处理相应任务,有利于提高各个任务的运行效率。并且,将相应任务调度到空闲的CPU上进行处理,也有利于提高各个任务的处理效率,有利于提高电子设备的处理性能。
上述电子设备例如可以是服务器、手机、PC等电子设备,在此不做限制。上述任务负载特征值,包括上述第一任务对应的第一负载值、及上述第二任务对应的第二负载值,上述第一等级处理器和第二等级处理器,例如可以是下文具体实施方式中描述的大核、小核。在另一些实施例中,上述第一等级处理器和第二等级处理器也可以对应于其他等级名称,再不做限制。上述处理第一任务的第一等级处理器,例如可以是下文具体实施方式中的第一目标CPU。
在上述第一方面的一种可能的实现中,在采用第一等级处理器处理第一任务的过程中,上述方法还包括:计算出执行第一任务需要的第三负载值,并确定与第三负载值所属的第三负载范围所对应的至少一个第三等级处理器;
采用至少一个第三等级处理器中的处于空闲状态的第三等级处理器处理第一任务;其中,第三等级处理器与第一等级处理器为不同等级的处理器,第三等级处理器与第二等级处理器为相同或者不同等级的处理器。
即上述任务调度过程可以包括在任务处理过程中对任务进行调度的过程。例如,在第一等级处理器处理第一任务的过程中,电子设备可以对该第一任务的实时的任务负载特征值进行监控。例如,电子设备监控到当前第一任务的任务负载特征值为第三负载值。而该第三负载值对应的第一任务可能更适合在另一等级的处理器上运行,例如更适合在第三等级处理器上运行,此时则可以将该第一任务调度到第三等级处理器上继续处理。上述第三等级处理器例如可以是下文具体实施方式中的第二目标CPU。
可以理解,在第一等级处理器处理第一任务的过程中,可能会由于该第一等级处理器上处理的任务较多,或者该第一任务对应须执行的指令类型以及指令执行情况的统计结果发生变化等,导致第一任务对应的任务负载特征值变大或变小,以致不再适合在第一等级处理器上继续处理。此时,电子设备则可以及时监控到这种变化,将运行中的第一任务调度到算力等级更加匹配并且空闲的第三等级处理器上继续处理。如此,有利于提高第一任务的处理效率。
可以理解,当电子设备上预设有两种算力等级的处理器时,第三等级处理器可以是不同于第一等级处理器的第二等级处理器。当电子设备上预设有三种算力等级的处理器时,第三等级处理器可以不同于第二等级处理器,也可以与第二等级处理器为相同等级的处理器,在此不做限制。
在上述第一方面的一种可能的实现中,采用至少一个第三等级处理器中的处于空闲状态的第三等级处理器处理第一任务,包括:对第一等级处理器处理第一任务的过程触发中断;将第一任务从第一等级处理器的第一任务队列中移除,并将第一任务添加到第三等级处理器的第二任务队列中;采用第三等级处理器选中第二任务队列中的第一任务继续处理。
即将第一任务从原本运行的第一等级处理器上调度到第三等级处理器上继续处理的过程,可以通过中断机制发起。例如,先对第一等级处理器处理第一任务的过程触发中断,再将该第一任务调度到第三等级处理器的任务队列中等待处理。可以理解,被调度到的第三等级处理器通常处于空闲状态,因此该第一任务调度到第三等级处理器后很快便可以继续处理,这有利于降低任务调度过程的时延,使用户不可感知,有利于提高用户体验。
在另一些实施例中,将第一任务从原本运行的第一等级处理器上调度到第三等级处理器上继续处理的过程,也可以通过非中断驱动场景。例如,第一任务调度到第一等级处理器后,可以由任务特征计算模块采样PMU相关计数值计算任务负载特征值,并在确定第一任务需要进行调度时,发起任务调度。在此不做限制。可以理解,上述非中断驱动场景的任务调度过程是软件实现过程,无需发起中断。
在上述第一方面的一种可能的实现中,电子设备包括对应于第一等级处理器预设的第一性能阈值和第二性能阈值,其中第一性能阈值大于第二性能阈值,并且,对第一等级处理器处理第一任务的过程触发中断,包括:检测到计算出的第三负载值大于第一性能阈值、或者小于第二性能阈值,对第一等级处理器处理第一任务的过程触发中断。
上述第一性能阈值,例如可以是下文具体实施方式中表1中对CPU的MSR寄存器定义的MSR_PMU_MODEL_THRESHOLD_H中对应设置的上界阈值。上述第二性能阈值,例如可以是下文具体实施方式中表1中对CPU的MSR寄存器定义的MSR_PMU_MODEL_THRESHOLD_L中对应设置的下界阈值。在此不做限制。
在上述第一方面的一种可能的实现中,电子设备包括任务特征标识与处理器等级标识之间的对应关系,处理器等级标识至少包括第一等级处理器和第二等级处理器,并且,确定与第一负载值所属的第一负载范围所对应的至少一个第一等级处理器,包括:基于预设的标识转换规则,将计算出的第一负载值转换为对应任务特征标识的第一标识值;
确定第一标识值属于第一任务特征标识对应的标识值范围,并基于第一任务特征标识与第一等级处理器之间的第一对应关系,确定至少一个第一等级处理器。
即电子设备实时监控到的第一任务对应的任务负载特征值,例如上述第一负载值,可以转换为相应的任务特征标识值,该标识值例如可以是相应任务负载特征值等比例换算得到的值。而电子设备上可以预设不同任务特征标识对应的标识值范围与不同算力等级的处理器之间的对应关系,或者不同任务特征标识对应的标识值范围也可以对应于不同算力等级的处理器所对应的算力特征值范围。如此,则可以根据实时监控到的任务负载特征值,判断第一任务当前运行的处理器对应的算力等级是否匹配。
在上述第一方面的一种可能的实现中,电子设备包括第一负载范围与第一任务特征标识对应的标识值范围之间的第二对应关系,并且,确定与第一负载值所属的第一负载范围所对应的至少一个第一等级处理器,包括:确定与第一负载值所属的第一负载范围,并基于第二对应关系确定与第一负载值相对应的第一任务特征标识;基于第一对应关系,确定至少一个第一等级处理器。
在另一些实施例中,电子设备上也可以预设任务负载特征值的范围与相应的任务特征标识对应的标识值范围之间的对应关系。如此,在确定监控到的任务负载特征值所属的任务负载特征值的范围后,例如确定上述第一负载值属于第一负载范围后,可以通过该第一负载范围对应的第一任务特征标识对应的标识值范围,确定算力等级匹配的至少一个第一等级处理器。
在上述第一方面的一种可能的实现中,电子设备包括多个处理器,并且,电子设备基于各处理器的算力特征值,对各处理器添加处理器等级标识,其中,各处理器的算力特征值与各处理器的频率和微架构算力相关,处理器的频率包括处理器的主频或者工作频率。
在上述第一方面的一种可能的实现中,第一负载值与第一等级处理器获取及执行第一任务相关的指令类型、以及指令的执行情况统计结果相关;第二负载值与第二等级处理器获取及执行第一任务相关的指令类型、以及指令的执行情况统计结果相关。
第二方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;一个或多个存储器;一个或多个存储器存储有一个或多个程序,当一个或者多个程序被一个或多个处理器执行时,使得电子设备执行上述第一方面提供的任务调度方法。
可以理解,上述电子设备可以是服务器、手机、PC等电子设备,在此不做限制。
第三方面,本申请实施例提供了一种计算机可读存储介质,存储介质上存储有指令,指令在计算机上执行时使计算机执行上述第一方面提供的任务调度方法。
第四方面,本申请实施例提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述第一方面提供的任务调度方法。
综上,本申请实施例提供的任务调度方案可以有效提高对电子设备上各个CPU的算力资源分配效率,将待运行或者正在运行的任务及时调度到算力大小适配的CPU上高效运行,无需等待***调度周期便可以进行任务调度,因而也有利于各个任务的调度及运行效率。并且,本申请方案既可以对相同微架构的CPU确定算力大小以及对应的算力等级,也可以对不同微架构的CPU确定算力大小以及对应的算力等级,因而可以将目标任务调度到算力等级匹配的相同或不同微架构的CPU上运行,即场景适应性更强。
附图说明
图1所示为本申请实施例所提供的一种应用场景示意图。
图2a所示为一种任务调度方案的实现过程示意图。
图2b所示为另一种任务调度方案的实现过程示意图。
图3所示为本申请实施例所提供的一种服务器***架构示意图。
图4所示为本申请实施例所提供的一种任务调度方法的实施过程中图3所示***部分结构之间的交互流程示意图。
图5所示为本申请实施例所提供的一种负载特征监控器监控任务负载特征值的工作原理示意图。
图6所示为本申请实施例所提供的一种负载特征监控器触发中断的实施流程示意图。
图7所示为本申请实施例所提供的一种任务特征计算模块响应中断发起任务调度的工作流程示意图。
图8所示为本申请实施例所提供的一种大小核调度器执行任务调度的工作流程示意图。
图9所示为本申请实施例所提供的一种任务调度后设置负载特征监控器的实施流程图。
图10所示为本申请实施例所提供的另一种任务调度方法的实施流程图。
图11所示为本申请实施例所提供的一种任务调度方法的内部实现过程示意图。
图12所示为本申请实施例所提供的一种服务器的硬件结构示意图。
图13所示为本申请实施例所提供的一种手机的硬件结构示意图。
图14所示为本申请实施例所提供的一种手机的***架构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合说明书附图以及具体的实施方式对本申请实施例所提供的技术方案进行详细的说明。
为更加清楚的理解本申请实施例中的方案,下面首先对本申请实施例中涉及到的一些术语进行解释说明。
(1)大核、小核,是指电子设备中配置不同的多个CPU,***可以综合各CPU的计算能力及运算效率等方面性能评定算力大小,并依据算力大小将电子设备中的CPU划分成大核、小核等算力等级。
可以理解,大核算力等级的CPU,对应处理的任务例如可以是计算量、逻辑判断量会非常大而且相应指令比较集中,因此该类CPU业内通常称之为计算密集型。
小核算力等级的CPU,所处理的任务例如可以是对磁盘或者内存的读取数据和输出数据非常大,因此该类CPU业内通常称之为IO密集型。
(2)中断(interrupt),是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
(3)任务负载,是指任务运行时需消耗的算力资源多少、以及需消耗的存储资源大小等。可以理解,任务运行时需消耗的算力资源越多,即任务负载越大时,在各CPU算力相当的情况下需要使用的CPU数量相应也会越多。
图1根据本申请实施例示出了一种应用场景示意图。
如图1所示,该场景包括服务器100。该服务器100中的多个CPU依算力的大小可以被划分为大核、小核等算力等级,在一些实施例中,有些CPU的算力排名比较居中,还可以被划分为普通核,在此不做限制。当服务器100需要执行的目标任务需要较大算力时,例如服务器100需运行某个大型联机游戏的数据处理任务或运算任务时,则需要调度大核来执行。而当服务器100需要执行的目标任务需要较小的算力时,例如服务器100需要运行某个游戏应用的游戏场景加载任务、或者需要运行日历应用的日历数据更新任务时,则不必排队在大核处理的任务队列中,可以调度小核来执行,反而更加快速、高效。
可以理解,在上述图1所示的场景中,服务器100在对应不同算力需求的任务,调度算力大小匹配的处理器来执行的过程中,有利于避免一些需要较少计算资源的任务占用大核类处理器的任务队列位置。试想,如果一些任务在小核上运行即可,但是该任务无法及时调度到相应的小核上进行处理,则就会降低该任务以及该任务所在任务队列中其他任务的运行速率,即可能会导致一些需要较多计算资源的任务排队时间较长,同时也会降低整个***的吞吐率。然而,有效的任务调度,需要先对待处理的各个任务所对应的负载特征进行有效、及时地检测,然后再基于各任务对应的负载特征来匹配算力合适的CPU执行相应的任务处理。
在此需说明的是,在本申请实施例的上下文描述中,如无特别说明,“***”或“操作***”,均是指实施本申请实施例提供的数据更新方法的服务器等电子设备所搭载的操作***,例如Linux、欧拉***(openEuler OS)、WindowsTM***、MacTM***、以及鸿蒙TM***(Harmony OS)、安卓TM***或者iOSTM***等,在此不做限制。
为了使服务器100等电子设备上运行的程序在不同线程上执行的任务能够运行在算力的处理器(CPU)上,图2a至图2b分别示出了一种任务调度方案。
参考图2a所示的一种任务调度方案,该方案电子设备上的一个固件:表管理器(Table Manager)读取不同微架构类型的CPU硬件信息,并对各类型中的CPU进行性能排序。例如,类型0中的CPU性能排序依次为CPU00、CPU01、CPU02,类型1中的CPU性能排序依次为CPU10、CPU11、CPU12,类型0的CPU与类型1的CPU的微架构不同。进而,让待调度的任务线程在不同微架构类型中的大核CPU和小核CPU分别运行,并测得各线程上的性能数据,例如各CPU在单位时钟周期内执行的指令数(Instruction Per Clock,IPC)。然后基于测得的IPC值,可以计算任务运行在各个微架构类型中的大、小核CPU上对应的IPC比值大小并记录。如此,在需要运行待调度任务时,OS调度器读取测得的IPC比值等数据,将该任务调度到较大的IPC比值对应类型中的CPU上运行,例如从该类型中选择性能排序较高的CPU来运行任务。但是,该任务调度方案由于需要测试待调度任务在不同类型的CPU上运行时的IPC值,因此需要适应操作***对任务或者CPU的固定调度周期,导致一些任务的调度周期也较长。并且,该任务调度方案仅能在不同微架构类型的CPU之间进行调度,无法适用于相同微架构的大小核之间的任务调度,适用范围也较窄。
再参考图2b所示的另一种任务调度方案,该方案通过在OS内核中增加任务算力需求计算模块,负责对于任务正在执行的线程进行算力评估以及分组,以使不同类型的应用分别对应默认的线程分组。进而,任务算力需求计算模块利用OS任务调度器实时统计的各线程所在的CPU利用率、调度时延等信息,并综合IO速率信息,根据***的应用框架配置的目标时间点计算各线程上任务的算力需求,并对各线程进行重新分组。进而,任务调度器可以根据重新分组的结果,将需要调度的任务调度到新的线程分组对应的算力匹配的目标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微架构中性能检测单元(Performance unit,PMU)的多个性能计数器的计数值、以及相应的寄存器参数,采用预设的负载特征计算模型计算各CPU上所运行任务的实时的任务负载特征值。
当目标任务运行在某个CPU上时,***则可以调用该CPU对应预设的负载特征监控器获取该CPU上相应寄存器中的参数值,实时计算该目标任务的任务负载特征值。进而,***可以根据负载特征监控器计算的任务负载特征值标记目标任务当前运行状态下的任务特征标识,以确定目标任务与当前运行该任务的CPU所属算力等级是否匹配。例如,当目标任务的负载特征值变大或者变小时,相应的任务特征标识的值可以变大或变小,***则可以确定与变化后的任务特征标识相匹配的算力等级,进而动态地将目标任务调度到相应算力等级中较空闲的CPU上继续运行。
可以理解,上述预设的负载特征计算模型可以包括多个并且可以预设在模型库中。可以理解,适用于大核的负载特征监控器对应的模型库与适用于小核的负载特征监控器的模型库可以相同,也可以不同。通常在执行负载特征相关的逻辑计算时,大核负载特征监控器与小核负载特征监控器所选的负载特征计算模型是不一样的,在此不做限制。
可以理解,目前配置在各电子设备中的CPU微架构中,每个CPU可以配置一个PMU,而该PMU可以包括多个PMC,用于对CPU获取、执行或执行异常的指令数占比进行计数。具体将在下文详细描述,在此不做赘述。
可以理解,本申请提供的任务调度方法,所适用的电子设备可以包括但不限于上述服务器100、个人计算机(personal computer,PC)(包括膝上型计算机、台式计算机、平板计算机等)、手机、可穿戴设备、头戴式显示器、移动电子邮件设备、车机设备、便携式游戏机、便携式音乐播放器、阅读器设备、其中嵌入或耦接有多个处理器的电视机、或具有多个处理器的其他电子设备。可以理解,本申请提供的任务调度方法,所适用的电子设备也可以是具有各类异构处理器来提供计算平台的服务器等电子设备,用于实现该服务器等电子设备上的图像处理单元(Image Processing Unit,IPU)、深度学习处理器(Deep learningProcessing Unit,DPU)、神经网络处理器(Neural network Processing Unit,NPU)等。
作为示例,当执行上述任务调度方法的电子设备为服务器100时,适合在大核上运行的任务例如可以是对云端大数据的处理计算和分析任务,适合在小核上运行的任务例如可以是对云端大数据的页面请求任务。当执行上述任务调度方法的电子设备为PC时,适合在大核上运行的任务例如可以是Excel应用中基于预设的各类计算公式执行的数据计算任务等,适合在小核上运行的任务例如可以是Excel应用的数据导入及存储等任务。而当执行上述任务调度方法的电子设备为手机时,适合在大核上运行的任务例如可以是某各大型联机游戏的应用的数据处理任务;适合在小核上运行的任务例如可以是日历应用的日历数据更新任务。
为了方便描述,下面以继续服务器100为例,详细说明本申请实施例提供的任务调度方法的具体实现过程。
图3根据本申请实施例示出了一种服务器100的***架构示意图。
服务器操作***包括Unix、Linux、Windows Server和Netware等。本申请实施例以基于Linux的大数据服务器为例,示例性的介绍服务器100的操作***架构。
如图3所示,基于Linux的大数据服务器的操作***可以包括以下三个部分,即内核层、***服务与应用框架层以及应用服务层。
其中,内核层负责将所有以“用户模式”运行的应用程序连接到物理硬件,并允许服务器中的各进程使用进程间通信(IPC)彼此获取信息。内核层是操作***的核心,具有很多基本功能,例如负责管理***的进程、内存、设备驱动程序、文件和网络***,决定着***的性能和稳定性等。
在本申请实施例中,内核层包括任务特征计算模块、大小核调度器、负载特征监控器、以及监控器调用接口等。
其中,任务特征计算模块,用于接收大小核调度器发送过来的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用于驱动CPU1、CPU驱动2用于驱动CPU2、CPU驱动3用于驱动CPU3、…、CPU驱动n用于驱动CPUn。上述负载特征监控器则可以分别对应于监控CPU1、CPU2、CPU3、…CPUn上运行的任务负载特征。具体将在下文中详细描述,在此不做赘述。
监控器调用接口,用于配置或者调用各CPU工作电路上的负载特征监控器。可以理解,该调用接口可以包括基于MSR寄存器导出的多种功能接口,比如可以对负载特征监控器相应监控的CPU中的各MSR寄存器,定义相应的寄存器名称及参数等,以实现不同的功能。
参考下表1所示,对于任一CPU中的MSR寄存器,可以定义“MSR_PMU_BIAS_n”为读/写“第n个PMU Counter的系数”的功能接口,还可以定义“MSR_PMU_PARAM”为读/写“该任务对应的模型初始值/历史计算结果”的功能接口,以及定义“MSR_PMU_MODEL_ID”为“计算公式选择”的功能接口,其中的ID值可以代表将要选择的第几个模型公式。监控器调用接口所包括的其他功能接口可以参考下述表1中的示例,在此不做枚举。
表1
在另一些实施例中,该调用接口的各项功能也可以基于***寄存器实现,在此不做限制。
***服务与应用框架层可以包括MySQL数据库、大数据处理引擎、数学库(math库)等部分。
其中,MySQL数据库是一种关系型数据库管理***,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
大数据处理引擎,则用于对输入***的大量数据提供数据清洗以及数据加载、查询等服务。其中,大数据处理引擎例如可以包括Phoenix、Stinger、Presto等查询引擎、Apache Shark、Apache Flink等分布式场景处理引擎、Pig加载引擎以及分析引擎等。其中Apache Spark是一种用于大数据工作负载的分布式开源处理***,可以提供一个适用常见数据处理场景的统一引擎,例如批处理、流处理、交互式查询和机器学习等数据处理场景。
数学库(math库)含有大量高性能计算函数,为大数据的处理计算提供函数基础。例如,可以通过数学库提供的高性能计算函数实现机器学习、构建具有特定功能的AI算法等。
应用服务层可以包括一些预先定义的工具或服务等。例如,应用服务层可以包括网络爬虫、搜索引擎、数据分析服务以及应用调度策略服务等。
其中,网络爬虫用来在网络上读取数据存储在MYSQL数据库中。
搜索引擎可以根据一定的策略、运用特定的程序从互联网上采集信息,在对信息进行组织和处理后,可以为用户提供检索服务,并可以将检索的相关信息展示给用户。例如,搜索引擎可以实现爬虫数据下载、检索功能等。
数据分析服务是用来调用数学库里的数据进行数据分析和统计计算,一般需要大量计算。在某些时候,数据分析服务也会调用Apache Spark计算引擎中的相关数据进行数据分析和统计计算。
可以理解,上述图3所示的应用于大数据服务器等上的操作***,可以提供数据处理、数据计算以及数据分析等各方面的服务,因此,该操作***上可以根据用户需求运行各种类型的应用程序,所运行的应用程序也可以根据用户需求实现各种功能。因此,图3所示的应用于大数据服务器等的操作***,也可以称之为计算开放的操作***。
应用调度策略服务,用于根据***运行需要对***所运行的各应用程序的任务预设调度条件。例如,***为了保障一些***应用的快速响应,可以通过应用调度策略服务限定该***应用的各个任务只运行在小核上。相应地,任务特征计算模块则可以综合应用调度策略服务预设的上述任务调度策略,对相应任务不再调度到大核上运行。
可以理解,在一些实施例中Linux操作***在运行应用程序的过程中可以将自身划分为两部分,一部分为核心软件,即是kernel,也称作内核空间,另一部分为普通应用程序,这部分称为用户空间。区分用户空间和内核空间的目的是为确保***安全。
当应用程序进程执行***调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(RING0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。
可以理解,每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(RING3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。
可以理解,在应用了Linux操作***的服务器100上,处理器总处于以下状态中的一种:①内核态,运行于进程上下文,其中内核代表进程运行于内核空间;②内核态,运行于中断上下文;③用户态,运行于用户空间。
因此,从用户空间到内核空间可以有两种触发手段:第一,***调用。即用户空间的应用程序,可以通过***调用,进入内核空间。此时用户空间的进程需要传递很多变量、以及参数的值给内核。内核运行时也需要保存用户进程的一些寄存器值、变量等。因此,上述“进程上下文”,即用户进程传递给内核的参数以及内核运行时保存的变量、寄存器值以及运行时刻的环境等。第二,中断。即硬件可以通过触发信号,使内核调用中断处理程序,进入内核空间。例如网卡发送一个数据包或硬盘驱动器提供一次IO请求等。在此过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。因此,上述“中断上下文”,即硬件传递的参数和内核需要保存的当前被打断执行的进程环境等。
可以理解,服务器100在实施本申请实施例提供的任务调度方法的过程中,服务器100的***监控到实时的任务负载特征值满足触发中断的条件时,***触发中断对应触发的CPU上下文切换,也可以遵循上述“进程上下文”和/或“中断上下文”的处理机制,在此不做赘述。
基于上述图3所示的***架构,下面结合上述***中部分结构之间的交互流程示意图,详细介绍本申请实施例提供的任务调度方法的具体实现过程。为了便于描述清楚,对图4交互流程中各步骤涉及的执行主体进行编号,即任务特征计算模块200、大小核调度器300、以及负载特征监控器400。
图4根据本申请实施例示出了一种任务调度方法的实施过程中图3所示***部分结构之间的交互流程示意图。
如图4所示,该流程具体包括以下步骤:
401:大小核调度器300获取各CPU的硬件配置信息,计算确定各CPU对应的算力等级并添加的等级标识。
示例性地,在服务器100的***启动时,大小核调度器300可以从基本输入输出***(Basic Input Output System,BIOS)获取各CPU的硬件配置信息,进而可以基于预设的计算规则来计算各CPU的算力特征值。该计算规则例如可以参考如下计算关系式:
CPU的算力特征值=频率*微架构算力。
其中,上述计算CPU算力特征值的频率可以是CPU的核心频率,即主频;也可以是CPU的工作频率。另外,上述计算的CPU算力特征值在一定程度上也可以理解为计算CPU的能效,在此不做限制。可以理解,大小核调度器300计算确定的各CPU对应的算力特征值的大小,可以用于确定相应CPU的算力等级,进而为各CPU添加等级标识。
例如,***中可以预设2种算力等级以及相对应的2种等级标识,例如算力特征值在[512,1024]范围内的CPU属于同一算力等级,该类CPU上可以添加大核等级标识。算力特征值在[0,512)范围内的CPU属于同一算力等级,该类CPU上可以添加小核等级标识。在一些实施例中,***中也可以预设3种算力等级以及相应的3种等级标识,例如算力特征值在(512,1024]范围内的CPU对应添加大核等级标识,算力特征值在[0,512)范围内的CPU对应添加小核等级标识,而算力特征值为512的CPU则可以对应添加普通核等级标识,在此不做限制。
在另一些实施例中,也可以采用其他方式对不同算力等级的CPU添加等级标识。例如,对属于大核等级的CPU可以标记为“1”,对属于小核等级的CPU可以标记为“-1”,以及对属于普通核等级的CPU可以标记为“0”等,在此不做限制。
402:大小核调度器300向任务特征计算模块200发送对CPU的算力等级划分结果。其中,该算力等级划分结果至少包括:各CPU的识别信息(identification,ID)、各CPU上所添加的等级标识以及各等级标识对应标记的算力特征值范围。
示例性地,大小核调度器300在执行完上述步骤401对各CPU确定算力等级并添加等级标识后,可以将各CPU的识别信息以及对各CPU添加的等级标识发送给任务特征计算模块200。进而,任务特征计算模块200可以基于CPU的识别信息识别各CPU,并可以继续执行下述步骤403,确定待处理的任务特征标识与接收到的CPU等级标识之间的对应关系。
403:任务特征计算模块200根据接收到的算力等级划分结果,设定任务特征标识与CPU等级标识之间的对应关系、以及生成任务特征标识的规则。其中,该对应关系可以同步给大小核调度器300,以用于对初始的目标任务进行调度。
示例性地,任务特征计算模块200基于接收到的各CPU等级标识对应标记的算力特征值范围,可以设定相应的任务特征标识与CPU等级标识对应。该任务特征标识用于标记与相应算力等级CPU的算力特征值范围相匹配的任务负载特征值范围。例如,在上述步骤401中确定大核等级标识对应的算力特征值范围为(512,1024],则任务特征计算模块200可以预设与该大核等级标识相对应的任务特征标识,例如A类任务,并设定该A类任务对应的任务负载特征值的范围也为(512,1024]。同样地,任务特征计算模块200可以预设与上述小核等级标识相对应的B类任务,并预设该B类任务对应的任务负载特征值的范围为[0,512);以及预设与上述普通核等级标识相对应的C类任务,并预设该C类任务对应的任务负载特征值为512。
在另一些实施例中,任务特征计算模块200预设的任务特征标识以及相应的任务负载特征值范围,也可以是不同于对应的CPU等级标识所标记的算力特征范围的其他区间值。例如,任务特征计算模块200对于上述A类任务可以对应预设任务负载特征值范围为(50,100],对于B类任务可以对应预设任务负载特征值范围为[0,50),对于C类任务可以对应预设任务负载特征值为50,在此不做限制。
可以理解,任务特征计算模块200在设定各任务特征标识对应的任务负载特征值范围的过程中,还可以设定生成任务特征标识的规则。该规则可以是基于任务负载特征值所属的范围生成相应的任务特征标识;也可以是基于任务负载特征值以及***的应用调度策略服务所提供的任务调度策略,生成相应的任务特征标识,在此不做限制。其中,基于任务负载特征值以及***的应用调度策略服务所提供的任务调度策略,生成相应的任务特征标识,例如可以是优先考虑任务调度策略所限定的任务对相应算力等级CPU之间的对应关系生成相应的任务特征标识。
在另一些实施例中,也可以采用其他方式对各任务生成特征标识。例如,确定为大核任务可以标记为“1”,确定为小核任务的可以标记为“-1”等,在此不做限制。
可以理解,任务特征标识为大核任务对应CPU算力等级中的大核,任务特征标识为小核任务对应CPU算力等级中的小核。
在一些实施例中,任务负载特征值和生成的任务特征标识记录在任务结构体中。任务结构体包括:任务负载特征值、任务特征标识以及任务其他相关参数,在此不做限制。
404:大小核调度器300获取目标任务以及该任务的初始任务负载特征值。
示例性地,***运行过程中,各类任务均可以通过大小核调度器300进行调度分配。被调度的目标任务,既可以是某个软件或应用程序对应的进程上执行的任务,也可以是相应软件或应用程序对应的多个线程上分别执行的任务,在此不做限制。大小核调度器300获取目标任务时,可以根据该任务的初始任务参数或相关任务信息,确定该任务对应的任务负载特征值。
可以理解,上述初始任务负载特征值可以是初始负载特征值,也可以是应用调度策略服务根据***运行需要对相应任务设定的负载特征值,在另一些实施例中,应用调度策略服务也可以为目标任务添加任务调度标记,以代替上述初始任务负载特征值对该任务进行调度等,在此不做限制。
可以理解,上述应用任务调度标记例如可以是将某一任务指定给某类CPU或者某个CPU运行的标记。例如,一些任务经过应用调度策略服务设定相应的调度标记后,任务特征计算模块200基于该调度标记则可以确定该任务被指定在哪类或者哪个CPU上执行,而不再对该任务基于负载特征值进行动态调度。相应地,负载特征监控器400也可以不再对该任务监控负载特征值的变化,大小核调度器300也可以在该任务初始分配时将该任务分配给指定的CPU执行,而不再对该任务进行动态调度。
例如,应用调度策略服务设定的任务调度策略为执行某一任务在大核上运行。然而,大小核调度器300或者任务特征计算模块200基于该任务初始时刻或者运行过程中的负载特征值,确定该任务实际更加适合在小核上运行,但是因为应用调度策略服务设定的任务调度策略优先原则,该任务将继续在大核上运行,而不会被调度到小核上。
405:大小核调度器300向任务特征计算模块200发送目标任务的任务负载特征值。
示例性地,大小核调度器300可以向任务特征计算模块200发送目标任务对应的任务结构体,该任务结构体中可以包括该目标任务对应的任务负载特征值。任务特征计算模块200则可以基于该任务负载特征值确定相应的任务特征标识。并且,该任务结构体也可以被任务特征计算模块200编辑。例如任务特征计算模块200可以将基于任务负载特征值确定的任务特征标识写入该任务结构体等。具体将在下文详细描述,在此不做赘述。在另一些实施例中,大小核调度器300也可以通过函数调用等方式将获取到的目标任务所对应的任务负载特征值发送给任务特征计算模块200在此不做限制。具体确定任务特征标识的过程,将在下文相应步骤中详细介绍,在此不做赘述。
可以理解,上述任务负载特征值可以是目标任务的初始化负载特征值,也可以是***的应用调度策略服务为该目标任务设定的任务负载特征值,在此不做限制。
可以理解,在一些实施例中,任务特征计算模块200基于大小核调度器300发送的任务结构体获取目标任务的任务负载特征值,在此不做限制。
406:任务特征计算模块200接收大小核调度器300发来的任务负载特征值,并基于生成任务特征标识的规则生成目标任务对应的任务特征标识。
示例性地,任务特征计算模块200可以基于上述步骤403中设定的生成任务特征标识的规则,对接收到的任务负载特征值生成相应的任务特征标识。可以理解,如果生成任务特征标识的规则预设了应用调度策略服务提供的任务调度策略优先,则任务特征计算模块200在生成任务特征标识时,还需要综合应用调度策略服务对该目标任务设定的任务调度策略。具体生成任务特征标识的过程可以参考上述步骤403中相关描述,在此不做赘述。
例如,目标任务的任务负载特征值在[0,512)范围内,则任务特征计算模块200可以对该任务添加B类任务特征标识。若***的应用调度策略服务设定了该目标任务需由大核执行,则任务特征计算模块200可以对该任务添加A类任务特征标识。如此,任务特征计算模块200则可以根据该任务调度标记,生成带有该标记的任务特征标识返给大小核调度器300。
在一些实施例中,生成的任务特征标识记录在任务的任务结构体中,在此不做限制。
在另一些实施例中,大小核调度器300在识别到目标任务上的任务调度标记时,也可以直接将目标任务调度到执行的CPU上运行,而不需要通过任务特征计算模块200确定相应的任务特征标识,在此不做限制。
407:任务特征计算模块200将生成的任务特征标识发送给大小核调度器300。
示例性地,任务特征计算模块200可以将生成的任务特征标识添加到相应的任务结构体中,并将该任务结构体发送给大小核调度器300。进而,大小核调度器300便可以从接收到任务结构体中读取目标任务对应的任务特征标识,进行任务调度。在另一些实施例中,任务特征计算模块200也可以通过函数调用等方式将所生成的任务特征标识传递给大小核调度器300,在此不做限制。
408:大小核调度器300根据接收到的任务特征标识,选定对应算力等级的第一目标CPU。
示例性地,大小核调度器300基于接收到的任务特征计算模块200发来的任务特征标识,可以根据任务特征计算模块200执行上述步骤403后同步的对应关系,匹配与该任务特征标识相对应的CPU等级标识对应标记的一类CPU,即算力匹配的一类CPU。进而,大小核调度器300可以并从匹配到的该类CPU中选择出空闲的CPU作为任务调度的第一目标CPU。其中,空闲的CPU例如可以是任务队列空闲,或者当前未在执行任务的CPU,在此不做限制。
例如,大小核调度器300接收到的任务特征标识为A类任务,则大小核调度器300可以基于A类任务与大核等级标识之间的对应关系,匹配大核等级标识所标记的各个CPU。进而,大小核调度器300可以在匹配到的大核算力等级下的各CPU中,选择出当前空闲的第一目标CPU。
409:大小核调度器300将目标任务调度到第一目标CPU的运行列队中,等待运行。
示例性地,大小核调度器300基于上述步骤408中选定的第一目标CPU,将目标任务调度到该第一目标CPU的运行列队中,等待运行。
410:大小核调度器300向任务特征计算模块200发送运行目标任务的第一目标CPU的识别信息。
示例性地,大小核调度器300确定目标任务在第一目标CPU上运行时,可以将选定的该第一目标CPU的识别信息写入任务结构体中,并发送给任务特征计算模块200。任务特征计算模块200则可以基于接收到的任务结构体确定目标任务当前被调度到的第一目标CPU。上述识别信息例如可以是第一目标CPU的设备(device)ID等,在此不做限制。
411:任务特征计算模块200基于第一目标CPU的识别信息,通过监控器调用接口为该CPU配置负载特征监控器400。
示例性地,任务特征计算模块200基于大小核调度器300发送第一目标CPU的识别标识,选择相应的CPU负载特征监控器400,并且调用该监控器调用接口。本申请的监控器调用接口可以实现负载特征计算模型的选择、模型设置以及接受中断通知。任务特征计算模块200与负载特征监控器400之间的通讯通过监控器调用接口实现。
412:任务特征计算模块200为运行在第一目标CPU上的目标任务匹配对应的负载特征计算模型、并设置相关模型参数。
示例性地,任务特征计算模块200可以基于运行在第一目标CPU上的目标任务的运行场景,为该任务匹配适合的负载特征计算模型。具体地,任务特征计算模块200选择的是表1中定义的寄存器MSR_PMU_MODEL_ID的值,寄存器MSR_PMU_MODEL_ID的值代表着选择第几个负载特征计算模型公式,寄存器MSR_PMU_MODEL_ID基于确定的负载特征计算模型决定所需要的计数器个数。任务特征计算模块200确定匹配的负载特征计算模型,基于任务的初始任务负载特征值或者该任务的历史任务负载特征值,对该模型设定初始计算参数,该初始计算参数例如可以是该模型中各变量的权重系数等。
可以理解,负载特征计算模型的选择可以基于相应任务的运行场景和任务特征标识。在一些实施例中,以服务器100为例,任务特征计算模块200可以依据服务器100运行何种应用程序以及执行该应用程序的何种任务等,为相应任务选择合适的负载特征计算模型。以PC为例,任务特征计算模块200可以根据PC上运行的软件程序以及执行该软件的任务对应的任务特征标识等,选择适合该任务的负载特征计算模型。不同电子设备上执行的相同任务,对应选择的负载特征计算模型可以不同,在此不做限制。
可以理解,在另一些实施例中,***也可以根据各负载特征计算模型对应的模型参数,在任务特征计算模块初始化时,为第一目标CPU选择默认的负载特征计算模型,并完成对第一目标CPU对应的各个MSR寄存器相关参数的设置。进而,当第一目标CPU上运行的任务切换时,例如从原本运行的其他任务切换到目标任务时,只需要设置寄存器MSR_PMU_MODEL_RESET,即可触发负载特征监控器400采用相应的负载特征计算模型重新计算负载特征值。
具体地,上述负载特征计算模型的选择与执行目标任务的第一目标CPU相应执行的各项任务指令的类型以及执行情况统计结果有关。具体选择负载特征计算模型以及设置相关模型参数的过程,将在下文结合相应附图详细说明,在此不做赘述。
413:任务特征计算模块200向负载特征监控器400发送匹配到的负载特征计算模型调用参数以及相关模型参数。
示例性地,任务特征计算模块200可以通过监控器调用接口向所调用的负载特征监控器400,发送匹配到的负载特征计算模型调用参数以及所设定的相关模型参数。
另外,任务特征计算模块200在向负载特征监控器400发送匹配到的负载特征计算模型调用参数以及相关模型参数时,还可以通知大小核调度器300开始运行任务。大小核调度器300则可以控制所调度的第一目标CPU从任务队列中选择目标任务开始运行。
可以理解,第一目标CPU在运行目标任务的过程中,可以根据任务队列进行上下文切换,以选定目标任务开始运行,本申请对此不做赘述。
414:负载特征监控器400基于接收到的调用参数以及相关模型参数,调用相应的负载特征计算模型并完成相关模型参数的配置。
示例性地,负载特征监控器400可以根据接收到的任务特征计算模块200发来的负载特征计算模型的调用参数、以及相关模型参数,从预设的多个负载特征计算模型中确定与该调用参数对应的负载特征计算模型进行调用,并对该模型中的相关参数基于接收到的相关模型参数进行配置。该配置过程例如可以包括:配置相关计数器的个数、对各计数器设置相应定义以及相应参数值等,在此不做限制。
415:负载特征监控器400监控目标任务运行过程中的任务负载特征值。
示例性地,目标任务在第一目标CPU上开始运行后,负载特征监控器400可以读取第一目标CPU对应的寄存器逻辑单元的计数值等数据,组合逻辑电路自动把读取的数据输入到逻辑计算单元里,根据配置好的负载特征计算模型自动计算。
其中,负载特征监控器400利用已配置好模型参数的负载特征计算模型,可以按照表1定义的寄存器MSR_PMU_MODEL_INTERVAL内对应于该模型设置的计算周期进行计算,并将计算的当前任务负载特征值保存在表1中定义的寄存器MSR_PMU_MODEL_STATUS中。具体负载特征计算模型过程,将在下文结合相应附图详细说明,在此不做赘述。
416:负载特征监控器400判断实时的任务负载特征值是否超过负载特征阈值。若判断结果为是,表明该目标任务可能需要调度,则执行下述步骤416发起中断;若判断结果为否,表明该目标任务无需调度,可以继续在当前运行的第一目标CPU上继续运行。
示例性地,上述负载特征阈值例如可以是上述步骤414中基于模型参数配置的相应寄存器中的负载特征阈值,或者是上述步骤411选定负载特征计算模型对应设置的模型参数中所包括的负载特征阈值。如果计算得到的任务负载特征值超出该阈值,则表明该目标任务可能需要调度,需要触发中断以进行进一步的确认。相反地,如果计算得到的任务负载特征值未超出该阈值,则目标任务继续在第一目标CPU上运行。
参考上述表1,例如,如果目标任务当前运行的第一目标CPU为小核,任务特征计算模块200在执行上述步骤411时,则可以设置上述表1定义的寄存器“MSR_PMU_MODEL_THRESHOLD_H”对应的上界阈值。进而,当负载特征监控器400监控得到的任务负载特征值大于该上界阈值时,可以判断该目标任务可能更适合在大核上运行,可能需要执行下述步骤416触发中断,将目标任务调度到大核上继续运行。
又例如,如果目标任务当前运行的第一目标CPU为大核,任务特征计算模块200在执行上述步骤411时,则可以设置上述表1定义的寄存器“MSR_PMU_MODEL_THRESHOLD_L”对应的下界阈值。进而,当负载特征监控器400监控得到的任务负载特征值小于该下界阈值时,可以判断该目标任务可能更适合在小核上运行,可能需要触发中断将目标任务调度至小核上继续运行。具体负载特征监控器400基于负载特征计算模型计算目标任务对应的实时负载特征值的过程,将在下文详细说明,在此不做赘述。
417:负载特征监控器400向任务特征计算模块200发送中断通知以及目标任务当前的任务负载特征值。
示例性地,负载特征监控器400可以向任务特征计算模块200发送中断通知,以发起中断。并且,负载特征监控器400在向任务特征计算模块200发送中断通知时,可以将计算得到的目标任务当前的任务负载特征值也一并发送给任务特征计算模块200。具体负载特征监控器400发起中断的过程将在下文详细说明,在此不做赘述。
在另一些实施例中,如果上述负载特征监控器400通过外部专属芯片以及一些固件实现相应功能,则该负载特征监控器400可以通过调用中断函数来发起中断,在此不做限制。
418:任务特征计算模块200响应中断,获取目标任务当前的任务负载特征值并生成对应的任务特征标识。
示例性地,任务特征计算模块200接收到负载特征监控器400发来的中断通知,可以响应于该中断,通过监控器调用接口读取寄存器MSR_PMU_MODEL_STATUS中记录的当前的任务负载特征值,结合该目标任务对应的任务调度策略,生成该目标任务当前的任务特征标识。
419:任务特征计算模块200基于生成的任务特征标识,判断当前执行该目标任务的第一目标CPU对应的等级标识与该任务特征标识是否匹配。若判断结果为是,即匹配时,则不需要对目标任务进行调度,可以返回上述步骤412,保持对该目标任务的任务负载特征值的监控。若判断结果为否,即不匹配时,则需要对目标任务进行调度,可以继续下述步骤420,向大小核调度器300发送调度请求以及所生成的任务特征标识。
示例性地,任务特征计算模块200基于生成的任务特征标识,可以基于自身存储的任务特征标识与CPU等级标识之间的对应关系,确定目标任务当前运行的第一目标CPU所提供的算力特征值是否与任务负载特征值匹配,进而确定是否需要对目标任务进行调度。如果需要,则任务特征计算模块200可以执行下述步骤420,生成调度请求以及任务特征标识,并发送给大小核调度器300。
如果任务不需要调度,任务特征计算模块200可以进一步判断不需要调度的原因。例如在一些实施例中,任务不需要调度的原因可能是任务运行的过程中,用户通过操作***管理界面更改任务调度策略。例如,任务在小核上运行,经过任务特征计算模块200进行判断任务需要调度到大核上运行,但是用户更改应任务调度策略限定任务在小核上运行,此时任务就不需要调动,继续在小核上运行。在另一些实施例中,任务不需要调度的原因可能是在任务特征计算模块200设置负载特征计算模型的对应的预设阈值时,阈值设置过低,此时只需要重新设置一个合适的阈值即可,不需要调度。在另一些实施例中,任务不需要调度的原因还可能是应用调度策略服务设置刚开始需要负载特征监控器400对任务负载特征值进行监测,经过周期监测后,应用调度策略服务指示关闭对任务负载特征值的监测,此时任务也不需要调度。在此不做限制。
在另一些实施例中,任务特征计算模块200可以将基于目标任务当前的任务负载特征生成的任务特征标识,发送给大小核调度器300,以供大小核调度器300判断是否需要进行任务调度。
420:任务特征计算模块200向大小核调度器300发送对目标任务的调度请求以及生成的任务特征标识。
示例性地,基于上述步骤419的判断后,任务特征计算模块200可以向大小核调度器300发送对目标任务的调度请求以及对应目标任务更新后的任务结构体,该任务结构体中可以包括上述步骤418中新生成的任务特征标识。
在一些实施例中,任务特征计算模块200也可以通过函数调用等方式将上述调度请求、以及新生成的任务特征标识发送给大小核调度器300,在此不做限制。
421:大小核调度器300响应调度请求,根据接收到的任务特征标识选定对应算力等级的第二目标CPU,并将任务调度至第二目标CPU。
示例性地,大小核调度器300接受到任务特征计算模块200发送过来的调度请求以及任务特征标识后,匹配与该任务特征标识相对应的CPU等级标识对应标记的一类CPU,即算力匹配的一类CPU。进而,大小核调度器300可以并从匹配到的该类CPU中选择出空闲的CPU作为任务调度的第二目标CPU。其中,空闲的CPU例如可以是任务队列空闲,或者当前未在执行任务的CPU,在此不做限制。
例如,大小核调度器300接收到的任务特征标识为B类任务,则大小核调度器300可以基于B类任务与大核等级标识之间的对应关系,匹配大核等级标识所标记的各个CPU。进而,大小核调度器300可以在匹配到的大核算力等级下的各CPU中,选择出空闲的第二目标CPU。并将任务调度至第二目标CPU。具体调度实施步骤在另一流程图中展开说明,在此将不做赘述。
可以理解,在另一些实施例中,大小核调度器300也可以仅接收到任务特征计算模块200发来的任务特征标识,然后基于接收到的任务特征标识判断是否需要对目标任务进行调度。进而,大小核调度器300可以在需要对目标任务进行调度时,根据该任务特征标识选定对应算力等级的第二目标CPU并完成调度。
上述步骤421行完成后,服务器100的***可以重复上述步骤411至414,调用第二目标CPU的负载特征监控器,并基于目标任务信息为该负载特征监控器选定所采用的负载特征计算模型、以及设置相关模型参数等。具体可以参考上述步骤411至414中相关描述,在此不做赘述。
完成第二目标CPU对应的负载特征监控器上的负载特征计算模型选择、以及相关模型参数的配置后,该负载特征监控器则可以继续监控目标任务在第二目标CPU上执行的任务负载特征值。
可以理解,基于上述步骤401至421的交互过程,负载特征监控器400可以不断监控并计算任务负载特征值。并且,当该负载特征监控器400发现当前任务负载特征值超出相应阈值时,则可以触发中断并通知任务特征计算模块200判断是否需要对任务进行调度。不需要调度时,经过重置负载特征监控器400后继续在当前CPU上继续运行,如果需要调度,则通知大小核调度器300调度任务,从而实现了任务实时大小核迁移,保证了任务的实时响应速度。并且,各CPU对应的负载特征监控器400可以预设多个可选的负载特征计算模型,提供监控器调用接口支持负载特征计算模型选择与参数配置以及中断触发条件配置,因此本申请的任务调度方法适合多种场景。
如前所述,本申请实施例提供的任务调度方法,不仅可以适用于服务器100,还可以适用于手机、PC等电子设备上。本申请实施例提供的任务调度方法,既能保证任务的实时响应速度,又能够适应各类电子设备上更多任务调度场景,增加适用场景的多样性。
下面对上述步骤415涉及的基于完成参数配置的负载特征计算模型计算任务负载特征值的过程,进行详细描述。
可以理解,上述服务器100的***上预设的负载特征计算模型可以有多个,其中一个负载特征计算模型对应采用的任务负载特征计算公式,例如可以是下述公式(1):
speedup=w0+w1*A+w2*B+w3*C+w4*D+w5*E+w6*F+w7*G (1)
其中,w1至w7等参数表示下表2中“index”字段下的A、B、…、G等数据项的权重系数,w0对应的是表1中定义的寄存器MSR_PMU_PARAM的值,w0至w7等参数的取值可以参考下表2中的“value”字段下的相应数值。A、B、…、G等对应代表的数据项含义,可以参考下述表2中“Description”字段向的相应描述。例如,A代表“指令获取因为访存时延导致阻塞的占比”等,在此不做枚举。
表2
图5根据本申请实施例示出了一种负载特征监控器监控任务负载特征值的工作原理示意图。下面结合本申请的实施过程说明本申请实施过程中负载特征监控器中各寄存器的工作内容。
如图5所示,负载特征监控器计算任务负载特征值所基于的负载特征计算模型,可以依据图5所示的模型计算逻辑单元对应的寄存器MSR_PMU_MODEL_ID的值来确定,相应模型计算逻辑单元计算任务负载特征值所基于的PMU计数器的数量可以由寄存器MSR_PMU_MODEL_ID的值来确定。
例如,某个任务在大小核调度器300匹配的CPU运行时,CPU上的负载特征监控器400可以根据任务特征计算模块200选择的负载特征计算模型,按照表1中定义的寄存器MSR_PMU_MODEL_INTERVAL设置的计算周期进行计算。例如,采用上述负载特征计算模型对应的公式(1)计算负载特征值。然后,负载特征监控器400可以将计算结果与采用的负载特征计算模型对应的一个预设的负载特征阈值进行比较,例如与上述表1中寄存器“MSR_PMU_MODEL_THRESHOLD_H”中对应设定的上界阈值、或者“MSR_PMU_MODEL_THRESHOLD_L”对应设定的下界阈值进行比较。
当上述比较的结果满足中断触发条件时,例如负载特征监控器400计算得到的负载特征值超过了上述上界阈值、或者低于上述下界阈值,则可以触发硬件中断。此时,负载特征监控器400可以将中断通知通过监控器调用接口发送给任务特征计算模块200,任务特征计算模块200则可以读取存储在表1中寄存器“MSR_PMU_MODEL_STATUS”中存储的任务负载特征值,生成任务特征标识。进而,任务特征计算模块200则可以基于生成的任务特征标识判断目标任务是否需要进行调度。
如果任务特征计算模块200确定目标任务需要调度,则可以通知大小核调度器300对目标任务进行调度。此时,大小核调度器300可以根据上述任务特征标识,为目标任务的当前任务负载特征值匹配算力等级合适的CPU算力等级,并从中选择出空闲的第二目标CPU进行任务调度。在此过程中,任务特征计算模块200可以将目标任务的任务特征标识写入第二目标CPU对应的寄存器MSR_PMU_PARAM中,然后通知任务特征计算模块200对第二目标CPU对应的负载特征监控器400选择适合的负载特征计算模型。最后,负载特征监控器400可以通过设置表1中寄存器MSR_PMU_MODEL_RESET的值使得该负载特征监控器400上的数据重置,例如可以清除历史监控任务中获取的PMC数据,以便能够重新获取计数数据监控目标任务在当前第二目标CPU上执行对应的任务负载特征值。
如果任务特征计算模块200确定目标任务不需要调度,则重置负载特征计算模型并恢复目标任务的运行。具体调度过程已在上述步骤421说明,在此不做赘述。
下面结合图6详细说明负载特征监控器触发中断的工作流程。
图6根据本申请实施例示出了一种负载特征监控器触发中断的实施流程示意图。可以理解,图6所示流程的各步骤执行主体可以均为负载特征监控器400,以下各步骤的描述中将不再重复描述各步骤的执行主体。
如图6所示,该流程包括以下步骤:
601:利用配置好的负载特征计算模型计算当前的任务负载特征值。
示例性地,负载特征监控器400可以读取各个计数器的计数值等数据,并把读取的数据输入到模型计算逻辑单元里,根据配置好的负载特征计算模型计算。负载特征计算模型按照寄存器MSR_PMU_MODEL_INTERVAL设置的计算周期进行计算,当负载特征监控器触发中断时,当前任务负载特征值保存在寄存器MSR_PMU_MODEL_STATUS中。
602:判断计算得出的任务负载特征值是否超过预设的负载阈值。如果判断结果为是,即任务负载特征值未超过负载阈值时,则可以返回上述步骤601继续计算下一监控时刻的任务负载特征值;如果判断结果为否,即任务负载特征值超过负载特征阈值时,则继续执行下述步骤603,触发中断。
示例性地,负载特征监控器400所采用的负载特征计算模型可以对应预设适当大小的负载阈值,该阈值例如可以是上述表1定义的寄存器“MSR_PMU_MODEL_THRESHOLD_H”对应的上界阈值等。具体判断过程可以参考上述步骤416中相关描述,在此不做赘述。
603:向任务特征计算模块200发送中断通知。
具体触发中断或者说发起中断的过程,可以参考上述步骤416至417中相关描述,在此不做赘述。可以理解,负载特征监控器400发送该中断通知的同时,可以将读取到的寄存器MSR_PMU_MODEL_INTERVAL中保存的任务负载特征值也发送给任务特征计算模块200。具体过程也可以参考上述步骤416中相关描述,在此不做赘述。
下面结合7图详细说明任务特征计算模块响应中断发起任务调度的工作流程。
图7根据本申请实施例示出了一种任务特征计算模块响应中断发起任务调度的工作流程示意图。可以理解,图7所示流程的各步骤执行主体可以均为任务特征计算模块200,为了简化描述,在介绍下列各步骤时将不再重复描述各步骤的执行主体。
如图7所示,该流程包括以下步骤:
701:接收中断通知。
702:访问相应负载特征监控器的寄存器,获取当前的任务负载特征值。
示例性地,任务特征计算模块200可以访问相应负载特征监控器的寄存器,读取寄存器MSR_PMU_MODEL_STATUS中存储的当前任务负载特征值。其中,该任务负载特征值可以是负载特征监控器基于当前采用的负载特征计算模型计算得到的任务负载特征值。在一些实施例中,任务特征计算模块200在获取当前任务负载特征值时,可以通过清零寄存器MSR_PMU_MODEL_ENABLE的相关数值,暂停对任务负载特征值的计算。
具体任务特征计算模块200获取当前任务负载特征值的过程,可以参考上述步骤418中相关描述,在此不做赘述。
703:基于获取的任务负载特征值结合***的任务调度策略,为当前任务生成任务特征标识。
具体基于任务负载特征值和任务调度策略生成任务特征标识的过程,可以参考上述步骤403和步骤418中相关描述,在此不做赘述。
704:判断所生成的任务特征标识与目标任务当前运行的CPU上的等级标识是否匹配。若判断结果为是,即匹配时,则不需要对目标任务进行调度,可以执行下述步骤706,重新配置模型参数。若判断结果为否,即不匹配时,则需要对目标任务进行调度,可以继续下述步骤705,向大小核调度器发送调度请求以及所生成的任务特征标识。具体任务特征计算模块200判断任务特征标识与CPU等级标识是否匹配的过程,可以参考上述步骤419中相关描述,在此不做赘述。
705:发送任务调度请求。
示例性地,任务特征计算模块200基于705的判断结果,向大小核调度器300发送任务调度请求,以及任务特征标识。具体的过程可以参考上述步骤420中相关描述,在此不做赘述。
706:重新配置模型参数。
可以理解,大小核调度器300收到任务特征计算模块发起的任务调度请求后,会根据目标任务的任务特征标识与存储的各CPU对应的大小核等级标识、以及空闲程度进行选核。大小核调度器300选择等级标识匹配的目标CPU后,会将任务从当前CPU调度到目标CPU,下面结合图8详细说明大小核调度器执行任务调度的工作流程。
图8根据本申请实施例示出了一种大小核调度器执行任务调度的工作流程示意图。可以理解,图8所示流程的各步骤执行主体可以均为大小核调度器300,为了简化描述,在介绍下列各步骤时将不再重复描述各步骤的执行主体。
具体地,如图8所示,该流程包括以下步骤:
801:CPU1从任务队列中选择下一个任务等待运行。
示例性地,CPU1从任务队列中选择下一个任务,并可以标记为准备运行,以等待运行。在另一些实施例中,如果CPU1的运行列队中没有任务需要运行,则将CPU1标记为空闲状态,在此不做限制。
802:从CPU1的任务队列中移除被调度的目标任务,并更新CPU1运行列队的相关信息。
示例性地,将待调度的目标任务从CPU1中移除,并更新移除任务后CPU1空闲程度信息。
803:将目标任务调度到CPU3的任务队列中,并更新CPU3运行列队的相关信息。
示例性地,大小核调度器300将目标任务调度到CPU3中,CPU3则可以更新调入该目标任务后的任务队列相关信息,具体的调度过程可以参考上述步骤411至421中相关描述,在此不做赘述。
804:CPU1开始运行下一个任务。
示例性地,CPU1开始运行上述步骤801选择的任务开始运行。
805:CPU3在任务队列中选择目标任务开始运行。
下面结合另一流程图说明对负载特征监控器400的设置工作流程
图9根据本申请实施例示出了一种任务调度后设置负载特征监控器的实施流程图。图9所示流程的各步骤执行主体可以均为负载特征监控器400,为了简化描述,在介绍下列各步骤时将不再重复描述各步骤的执行主体。
如图9所示,该流程包括以下步骤:
901:接收调用请求,并获取对应新任务的负载特征计算模型调用参数及相关模型参数。
示例性地,接收调用请求,并获取对应的新任务的负载特征计算模型调用参数及相关模型参数。具体的响应过程和调用过程,可以参考上述步骤413至414中相关描述,在此不做赘述。
902:调用对应新任务的负载特征计算模型,并完成相关模型参数的配置。
示例性地,根据步骤901获取的对应的新任务的负载特征计算模型调用参数及相关模型参数,从预设的多个负载特征计算模型中确定与该调用参数对应的负载特征计算模型进行调用,并完成相关模型参数的配置。具体的模型调用流程参考上述步骤414中相关描述,在此不做赘述。
903:对所监控的CPU上运行的新任务,基于完成参数配置的负载特征计算模块,监控实时计算得到的任务负载特征值。
示例性地,负载特征监控器400执行上述步骤901-903后,负载特征监控器400对新任务进行监控计算,按照计算周期对新任务进行任务负载特征值计算。具体计算过程可以参考上述步骤415中相关描述,在此不做赘述。
下面结合另一实施流程示意图,介绍本申请实施例提供的任务调度方法的另一种实现过程。
图10根据本申请实施例示出了另一种任务调度方法的实施流程图。
可以理解,图10所示流程的各步骤执行主体可以为服务器100等电子设备。为避免重复,下文具体步骤描述中将不再描述各步骤的执行主体。在另一些实施例中,图10所示各步骤的执行主体,也可以是上述PC或者手机等电子设备,在此不做限制。
具体地,如图10所示,该流程包括以下步骤:
1001:根据目标任务对应的任务特征标识选择目标CPU。
示例性地,服务器100的***中预先给CPU添加了等级标识,并且预设的任务特征标识与CPU等级标识之间的对应关系,进而可以根据目标任务对应的任务特征标识选择等级标识与任务特征标识对应的目标CPU。具体对应关系和匹配过程分别可以参考上述步骤401至408中相关描述,在此不做赘述。
1002:将目标任务调度放到目标CPU的任务队列中准备运行。
示例性地,服务器100在运行目标任务时,根据任务特征标识选择等级标识对应的目标CPU,并将任务调度到目标CPU的中准备运行。具体准备运行的过程可以参考上述步骤409中相关描述,在此不做赘述。
1003:为目标任务设置负载特征监控器,选择该任务对应的特征计算模型,并设置该模型的参数。
示例性地,服务器100根据选择的目标CPU,调用对应的监控器调用接口,并根据就任务特征标识选择任务对应的特征计算模型,并设置该模型的参数。
可以理解,负载特征计算模型的选择可以基于相应任务的运行场景和任务特征标识。不同电子设备上执行的不同任务,对应选择的负载特征计算模型可以不同,在此不做限制。具体选择负载特征计算模型并设置的过程可以参考上述步骤401至414,在此不做赘述。
1004:在目标CPU上运行目标任务,并监控目标任务的任务负载。
示例性地,服务器100执行上述步骤1001至1003后,可以令目标任务在目标CPU上开始运行,并对目标任务的任务负载进行实时的监控。具体运行目标任务及监控目标任务的任务负载的过程,可以参考上述步骤411至415中相关描述,在此不做赘述。
1005:判断监控到的任务负载特征值是否超出阈值。若判断结果为是,表明目标任务可能需要进行调度,则执行下述步骤1006确定目标任务当前的任务特征标识,若判断结果为否,表明目标任务无需调度,可以继续在目标CPU上运行目标任务。
示例性地,服务器100中对应目标任务设置的负载特征监控器400可以根据对应目标任务设置的负载特征计算模型,按照上述表1中定义的寄存器MSR_PMU_MODEL_INTERVAL中对应于目标任务设置的计算周期,计算并监控任务负载特征值。当计算得到的任务负载特征值超过相应阈值时则可以触发中断,进而继续执行下述步骤1006。如果任务负载特征值没有超过相应阈值,则可以在目标CPU上继续运行该目标任务。上述相应阈值,例如可以是上述表1定义的寄存器“MSR_PMU_MODEL_THRESHOLD_H”对应的上界阈值,也可以是上述表1定义的寄存器“MSR_PMU_MODEL_THRESHOLD_L”对应的下界阈值。
本步骤1005所执行的具体判断过程,可以参考上述步骤416中相关描述,在此不做赘述。
1006:响应于中断,确定目标任务当前的任务负载所对应的任务特征标识。
示例性地,上述步骤1005中,服务器100判断任务负载特征值超过相应阈值,触发中断。进而,服务器100可以响应于触发的中断,根据预设的生成任务特征标识的规则,基于监控到的任务负载特征值生成任务特征标识。
可以理解,上述规则可以是基于任务负载特征值所属的范围生成相应的任务特征标识;也可以是基于任务负载特征值以及***的应用调度策略服务所提供的任务调度策略,生成相应的任务特征标识,在此不做限制。具体响应中断、生成目标任务当前的任务特征标识的过程,可以参考上述步骤417至418中相关描述,在此不做赘述。
1007:判断目标任务是否需要调度。若判断结果为是,则需要对任务进行调度,需要返回执行步骤1001为任务选择合适的目标CPU;若判断结果为否,任务不需要调度,可以进一步判断不需要调度的原因。
示例性地,服务器100可以根据上述步骤1006中确定的目标任务当前的任务负载所对应的任务特征标识,判断任务是否需要调度。例如,服务器100根据任务特征标识确定当前目标任务运行的目标CPU对应的等级标识,与该目标任务当前的任务特征标识不匹配,则可以判断目标任务需要调度。此时,服务器100可以为目标任务重新选择等级标识匹配的目标CPU,并将目标任务调度到新选择的目标CPU上继续运行。服务器100返回执行上述步骤1000至1004,在对运行目标任务的目标CPU设置负载特征监控器后,令目标任务在新选择的目标CPU上继续运行。
具体的任务调度过程,可以参考上述步骤421中相关描述,在此不做赘述。
如果判断任务不需要调度,可以进一步判断不需要调度的原因。服务器100根据查找到的原因,通过运行任务特征计算模块200对负载特征监控器400中选择的负载特征计算模型重置,任务继续在当前CPU上运行。具体的不调度原因参考上述步骤419中相关描述,在此不做赘述。
上述图4所示***各结构之间的交互过程,也可以总结为图11所示的内部实现过程。
图11根据本申请实施例示出了一种任务调度方法的内部实现过程示意图。
如图11所示,在实施本申请的任务调度方法的服务器100操作***内,在负载特征监控器400触发中断后,可以向任务特征计算模块200发送中断通知,即图11中“中断”,进而,任务特征计算模块200在接收到中断通知后响应中断,读取中断信息,根据中断信息中的任务负载特征值,生成任务特征标识,进而判断任务是否需要调度。
继续参考图11所示,任务特征计算模块200判断任务需要调度,向大小核调度器300发起调度请求,即图11中“发起调度”,大小核调度器300基于收到的调度请求和任务信息选择等级标识与任务特征标识对应的CPU,进行任务调度。
继续参考图11所示,任务特征计算模块200判断不需要调度时,可以进一步判断不需要调度的原因。进而,根据查找到的原因,任务特征计算模块200通过监控调用接口对负载特征监控器400的负载特征计算模型重置,任务继续运行。具体不调度的原因参考上述步骤419中相关描述,在此不做赘述。
继续参考图11所示,以应用调度策略服务配置的任务调度策略为主,用户可以通过应用调度策略服务配置任务调度策略,在任务运行的过程中,任务特征计算模块200可以根据任务调度策略的变化来更改负载特征监控器的工作状态。例如上述步骤419中所述,在另一些实施例中,应用调度策略服务设置的任务调度策略刚开始需要负载特征监控器400对任务负载特征值进行监测,经过周期监测后,应用调度策略服务指示关闭对任务负载特征值的监测,此时需要根据任务调度策略的变化,及时的做出相应的措施,关闭负载特征监控器400对任务的监控。
在其他实施例中,例如,用户通过应用调度策略服务配置的任务调度策略规定任务为大核任务,任务特征计算模块200将任务调度策略给该任务生成的任务调度标记同步给大小核调度器300、以及负载特征监控器400,任务将按照配置的任务调度策略在大核上运行。
图12根据本申请实施例示出了一种服务器100的硬件结构示意图。
如图12所示,服务器100可以包括一个或多个处理器1204,与处理器1204中的至少一个连接的***控制逻辑1208,与***控制逻辑1208连接的***内存1212,与***控制逻辑1208连接的非易失性存储器(NVM)1216,以及与***控制逻辑1208连接的网络接口1220。
在一些实施例中,处理器1204可以包括一个或多个单核或多核处理器。在一些实施例中,处理器1204可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。在***1200采用eNB(Evolved Node B,增强型基站)101或RAN(Radio Access Network,无线接入网)控制器102的实施例中,处理器1204可以被配置为执行各种符合的实施例。
在一些实施例中,***控制逻辑1208可以包括任意合适的接口控制器,以向处理器1204中的至少一个和/或与***控制逻辑1208通信的任意合适的设备或组件提供任意合适的接口。
在一些实施例中,***控制逻辑1208可以包括一个或多个存储器控制器,以提供连接到***内存1212的接口。***内存1212可以用于加载以及存储数据和/或指令。在一些实施例中***1200的内存1212可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(DRAM)。
NVM/存储器1216可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,NVM/存储器1216可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如HDD(Hard Disk Drive,硬盘驱动器),CD(Compact Disc,光盘)驱动器,DVD(Digital Versatile Disc,数字通用光盘)驱动器中的至少一个。
NVM/存储器1216可以包括安装***1200的装置上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口1220通过网络访问NVM/存储1216。
特别地,***内存1212和NVM/存储器1216可以分别包括:指令1224的暂时副本和永久副本。指令1224可以包括:由处理器1204中的至少一个执行时导致***1200实施如图4或图10所示的方法的指令。在一些实施例中,指令1224、硬件、固件和/或其软件组件可另外地/替代地置于***控制逻辑1208,网络接口1220和/或处理器1204中。
网络接口1220可以包括收发器,用于为***1200提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(如前端模块,天线等)进行通信。在一些实施例中,网络接口1220可以集成于***1200的其他组件。例如,网络接口1220可以集成于处理器1204的,***内存1212,NVM/存储器1216,和具有指令的固件设备(未示出)中的至少一种,当处理器1204中的至少一个执行所述指令时,***1200实现如图4所示的方法。
网络接口1220可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无线电接口。例如,网络接口1220可以是网络适配器,无线网络适配器,电话调制解调器和/或无线调制解调器。
在一个实施例中,处理器1204中的至少一个可以与用于***控制逻辑1208的一个或多个控制器的逻辑封装在一起,以形成***封装(SiP)。在一个实施例中,处理器1204中的至少一个可以与用于***控制逻辑1208的一个或多个控制器的逻辑集成在同一管芯上,以形成片上***(SoC)。
***1200可以进一步包括:输入/输出(I/O)设备1232。I/O设备1232可以包括用户界面,使得用户能够与***1200进行交互;***组件接口的设计使得***组件也能够与***1200交互。在一些实施例中,***1200还包括传感器,用于确定与***1200相关的环境条件和位置信息的至少一种。
在一些实施例中,用户界面可包括但不限于显示器(例如,液晶显示器,触摸屏显示器等),扬声器,麦克风,一个或多个相机(例如,静止图像照相机和/或摄像机),手电筒(例如,发光二极管闪光灯)和键盘。
在一些实施例中,***组件接口可以包括但不限于非易失性存储器端口、音频插孔和电源接口。
在一些实施例中,传感器可包括但不限于陀螺仪传感器,加速度计,近程传感器,环境光线传感器和定位单元。定位单元还可以是网络接口1220的一部分或与网络接口1220交互,以与定位网络的组件(例如,全球定位***(GPS)卫星)进行通信。
图13根据本申请实施例示出了一种手机600的硬件结构示意图。
手机600可以包括处理器610,外部存储器接口620,内部存储器621,通用串行总线(universal serial bus,USB)接口630,充电管理模块620,电源管理模块621,电池622,天线1,天线2,移动通信模块650,无线通信模块660,音频模块670,扬声器670A,受话器670B,麦克风670C,耳机接口670D,传感器模块680,按键610,马达691,指示器692,摄像头693,显示屏694,以及用户标识模块(subscriber identification module,SIM)卡接口695等。其中传感器模块680可以包括压力传感器680A,陀螺仪传感器680B,气压传感器680C,磁传感器680D,加速度传感器680E,距离传感器680F,接近光传感器680G,指纹传感器680H,温度传感器680J,触摸传感器680K,环境光传感器680L等。
可以理解的是,本发明实施例示意的结构并不构成对手机600的具体限定。在本申请另一些实施例中,手机600可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器610可以包括一个或多个处理单元,例如:处理器610可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器610中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器610中的存储器为高速缓冲存储器。该存储器可以保存处理器610刚用过或循环使用的指令或数据。如果处理器610需要再次使用该指令或数据,可从上述存储器中直接调用。避免了重复存取,减少了处理器610的等待时间,因而提高了***的效率。
在本申请实施例中,处理器610可以获取存储器中执行本申请实施例提供的任务调度方法的数据和指令,实现本申请实施例提供的任务调度方案。具体实现过程可以参考上述图4至图10所示及相关描述,在此不做赘述。
在一些实施例中,处理器610可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
USB接口630是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为手机600充电,也可以用于手机600与***设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对手机600的结构限定。在本申请另一些实施例中,手机600也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块620用于从充电器接收充电输入。电源管理模块621用于连接电池622,充电管理模块620与处理器610。电源管理模块621接收电池622和/或充电管理模块620的输入,为处理器610、内部存储器621、显示屏694、摄像头693、和无线通信模块660等供电。
手机600的无线通信功能可以通过天线1,天线2,移动通信模块650,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。手机600中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块650可以提供应用在手机600上的包括2G/3G/4G/5G等无线通信的解决方案。无线通信模块660可以提供应用在手机600上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星***(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
在一些实施例中,手机600的天线1和移动通信模块650耦合,天线2和无线通信模块660耦合,使得手机600可以通过无线通信技术与网络以及其他设备通信。
手机600通过GPU,显示屏694,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏694和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器610可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏694用于显示图像,视频等。
手机600可以通过ISP,摄像头693,视频编解码器,GPU,显示屏694以及应用处理器等实现拍摄功能。ISP用于处理摄像头693反馈的数据。摄像头693用于捕获静态图像或视频。
外部存储器接口620可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机600的存储能力。外部存储卡通过外部存储器接口620与处理器610通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器621可以用于存储计算机可执行程序代码,该可执行程序代码包括指令。内部存储器621可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储手机600使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器621可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器610通过运行存储在内部存储器621的指令,和/或存储在设置于处理器中的存储器的指令,执行手机600的各种功能应用以及数据处理。
手机600可以通过音频模块670,扬声器670A,受话器670B,麦克风670C,耳机接口670D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块670用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块670还可以用于对音频信号编码和解码。在一些实施例中,音频模块670可以设置于处理器610中,或将音频模块670的部分功能模块设置于处理器610中。
受话器670B,也称“听筒”,用于将音频电信号转换成声音信号。当手机600接听电话或语音信息时,可以通过将受话器670B靠近人耳接听语音。
麦克风670C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风670C发声,将声音信号输入到麦克风670C。手机600可以设置至少一个麦克风670C。在另一些实施例中,手机600可以设置两个麦克风670C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,手机600还可以设置三个,四个或更多麦克风670C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口670D用于连接有线耳机。耳机接口670D可以是USB接口630,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器680A用于感受压力信号,可以将压力信号转换成电信号。
指纹传感器680H用于采集指纹。手机600可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
触摸传感器680K,也称“触控器件”。触摸传感器680K可以设置于显示屏694,由触摸传感器680K与显示屏694组成触摸屏,也称“触控屏”。触摸传感器680K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏694提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器680K也可以设置于手机600的表面,与显示屏694所处的位置不同。在本申请中,应用调度策略服务配置任务调度策略时,用户在手机600上输入任务调度策略,触摸传感器可以将检测到的用户触摸操作传递给应用处理器,以确定触摸事件类型,将输入的任务调度策略记录在本申请的任务特征计算模块200中。
按键610包括开机键,音量键等。按键610可以是机械按键。也可以是触摸式按键。手机600可以接收按键输入,产生与手机600的用户设置以及功能控制有关的键信号输入。
马达691可以产生振动提示。马达691可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏694不同区域的触摸操作,马达691也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器692可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口695用于连接SIM卡。SIM卡可以通过***SIM卡接口695,或从SIM卡接口695拔出,实现和手机600的接触和分离。手机600可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口695可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口695可以同时***多张卡。上述多张卡的类型可以相同,也可以不同。SIM卡接口695也可以兼容不同类型的SIM卡。SIM卡接口695也可以兼容外部存储卡。手机600通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,手机600采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在手机600中,不能和手机600分离。
图14根据本申请实施例示出了一种手机600的***架构示意图。
手机600的软件***可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android***为例,示例性说明手机600的软件结构。
可以理解,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android***分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和***库,以及内核层。
如图14所示,应用程序层可以包括一系列应用程序包。例如,应用程序包可以包括微信TM,浏览器,视频、日历,通话,地图,导航,WLAN,蓝牙,音乐,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。例如,应用程序框架层可以包括窗口管理器,内容提供器,视图***,电话管理器,资源管理器,通知管理器等。
其中,窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图***包括可视控件,例如显示文字的控件,显示图片的控件等。视图***可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供手机600的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
在本申请实施例中,应用程序框架层还可以包括应用调度策略服务,用于根据***运行需要对***所运行的各应用程序的任务预设调度条件。例如,***为了保障一些***应用的快速相应,可以通过应用调度策略服务限定该***应用的各个任务只运行在小核上。相应地,任务特征计算模块则可以综合应用调度策略服务预设的上述任务调度策略,对相应任务不再调度到大核上运行。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓***的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
***库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子***进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含各类硬件驱动,例如CPU驱动,以及图14未示出的显示驱动,摄像头驱动,音频驱动,传感器驱动等。
在本申请实施例中,内核层还包括上述任务特征计算模块、大小核调度器、负载特征监控器、以及监控器调用接口等。具体上述任务特征计算模块、大小核调度器、负载特征监控器、以及监控器调用接口在实施本申请实施例提供的任务调度方法过程中所执行的功能,可以参考上述图3及图4中相关描述,在此不做赘述。
可以理解,本申请实施例所提供的一种任务调度方法与装置,所适用的电子设备可以包括但不限于手机、平板电脑、桌面型、膝上型、手持计算机、上网本,以及增强现实(augmentedreality,AR)\虚拟现实(virtual reality,VR)设备、智能电视、智能手表等可穿戴设备、服务器、移动电子邮件设备、车机设备、便携式游戏机、便携式音乐播放器、阅读器设备、其中嵌入或耦接有一个或多个处理器的电视机、或能够访问网络的其他电子设备。
在说明书对“一个实施例”或“实施例”的引用意指结合实施例所描述的具体特征、结构或特性被包括在根据本申请公开的至少一个范例实施方案或技术中。说明书中的各个地方的短语“在一个实施例中”的出现不一定全部指代同一个实施例。
本申请公开还涉及用于执行文本中的操作装置。该装置可以专门处于所要求的目的而构造或者其可以包括被存储在计算机中的计算机程序选择性地激活或者重新配置的通用计算机。这样的计算机程序可以被存储在计算机可读介质中,诸如,但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡、专用集成电路(ASIC)或者适于存储电子指令的任何类型的介质,并且每个可以被耦合到计算机***总线。此外,说明书中所提到的计算机可以包括单个处理器或者可以是采用针对增加的计算能力的多个处理器涉及的架构。
另外,在本说明书所使用的语言已经主要被选择用于可读性和指导性的目的并且可能未被选择为描绘或限制所公开的主题。因此,本申请公开旨在说明而非限制本文所讨论的概念的范围。

Claims (10)

1.一种任务调度方法,应用于电子设备,其特征在于,所述方法包括:
计算出执行第一任务需要的第一负载值,并确定与第一负载值所属的第一负载范围所对应的至少一个第一等级处理器;
采用所述至少一个第一等级处理器中的处于空闲状态的第一等级处理器处理所述第一任务;
计算出执行第二任务需要的第二负载值,并确定与第二负载值所属的第二负载范围所对应的至少一个第二等级处理器;
采用所述至少一个第二等级处理器中的处于空闲状态的第二等级处理器处理所述第二任务。
2.根据权利要求1所述的方法,其特征在于,在采用所述第一等级处理器处理所述第一任务的过程中,所述方法还包括:
计算出执行第一任务需要的第三负载值,并确定与第三负载值所属的第三负载范围所对应的至少一个第三等级处理器;
采用所述至少一个第三等级处理器中的处于空闲状态的第三等级处理器处理所述第一任务;其中,
所述第三等级处理器与所述第一等级处理器为不同等级的处理器,所述第三等级处理器与所述第二等级处理器为相同或者不同等级的处理器。
3.根据权利要求2所述的方法,其特征在于,所述采用所述至少一个第三等级处理器中的处于空闲状态的第三等级处理器处理所述第一任务,包括:
对第一等级处理器处理所述第一任务的过程触发中断;
将所述第一任务从所述第一等级处理器的第一任务队列中移除,并将所述第一任务添加到所述第三等级处理器的第二任务队列中;
采用所述第三等级处理器选中所述第二任务队列中的第一任务继续处理。
4.根据权利要求3所述的方法,其特征在于,所述电子设备包括对应于第一等级处理器预设的第一性能阈值和第二性能阈值,其中所述第一性能阈值大于所述第二性能阈值,并且,
所述对第一等级处理器处理所述第一任务的过程触发中断,包括:
检测到计算出的第三负载值大于所述第一性能阈值、或者小于所述第二性能阈值,对第一等级处理器处理所述第一任务的过程触发中断。
5.根据权利要求2所述的方法,其特征在于,所述电子设备包括任务特征标识与处理器等级标识之间的对应关系,所述处理器等级标识至少包括所述第一等级处理器和所述第二等级处理器,并且,
所述确定与第一负载值所属的第一负载范围所对应的至少一个第一等级处理器,包括:
基于预设的标识转换规则,将计算出的所述第一负载值转换为对应所述任务特征标识的第一标识值;
确定所述第一标识值属于第一任务特征标识对应的标识值范围,并基于所述第一任务特征标识与第一等级处理器之间的第一对应关系,确定至少一个第一等级处理器。
6.根据权利要求5所述的方法,其特征在于,所述电子设备包括第一负载范围与所述第一任务特征标识对应的标识值范围之间的第二对应关系,并且,
所述确定与第一负载值所属的第一负载范围所对应的至少一个第一等级处理器,包括:
确定第一负载值所属的第一负载范围,并基于所述第二对应关系确定与第一负载值相对应的第一任务特征标识;
基于所述第一对应关系,确定至少一个第一等级处理器。
7.根据权利要求5所述的方法,其特征在于,所述电子设备包括多个处理器,并且,
所述电子设备基于各处理器的算力特征值,对各处理器添加所述处理器等级标识,其中,
所述各处理器的算力特征值与各处理器的频率和微架构算力相关,所述处理器的频率包括所述处理器的主频或者工作频率。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述第一负载值与所述第一等级处理器获取及执行所述第一任务相关的指令类型、以及所述指令的执行情况统计结果相关;
所述第二负载值与所述第二等级处理器获取及执行所述第一任务相关的指令类型、以及所述指令的执行情况统计结果相关。
9.一种电子设备,其特征在于,包括:一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个程序,当所述一个或者多个程序被所述一个或多个处理器执行时,使得所述电子设备执行权利要求1至8中任一项所述的任务调度方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有指令,所述指令在计算机上执行时使所述计算机执行权利要求1至8中任一项所述的任务调度方法。
CN202211001547.4A 2022-08-19 2022-08-19 任务调度方法、电子设备及计算机可读存储介质 Pending CN117632400A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211001547.4A CN117632400A (zh) 2022-08-19 2022-08-19 任务调度方法、电子设备及计算机可读存储介质
PCT/CN2023/093867 WO2024037068A1 (zh) 2022-08-19 2023-05-12 任务调度方法、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211001547.4A CN117632400A (zh) 2022-08-19 2022-08-19 任务调度方法、电子设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN117632400A true CN117632400A (zh) 2024-03-01

Family

ID=89940595

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211001547.4A Pending CN117632400A (zh) 2022-08-19 2022-08-19 任务调度方法、电子设备及计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN117632400A (zh)
WO (1) WO2024037068A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117873735B (zh) * 2024-03-11 2024-05-28 湖南马栏山视频先进技术研究院有限公司 一种虚拟化环境下gpu调度***

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103646006B (zh) * 2013-11-26 2016-08-31 乐视致新电子科技(天津)有限公司 一种处理器的调度方法、装置和***
US11275623B1 (en) * 2019-05-30 2022-03-15 Snap Inc. Core targeting in heterogeneous multiprocessor systems
CN112948066A (zh) * 2019-12-10 2021-06-11 中国科学院深圳先进技术研究院 一种基于异构资源的Spark任务调度方法
CN111597042A (zh) * 2020-05-11 2020-08-28 Oppo广东移动通信有限公司 业务线程运行方法、装置、存储介质及电子设备
CN113656177A (zh) * 2021-08-19 2021-11-16 联想(北京)有限公司 控制方法及电子设备

Also Published As

Publication number Publication date
WO2024037068A1 (zh) 2024-02-22

Similar Documents

Publication Publication Date Title
WO2019128540A1 (zh) 资源管理方法、移动终端及计算机可读存储介质
CN115809139A (zh) 内存管理的方法及电子设备
WO2019137252A1 (zh) 内存处理方法、电子设备、计算机可读存储介质
CN110119305B (zh) 任务执行方法、装置、计算机设备及存储介质
CN115016866A (zh) 应用启动时的数据处理方法、电子设备及存储介质
WO2022100141A1 (zh) 插件管理方法、***及装置
CN115017002B (zh) 频率预测方法和频率预测装置
CN110673944B (zh) 执行任务的方法和装置
CN113742366A (zh) 数据处理方法、装置、计算机设备及存储介质
CN111338745A (zh) 一种虚拟机的部署方法、装置及智能设备
CN115794361A (zh) 管理内存的方法和电子设备
WO2024037068A1 (zh) 任务调度方法、电子设备及计算机可读存储介质
CN115017003B (zh) 负载预测方法和负载预测装置
CN111966491A (zh) 统计占用内存的方法及终端设备
WO2022017328A1 (zh) 一种电子设备的锁屏界面显示方法和电子设备
CN110995842A (zh) 业务数据下载方法、装置、设备及存储介质
CN116126744B (zh) 一种内存回收方法、装置及终端设备
CN112612539A (zh) 数据模型卸载方法、装置、电子设备及存储介质
CN115016921B (zh) 资源调度方法、装置及存储介质
CN116088955B (zh) 进程处理方法和终端设备
CN116089320B (zh) 垃圾回收方法和相关装置
CN116661584B (zh) 一种资源调度方法及相关设备
WO2024131584A1 (zh) 一种轨迹播放方法和装置
CN113760540B (zh) 一种任务处理方法和相关装置
CN110458289B (zh) 多媒体分类模型的构建方法、多媒体分类方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication