CN111459634B - 任务调度方法、装置、终端及存储介质 - Google Patents
任务调度方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN111459634B CN111459634B CN202010244444.5A CN202010244444A CN111459634B CN 111459634 B CN111459634 B CN 111459634B CN 202010244444 A CN202010244444 A CN 202010244444A CN 111459634 B CN111459634 B CN 111459634B
- Authority
- CN
- China
- Prior art keywords
- affinity
- core
- target
- target task
- task
- 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 58
- 230000004044 response Effects 0.000 claims description 27
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 abstract description 7
- 238000012545 processing Methods 0.000 description 60
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009877 rendering Methods 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/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
-
- 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
Abstract
本申请实施例公开了一种任务调度方法、装置、终端及存储介质,属于终端技术领域。该方法包括:根据目标任务对应的第一亲和性,确定目标任务对应的第一目标核心,第一目标核心对应的算力至少满足目标任务的第一性能需求;响应于第一目标核心失效,则根据目标任务对应的第二亲和性,确定目标任务对应的第二目标核心,第二目标核心对应的算力至少满足目标任务的第二性能需求,且第二性能需求低于第一性能需求;响应于第二目标核心有效,将目标任务调度至第二目标核心上执行。本申请实施例提供的任务调度方法可以提高目标任务的运行性能。
Description
技术领域
本申请实施例涉及终端技术领域,特别涉及一种任务调度方法、装置、终端及存储介质。
背景技术
多核处理器(Multi-core processor)是指集成有至少两个处理核心(Core)的中央处理器(Central Processing Unit,CPU),由于CPU的架构不同,CPU中各个处理核心的性能存在差异,而程序任务在运行时,一般具有一定的性能需求,相关技术中,一般会为程序任务设置硬亲和性,即通过接口将程序任务绑定到对应的处理核心上运行,但是在某些调度策略或其他情况的影响下,会使得该程序任务对应的硬亲和性失效,导致该程序任务根据当前调度策略进行调度时,可能会被调度至不满足程序任务性能需求的核心上执行,从而降低了程序任务的运行性能。
发明内容
本申请实施例提供了一种任务调度方法、装置、终端及存储介质。所述技术方案如下:
一方面,本申请实施例提供了一种任务调度方法,所述方法应用于具有多核处理器的终端,所述方法包括:
根据目标任务对应的第一亲和性,确定所述目标任务对应的第一目标核心,所述第一目标核心对应的算力至少满足所述目标任务的第一性能需求;
响应于所述第一目标核心失效,则根据所述目标任务对应的第二亲和性,确定所述目标任务对应的第二目标核心,所述第二目标核心对应的算力至少满足所述目标任务的第二性能需求,且所述第二性能需求低于所述第一性能需求;
响应于所述第二目标核心有效,将所述目标任务调度至所述第二目标核心上执行。
另一方面,本申请实施例提供了一种任务调度装置,所述装置应用于具有多核处理器的终端,所述装置包括:
第一确定模块,用于根据目标任务对应的第一亲和性,确定所述目标任务对应的第一目标核心,所述第一目标核心对应的算力至少满足所述目标任务的第一性能需求;
第二确定模块,用于响应于所述第一目标核心失效,则根据所述目标任务对应的第二亲和性,确定所述目标任务对应的第二目标核心,所述第二目标核心对应的算力至少满足所述目标任务的第二性能需求,且所述第二性能需求低于所述第一性能需求;
第一调度模块,用于响应于所述第二目标核心有效,将所述目标任务调度至所述第二目标核心上执行。
另一方面,本申请实施例提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述方面所述的任务调度方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述方面所述的任务调度方法。
另一方面,还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述方面所述的任务调度方法。
采用本申请实施例提供的任务调度方法,由于目标任务对应有第一亲和性和第二亲和性,当对目标任务进行调度时,可以首先根据目标任务对应的第一亲和性,确定第一目标核心,并判断第一目标核心的状态(是否有效),当第一目标核心失效时,可以根据目标任务对应的第二亲和性,确定第二目标核心,并在第二目标核心未失效时,将目标任务调度至第二目标核心上执行。相比于相关技术中,目标任务对应的硬亲和性失效时,会根据当前调度策略将目标任务调度至其他性能核心上执行,本申请实施例提供的任务调度方法中,由于第一目标核心和第二目标核心对应的算力可以满足目标任务的不同性能需求,因此,当目标任务对应的第一目标核心失效时,可以将目标任务调度至第二目标核心上执行,避免了目标任务对应的第一亲和性失效时,被调度至其他不满足目标任务性能需求的核心上执行,从而提高了目标任务的运行性能。
附图说明
图1示出了本申请一个示例性实施例示出的任务调度方法的流程图;
图2示出了本申请另一个示例性实施例示出的任务调度方法的流程图;
图3示出了本申请另一个示例性实施例示出的任务调度方法的流程图;
图4示出了本申请另一个示例性实施例示出的任务调度方法的流程图;
图5示出了本申请一个示例性实施例示出的确定目标任务对应的第一候选亲和性和第二候选亲和性的过程的流程图;
图6示出了本申请另一个示例性实施例示出的任务调度方法的流程图;
图7示出了本申请另一个示例性实施例示出的任务调度方法的流程图;
图8示出了本申请一个实施例提供的任务调度装置的结构框图;
图9示出了本申请一个示例性实施例提供的终端的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
请参考图1,其示出了本申请一个示例性实施例示出的任务调度方法的流程图。该方法包括:
步骤101,根据目标任务对应的第一亲和性,确定目标任务对应的第一目标核心,第一目标核心对应的算力至少满足目标任务的第一性能需求。
其中,第一亲和性可以由开发人员预先为目标任务设置,其中,设置第一亲和性时需要考虑目标任务对应的性能需求,比如,若目标任务对性能需求较高时,则需要为目标任务设置具有较高算力的处理核心,以保证目标任务的运行性能。
可选的,目标任务对应的第一亲和性可以包含一个处理核心,或一类处理核心(该类处理核心的算力相同),或不同类处理核心(即各类处理核心的算力不相同),但是第一亲和性对应的处理核心均需要至少满足目标任务对应的第一性能需求。
可选的,第一性能需求可以是目标任务对应的最高性能需求,则根据目标任务对应的第一亲和性,可以实现将目标任务实时调度至满足目标任务最高性能需求的处理核心上运行,从而保证目标任务的最高运行性能。
可选的,第一性能需求也可以是目标任务对应的次高性能需求,本实施例对此不构成限定。
可选的,开发人员可以通过应用程序编程接口(Application ProgrammingInterface,API)为目标任务设置对应的第一亲和性。
在一种可能的实施方式中,当终端接收到对目标任务的调度请求时,首先获取目标任务对应的第一亲和性,若第一亲和性对应单一处理核心,则将该单一处理核心确定为第一目标核心;若目标任务的第一亲和性对应有相同算力的多个处理核心,可以根据各个处理核心的当前负载情况,从中确定出第一目标核心,比如,选取当前负载较小的处理核心作为第一目标核心;若目标任务对应有不同算力的多个处理核心,则可以根据各个处理核心的当前负载情况,从中确定出第一目标核心,也可以优先选取算力较高的处理核心作为第一目标核心,或同时考虑处理核心的算力和当前负载,从中确定出第一目标核心。
步骤102,响应于第一目标核心失效,则根据目标任务对应的第二亲和性,确定目标任务对应的第二目标核心,第二目标核心对应的算力至少满足目标任务的第二性能需求,且第二性能需求低于第一性能需求。
由于第一亲和性往往需要保证目标任务较高的性能需求,则其对应的处理核心一般性能(或算力)较高,而较高算力的处理核心一般对终端功耗有一定的需求,因此,在终端电量不足,或其他影响因素的影响下,会出现第一目标核心被隔离,即第一目标核心失效(或第一亲和性失效),无法实现将目标任务调度至第一目标核心上执行,此时,为了能够保证目标任务的性能需求,在一种可能的实施方式中,开发人员预先为目标任务设置有第二亲和性,用于在第一亲和性失效时,可以继续根据目标任务对应的第二亲和性,确定第二目标核心,为目标任务的运行性能提供运行性能的保证。
针对第二亲和性的设置方式,在一种可能的实施方式中,也可以根据目标任务对应的性能需求来进行设置,而由于第二亲和性是为了在第一亲和性失效时,可以进一步保证目标任务的性能需求,因此,设置的第二亲和性对应的处理核心的性能需要低于第一目标核心,才可以保证根据第二亲和性确定的第二目标核心是有效的;在设置第二亲和性时,可以首先对目标任务的性能需求进行层级划分,从而设置第二亲和性对应第二性能需求,且使得第二性能需求低于第一性能需求。
可选的,目标任务对应的第二亲和性可以对应单个处理核心,或一类处理核心(该类处理核心的算力相同),或不同类处理核心(即各类处理核心的算力不相同),但是第二亲和性对应的处理核心均需要满足目标任务对应的第二性能需求。
可选的,第二性能需求可以是目标任务对应的最低性能需求,当目标任务对应的第一亲和性失效时,根据第二亲和性进行目标任务调度时,可以保证将目标任务调度至满足最低性能需求的核心上运行,从而保证了目标任务的运行性能。
可选的,第二性能需求也可以是目标任务对应的次低性能需求,本实施例对此不构成限定。
示意性的,开发人员同样可以通过API为目标任务设置第二亲和性,但是第二亲和性对应的API与第一亲和性对应的API并不相同。
在一种可能的实施方式中,当终端确定出第一目标核心失效时,即可以根据目标任务对应的第二亲和性,从中确定出第二目标核心,若第二亲和性对应单一处理核心,则将该单一处理核心确定为第二目标核心;若目标任务的第二亲和性对应有多个相同算力的处理核心,则可以根据各个处理核心的当前负载情况,从中确定出第二目标核心;若目标任务对应有多个不同算力的处理核心,则可以根据各个处理核心的当前负载情况,从中确定出第二目标核心,或,优先选取算力较高的处理核心作为第二目标核心,或综合考虑处理核心的算力和当前负载情况,来确定第二目标核心。
步骤103,响应于第二目标核心有效,将目标任务调度至第二目标核心上执行。
在一种可能的实施方式中,当终端根据目标任务对应的第二亲和性,确定出第二目标核心后,仍需要判断第二目标核心是否有效,当确定出第二目标核心未失效时,即可以将目标任务调度至第二目标核心上执行,从而在第一目标核心失效时有效保证目标任务的运行性能。
可选的,一般开发人员仅需要为对性能有一定需求的目标任务或应用程序设置其对应的第一亲和性和第二亲和性,使得在调度时可以保证其性能需求,而对于一些对性能需求较低(即普通)的任务、进程或应用程序,开发人员无需对其进行专门设置第一亲和性和第二亲和性,若目标任务未设置有第一亲和性和第二亲和性,当终端在对其进行调度时,可以直接采用当前对应的基本调度策略进行调度。
综上所述,本申请实施例中,由于目标任务对应有第一亲和性和第二亲和性,当对目标任务进行调度时,可以首先根据目标任务对应的第一亲和性,确定第一目标核心,并判断第一目标核心的状态(是否有效),当第一目标核心失效时,可以根据目标任务对应的第二亲和性,确定第二目标核心,并在第二目标核心未失效时,将目标任务调度至第二目标核心上执行。相比于相关技术中,目标任务对应的硬亲和性失效时,会根据当前调度策略将目标任务调度至其他性能核心上执行,本申请实施例提供的任务调度方法中,由于第一目标核心和第二目标核心对应的算力可以满足目标任务的不同性能需求,因此,当目标任务对应的第一目标核心失效时,可以将目标任务调度至第二目标核心上执行,避免了目标任务对应的第一亲和性失效时,被调度至其他不满足目标任务性能需求的核心上执行,从而提高了目标任务的运行性能。
在另一可能的实施方式中,第一目标核心会出现失效的情况,相应的,在某些调度策略的影响下,第二目标核心也会出现失效的情况,表示终端无法为目标任务提供最基本的性能需求,此时,即可以采用当前调度策略对目标任务进行调度。
其中,当前调度策略可以是根据当前终端电量为目标任务选取合适的处理核心,或根据各个处理核心的当前负载,选择负载较少的处理核心等,本实施例对当前调度策略不构成限定。
由于目标任务对应的第一亲和性和第二亲和性与目标任务所需的性能需求有关,而目标任务在不同的运行状态下,可能对应不同的性能需求,比如,当目标任务是前台应用程序对应的任务,由于前台应用需要为用户提供更优的运行性能,则目标任务对应的性能需求也就较高,相对应的,若目标任务是后台应用程序对应的任务,则对应的性能需求也就较低,因此,在一种可能的实施方式中,终端可以根据目标任务所处的运行状态,来动态调整目标任务对应的第一亲和性和第二亲和性。
请参考图2,其示出了本申请另一个示例性实施例示出的任务调度方法的流程图,该方法包括:
步骤201,获取目标任务对应的应用程序所处的运行状态。
其中,运行状态可以被划分为前台运行状态和后台运行状状态。
在一种可能的实施方式中,当终端接收到对目标任务的调度请求时,可以首先获取目标任务对应的应用程序所处的运行状态,比如,目标任务对应的应用程序处于前台运行状态。
步骤202,根据运行状态确定目标任务对应的第一亲和性和第二亲和性,其中,不同运行状态对应不同第一亲和性,且不同运行状态对应不同第二亲和性。
由于不同的运行状态对目标任务的性能需求不同,而目标任务对应的第一亲和性和第二亲和性与性能需求有关,因此,在一种可能的实施方式中,可以根据目标任务对应的运行状态来动态调整目标任务对应的第一亲和性和第二亲和性。
可选的,应用程序的开发商可以预先为应用程序设置其对应的第一亲和性(满足第一性能需求)和第二亲和性(满足第二性能需求),当终端对目标任务进行调度时,可以基于为目标任务预先设置的第一亲和性和第二亲和性,对目标任务当前运行状态对应的第一亲和性和第二亲和性进行动态调整。
示意性的,在图2的基础上,如图3所示,步骤202可以包括步骤202A和步骤202B。
步骤202A,响应于运行状态为前台运行状态,将第一候选亲和性确定为目标任务对应的第一亲和性,并将第二候选亲和性确定为目标任务对应的第二亲和性。
步骤202B,响应于运行状态为后台运行状态,将第三候选亲和性确定为目标任务对应的第一亲和性,并将第四候选亲和性确定为目标任务对应的第二亲和性。
其中,由于前台运行状态下目标任务的第一性能需求高于后台运行状态下目标任务的第一性能需求,因此,第一候选亲和性对应核心的算力应该高于第三候选亲和性对应核心的算力;同理,由于前台运行状态下目标任务的第二性能需求高于后台运行状态下目标任务的第二性能需求,因此,第二候选亲和性对应核心的算力也应该高于第四候选亲和性对应核心的算力。
在一种可能的实施方式中,终端根据获取到的目标任务对应的运行状态,实时确定目标任务对应的第一亲和性和第二亲和性,以便后续根据该第一亲和性和第二亲和性对目标任务进行调度。
示意性的,以当前CPU的3集群(cluster)架构为例,结合应用程序对应的运行状态,其对应的第一亲和性和第二亲和性可以如表一所示。
表一
运行状态 | 第一亲和性 | 第二亲和性 |
前台运行状态 | Cluster 3 | Cluster 2 |
后台运行状态 | Cluster 2 | Cluster 1 |
其中,cluster 1算力<cluster 2算力<cluster3算力,由表一可知,若目标任务对应的运行状态为前台运行状态,则其对应的第一亲和性可以设置最高算力对应的处理核心集群,而第二亲和性可以设置为次高算力对应的处理核心集群;若目标任务对应的运行状态为后台运行状态,则其对应的第一亲和性可以设置为次高算力对应的处理核心集群,其对应的第二亲和性可以设置为最低算力对应的处理核心集群。
需要说明的是,根据运行状态对目标任务对应的第一亲和性和第二亲和性进行动态调整时,其对应的第二亲和性至少需要满足目标任务对应的最低性能需求。
步骤203,根据目标任务对应的第一亲和性,确定目标任务对应的第一目标核心,第一目标核心对应的算力至少满足目标任务的第一性能需求。
步骤204,响应于第一目标核心失效,则根据目标任务对应的第二亲和性,确定目标任务对应的第二目标核心,第二目标核心对应的算力至少满足目标任务的第二性能需求,且第二性能需求低于第一性能需求。
步骤205,响应于第二目标核心有效,将目标任务调度至第二目标核心上执行。
步骤203至步骤205的实施方式可以参考步骤101至步骤103,本实施例在此不做赘述。
本实施例中,通过在对目标任务进行调度之前,获取目标任务对应的应用程序所处的运行状态,可以根据预先设置好的动态调整规则,对目标任务的第一亲和性和第二亲和性进行动态调整,实现在满足目标任务运行性能需求的同时,进一步降低终端的功耗。
在另一可能的应用场景中,也可以根据目标任务对应的应用程序的重要性,来动态调整目标任务对应的第一亲和性和第二亲和性。比如,若应用程序的使用频率较高,表示应用程序对于用户的重要性较高,则为该应用程序对应的目标任务设置较高算力的处理核心集群,相应的,若应用程序对应的重要性较低时,可以为该应用程序对应的目标任务设置较低算力的处理核心集群,以节省终端的功耗。
当开发人员仅为目标任务设置了处于前台运行状态下的第一亲和性和第二亲和性,为了使得目标任务处于后台运行状态时,可以实现在满足性能需求的同时,降低终端的功耗,因此,终端可以基于前台运行状态下对应的第二亲和性,自动为目标任务设置处于后台运行状态下对应的第三候选亲和性和第四候选亲和性。
示意性的,在图3的基础上,如图4所示,步骤202B可以被替换为步骤401和步骤402。
步骤401,获取目标任务在前台运行状态下的第二候选亲和性。
由于目标任务由前台运行状态切换至后台运行状态时,其对应的性能需求也会降低,而前台运行状态下第一候选亲和性和第二候选亲和性的关系为,第二候选亲和性对应的核心算力低于第一候选亲和性对应的核心算力,因此,当目标任务切换至后台运行状态时,可以获取该目标任务在前台运行状态下的第二候选亲和性,以便根据该第二候选亲和性来确定出目标任务处于后台运行状态下时,对应的第三候选亲和性和第四候选亲和性。
步骤402,根据第二候选亲和性确定第三候选亲和性和第四候选亲和性。
由于后台运行状态下对应的性能需求低于前台运行状态下对应的性能需求,因此,根据第二候选亲和性确定的第三候选亲和性对应核心的算力应该小于等于第二候选亲和性对应核心的算力,第四候选亲和性对应核心的算力应该小于等于第三候选亲和性对应核心的算力。
在一种可能的实施方式中,终端根据获取到的第二候选亲和性,来确定目标任务在后台运行状态下对应的第三候选亲和性和第四候选亲和性。比如,若第二候选亲和性对应有两个算力不同的处理核心,且核心A对应的算力高于核心B对应的算力,则确定出的第三候选亲和性可以设置为核心A,第四后候选和性可以设置为核心B。
可选的,若第二候选亲和性对应相同算力的多个处理核心,则可以从中随机确定出任一处理核心作为第三候选亲和性,并从中随机确定出任一处理核心作为第四后候选亲和性。
本实施例中,若目标任务仅设置有前台运行状态下对应的第一候选亲和性和第二候选亲和性,终端可以根据目标任务对应的第二候选亲和性,为目标任务设置后台运行状态下对应的第三候选亲和性和第四候选亲和性,以实现对目标任务不同运行状态下对应的亲和性进行动态调整。
由于第一亲和性一般对应较高算力的核心,而较高算力的核心对功耗需求较大,当终端当前的电量较低时,若仍将目标任务调度至较高算力的核心上运行,会加剧终端的功耗,影响终端的续航,因此,在一种可能的实施方式中,还应将终端当前的电量状况加入动态调整目标任务对应的亲和性的参考因素中。
请参考图5,其示出了本申请一个示例性实施例示出的确定目标任务对应的第一候选亲和性和第二候选亲和性的过程的流程图,该方法包括:
步骤501,获取当前电量,或,省电模式的开闭状态。
在一种可能的实施方式中,当终端确定出目标任务处于前台运行状态时,为了避免将目标任务调度至较高算力对应的处理核心上运行时,对终端续航造成影响,首先需要获取终端对应的当前电量,或省电模式的开闭状态,当终端的当前电量较高时,或省电模式处于关闭状态,表示终端当前电量充足,可以满足目标任务在较高算力核心上的运行需求;若终端当前电量较低,或省电模式处于开启状态,则表示终端存在续航需求,此时,需要适当调整目标任务对应的第一候选亲和性和第二候选亲和性,避免对终端续航造成影响。
步骤502,获取前台运行状态对应的第一候选亲和性和第二候选亲和性。
在一种可能的实施方式中,可以基于目标任务在前台运行状态下对应的第一候选亲和性和第二候选亲和性,来进行亲和性的动态调整。
步骤503,响应于运行状态为前台运行状态,且当前电量低于电量阈值,或,省电模式处于开启状态,调整第一候选亲和性和第二候选亲和性。
由于调整第一候选亲和性和第二候选亲和性的目的是为了降低功耗,因此,调整后第一候选亲和性对应核心的算力应该小于调整前第一候选亲和性对应核心的算力,调整后第二候选亲和性对应核心的算力小于等于调整后第一候选亲和性对应核心的算力。
在一种可能的实施方式中,当目标任务对应的运行状态为前台运行状态时,且获取到当前电量低于电量阈值,或省电模式处于开启状态,表示终端可能存在续航需求,因此,需要适当调整第一候选亲和性和第二候选亲和性。
示意性的,若电量阈值为35%,当终端获取到当前电量为30%,低于电量阈值,则需要按照调整规则对第一候选亲和性和第二候选亲和性进行调整。
本实施例中,通过获取终端的当前电量,或省电模式的开闭状态,从而确定是否调整目标任务在前台运行状态下对应的第一候选亲和性和第二候选亲和性,以便在终端存在续航需求时,避免将目标任务调度至较高算力的核心上运行,对终端续航造成影响。
由于第二亲和性是当目标任务对应的第一亲和性失效时,所采用的备选调度方案,且目标任务在第一亲和性对应的核心上运行时,能够达到更优越的运行性能,因此,在一种可能的实施方式中,可以对第一目标核心进行有效性检测,使得终端在确定第一目标核心有效时,可以重新将目标任务调度至第一目标核心上运行,从而进一步提高目标任务的运行性能。
请参考图6,其示出了本申请另一个示例性实施例示出的任务调度方法的流程图,该方法包括:
步骤601,根据目标任务对应的第一亲和性,确定目标任务对应的第一目标核心,第一目标核心对应的算力至少满足目标任务的第一性能需求。
步骤602,响应于第一目标核心失效,则根据目标任务对应的第二亲和性,确定目标任务对应的第二目标核心,第二目标核心对应的算力至少满足目标任务的第二性能需求,且第二性能需求低于第一性能需求。
步骤603,响应于第二目标核心有效,将目标任务调度至第二目标核心上执行。
步骤601至步骤603的实施方式可以参考步骤101至步骤103,本实施例在此不做赘述。
步骤604,对第一目标核心进行有效性监测。
在一种可能的实施方式中,当终端将目标任务调度至第二目标核心上运行之后,可以为第一目标核心进行有效性监测,当终端的功耗情况或当前调度策略允许目标任务在第一目标核心上执行时,即表示第一目标核心有效,可以重新将目标任务调度至第一目标核心上执行。
需要说明的是,本步骤也可以在步骤602后进行,本实施例对此不构成限定。
步骤605,响应于第一目标核心有效,重新根据第一亲和性调度目标任务。
在一种可能的实施方式中,当终端确定出第一目标核心有效时,表示终端允许目标任务在较高算力的核心上执行,此时,可以重新根据目标任务对应的第一亲和性对目标任务进行调度。
其中,根据第一亲核性对目标任务进行调度的方式可以参考上文实施例,本实施例在此不做赘述。
本实施例中,通过为第一目标核心进行有效性检测,使得终端可以实时确定第一目标核心的状态,并在第一目标核心有效时,重新根据第一亲和性对目标任务进行调度,使得目标任务尽可能多的运行在较高算力的核心上,进一步提高了目标任务的运行性能。
请参考图7,其示出了本申请另一个示例性实施例示出的任务调度方法的流程图,该方法包括:
步骤701,目标任务是否设置有第一亲和性。
若目标任务未设置第一亲和性,则进入步骤709,若设置有第一亲和性,则进入步骤702。
步骤702,根据目标任务对应的第一亲和性,确定第一目标核心。
步骤703,第一目标核心是否失效。
若第一目标核心失效,则进入步骤705,若第一目标核心有效,则进入步骤704。
步骤704,将目标任务调度至第一目标核心上执行。
步骤705,目标任务是否设置有第二亲和性。
若目标任务未设置第二亲和性,则进入步骤709,否则,进入步骤706。
步骤706,根据目标任务对应的第二亲和性,确定第二目标核心。
步骤707,第二目标核心是否失效。
若第二目标核心失效,则进入步骤709,否则,进入步骤708。
步骤708,将目标任务调度至第二目标核心上执行。
步骤709,根据当前调度策略对目标任务进行调度。
请参考图8,其示出了本申请一个实施例提供的任务调度装置的结构框图。该装置可以通过软件、硬件或者两者的结合实现成为服务器的全部或一部分。
该装置包括:
第一确定模块801,用于根据目标任务对应的第一亲和性,确定所述目标任务对应的第一目标核心,所述第一目标核心对应的算力至少满足所述目标任务的第一性能需求;
第二确定模块802,用于响应于所述第一目标核心失效,则根据所述目标任务对应的第二亲和性,确定所述目标任务对应的第二目标核心,所述第二目标核心对应的算力至少满足所述目标任务的第二性能需求,且所述第二性能需求低于所述第一性能需求;
第一调度模块803,用于响应于所述第二目标核心有效,将所述目标任务调度至所述第二目标核心上执行。
可选的,所述装置还包括:
第一获取模块,用于获取所述目标任务对应的应用程序所处的运行状态;
第三确定模块,用于根据所述运行状态确定所述目标任务对应的所述第一亲和性和所述第二亲和性,其中,不同运行状态对应不同第一亲和性,且不同运行状态对应不同第二亲和性。
可选的,所述第三确定模块,包括:
第一确定单元,用于响应于所述运行状态为前台运行状态,将第一候选亲和性确定为所述目标任务对应的所述第一亲和性,并将第二候选亲和性确定为所述目标任务对应的所述第二亲和性;
第二确定单元,用于响应于所述运行状态为后台运行状态,将第三候选亲和性确定为所述目标任务对应的所述第一亲和性,并将第四候选亲和性确定为所述目标任务对应的所述第二亲和性;
其中,所述前台运行状态下所述目标任务的所述第一性能需求高于后台运行状态下所述目标任务的所述第一性能需求,所述前台运行状态下所述目标任务的所述第二性能需求高于后台运行状态下所述目标任务的所述第二性能需求;所述第一候选亲和性对应核心的算力高于所述第三候选亲和性对应核心的算力,所述第二候选亲和性对应核心的算力高于所述第四候选亲和性对应核心的算力。
可选的,所述装置,还包括:
第二获取模块,用于获取所述目标任务在所述前台运行状态下的所述第二候选亲和性;
第四确定模块,用于根据所述第二候选亲和性确定所述第三候选亲和性和所述第四候选亲和性,其中,所述第三候选亲和性对应核心的算力小于等于所述第二候选亲和性对应核心的算力,所述第四候选亲和性对应核心的算力小于等于所述第三候选亲和性对应核心的算力。
可选的,所述装置还包括:
第三获取模块,用于获取当前电量,或,省电模式的开闭状态;
第四获取模块,用于获取所述前台运行状态对应的所述第一候选亲和性和所述第二候选亲和性;
调整模块,用于响应于所述运行状态为所述前台运行状态,且所述当前电量低于电量阈值,或,省电模式处于开启状态,调整所述第一候选亲和性和所述第二候选亲和性;
其中,调整后所述第一候选亲和性对应核心的算力小于调整前所述第一候选亲和性对应核心的算力,调整后所述第二候选亲和性对应核心的算力小于等于调整后所述第一候选亲和性对应核心的算力。
可选的,所述装置还包括:
监测模块,用于对所述第一目标核心进行有效性监测;
第二调度模块,用于响应于所述第一目标核心有效,重新根据所述第一亲和性调度所述目标任务。
可选的,所述装置还包括:
第三调度模块,用于响应于所述第二目标核心失效,根据当前调度策略对所述目标任务进行调度。
综上所述,本申请实施例中,由于目标任务对应有第一亲和性和第二亲和性,当对目标任务进行调度时,可以首先根据目标任务对应的第一亲和性,确定第一目标核心,并判断第一目标核心的状态(是否有效),当第一目标核心失效时,可以根据目标任务对应的第二亲和性,确定第二目标核心,并在第二目标核心未失效时,将目标任务调度至第二目标核心上执行。相比于相关技术中,目标任务对应的硬亲和性失效时,会根据当前调度策略将目标任务调度至其他性能核心上执行,本申请实施例提供的任务调度方法中,由于第一目标核心和第二目标核心对应的算力可以满足目标任务的不同性能需求,因此,当目标任务对应的第一目标核心失效时,可以将目标任务调度至第二目标核心上执行,避免了目标任务对应的第一亲和性失效时,被调度至其他不满足目标任务性能需求的核心上执行,从而提高了目标任务的运行性能。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图9,其示出了本申请一个示例性实施例提供的终端900的结构框图。本申请实施例中的终端900可以包括一个或多个如下部件:处理器910和存储器920。
处理器910可以包括多个处理核心,比如,处理器901可以包括8个处理核心(如图9所示的核心1至核心8)。处理器910利用各种接口和线路连接整个终端900内的各个部分,通过运行或执行存储在存储器920内的指令、程序、代码集或指令集,以及调用存储在存储器920内的数据,执行终端800的各种功能和处理数据。可选地,处理器910可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable GateArray,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器910可集成CPU、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责屏幕所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器910中,单独通过一块通信芯片进行实现。
存储器920可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。可选地,该存储器920包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器920可用于存储指令、程序、代码、代码集或指令集。存储器920可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等,该操作系统可以是安卓(Android)系统(包括基于Android系统深度开发的系统)、苹果公司开发的IOS系统(包括基于IOS系统深度开发的系统)或其它系统。存储数据区还可以存储终端900在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
可选的,终端900还可以包括屏幕,其可以为电容式触摸显示屏,该电容式触摸显示屏用于接收用户使用手指、触摸笔等任何适合的物体在其上或附近的触摸操作,以及显示各个应用程序的用户界面。触摸显示屏通常设置在终端900的前面板。触摸显示屏可被设计成为全面屏、曲面屏或异型屏。触摸显示屏还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合,本申请实施例对此不加以限定。
除此之外,本领域技术人员可以理解,图9中示出的终端900的结构并不构成对终端900的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,终端900中还包括射频电路、拍摄组件、传感器、音频电路、无线保真(Wireless Fidelity,WiFi)组件、电源、蓝牙组件等部件,在此不再赘述。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的任务调度方法。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的任务调度方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (7)
1.一种任务调度方法,其特征在于,所述方法应用于具有多核处理器的终端,所述方法包括:
获取目标任务对应的应用程序所处的运行状态;
获取当前电量,或,省电模式的开闭状态;
获取前台运行状态对应的第一候选亲和性和第二候选亲和性;
响应于所述运行状态为所述前台运行状态,且所述当前电量低于电量阈值,或,省电模式处于开启状态,调整所述第一候选亲和性和所述第二候选亲和性;
其中,调整后所述第一候选亲和性对应核心的算力小于调整前所述第一候选亲和性对应核心的算力,调整后所述第二候选亲和性对应核心的算力小于等于调整后所述第一候选亲和性对应核心的算力;
响应于所述运行状态为所述前台运行状态,将所述第一候选亲和性确定为所述目标任务对应的第一亲和性,并将所述第二候选亲和性确定为所述目标任务对应的第二亲和性;
响应于所述运行状态为后台运行状态,将第三候选亲和性确定为所述目标任务对应的所述第一亲和性,并将第四候选亲和性确定为所述目标任务对应的所述第二亲和性;
其中,不同运行状态对应不同第一亲和性,且不同运行状态对应不同第二亲和性,所述前台运行状态下所述目标任务的第一性能需求高于所述后台运行状态下所述目标任务的所述第一性能需求,所述前台运行状态下所述目标任务的第二性能需求高于所述后台运行状态下所述目标任务的所述第二性能需求;所述第一候选亲和性对应核心的算力高于所述第三候选亲和性对应核心的算力,所述第二候选亲和性对应核心的算力高于所述第四候选亲和性对应核心的算力;
根据所述目标任务对应的所述第一亲和性,确定所述目标任务对应的第一目标核心,所述第一目标核心对应的算力至少满足所述目标任务的所述第一性能需求;
响应于所述第一目标核心失效,则根据所述目标任务对应的所述第二亲和性,确定所述目标任务对应的第二目标核心,所述第二目标核心对应的算力至少满足所述目标任务的所述第二性能需求,且所述第二性能需求低于所述第一性能需求;
响应于所述第二目标核心有效,将所述目标任务调度至所述第二目标核心上执行。
2.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
获取所述目标任务在所述前台运行状态下的所述第二候选亲和性;
根据所述第二候选亲和性确定所述第三候选亲和性和所述第四候选亲和性,其中,所述第三候选亲和性对应核心的算力小于等于所述第二候选亲和性对应核心的算力,所述第四候选亲和性对应核心的算力小于等于所述第三候选亲和性对应核心的算力。
3.根据权利要求1至2任一所述的方法,其特征在于,所述响应于所述第二目标核心有效,将所述目标任务调度至所述第二目标核心上执行之后,所述方法还包括:
对所述第一目标核心进行有效性监测;
响应于所述第一目标核心有效,重新根据所述第一亲和性调度所述目标任务。
4.根据权利要求1至2任一所述的方法,其特征在于,所述响应于所述第一目标核心失效,则根据所述目标任务对应的所述第二亲和性,确定所述目标任务对应的第二目标核心之后,所述方法还包括:
响应于所述第二目标核心失效,根据当前调度策略对所述目标任务进行调度。
5.一种任务调度装置,其特征在于,所述装置应用于具有多核处理器的终端,所述装置包括:
第一获取模块,用于获取目标任务对应的应用程序所处的运行状态;
第三获取模块,用于获取当前电量,或,省电模式的开闭状态;
第四获取模块,用于获取前台运行状态对应的第一候选亲和性和第二候选亲和性;
调整模块,用于响应于所述运行状态为所述前台运行状态,且所述当前电量低于电量阈值,或,省电模式处于开启状态,调整所述第一候选亲和性和所述第二候选亲和性;其中,调整后所述第一候选亲和性对应核心的算力小于调整前所述第一候选亲和性对应核心的算力,调整后所述第二候选亲和性对应核心的算力小于等于调整后所述第一候选亲和性对应核心的算力;
第三确定模块,用于响应于所述运行状态为所述前台运行状态,将所述第一候选亲和性确定为所述目标任务对应的第一亲和性,并将所述第二候选亲和性确定为所述目标任务对应的第二亲和性;响应于所述运行状态为后台运行状态,将第三候选亲和性确定为所述目标任务对应的所述第一亲和性,并将第四候选亲和性确定为所述目标任务对应的所述第二亲和性;其中,不同运行状态对应不同第一亲和性,且不同运行状态对应不同第二亲和性,所述前台运行状态下所述目标任务的第一性能需求高于所述后台运行状态下所述目标任务的所述第一性能需求,所述前台运行状态下所述目标任务的第二性能需求高于所述后台运行状态下所述目标任务的所述第二性能需求;所述第一候选亲和性对应核心的算力高于所述第三候选亲和性对应核心的算力,所述第二候选亲和性对应核心的算力高于所述第四候选亲和性对应核心的算力;
第一确定模块,用于根据所述目标任务对应的所述第一亲和性,确定所述目标任务对应的第一目标核心,所述第一目标核心对应的算力至少满足所述目标任务的所述第一性能需求;
第二确定模块,用于响应于所述第一目标核心失效,则根据所述目标任务对应的所述第二亲和性,确定所述目标任务对应的第二目标核心,所述第二目标核心对应的算力至少满足所述目标任务的所述第二性能需求,且所述第二性能需求低于所述第一性能需求;
第一调度模块,用于响应于所述第二目标核心有效,将所述目标任务调度至所述第二目标核心上执行。
6.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至4任一所述的任务调度方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至4任一所述的任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010244444.5A CN111459634B (zh) | 2020-03-31 | 2020-03-31 | 任务调度方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010244444.5A CN111459634B (zh) | 2020-03-31 | 2020-03-31 | 任务调度方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459634A CN111459634A (zh) | 2020-07-28 |
CN111459634B true CN111459634B (zh) | 2023-11-14 |
Family
ID=71682110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010244444.5A Active CN111459634B (zh) | 2020-03-31 | 2020-03-31 | 任务调度方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459634B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051048A (zh) * | 2021-03-10 | 2021-06-29 | 北京紫光展锐通信技术有限公司 | 处理性能的提升方法、装置和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6769017B1 (en) * | 2000-03-13 | 2004-07-27 | Hewlett-Packard Development Company, L.P. | Apparatus for and method of memory-affinity process scheduling in CC-NUMA systems |
CN107885579A (zh) * | 2017-11-13 | 2018-04-06 | 郑州云海信息技术有限公司 | 虚拟机的负载均衡方法和计算机可读存储介质 |
CN108536538A (zh) * | 2018-03-13 | 2018-09-14 | Oppo广东移动通信有限公司 | 处理器核心调度方法、装置、终端及存储介质 |
-
2020
- 2020-03-31 CN CN202010244444.5A patent/CN111459634B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6769017B1 (en) * | 2000-03-13 | 2004-07-27 | Hewlett-Packard Development Company, L.P. | Apparatus for and method of memory-affinity process scheduling in CC-NUMA systems |
CN107885579A (zh) * | 2017-11-13 | 2018-04-06 | 郑州云海信息技术有限公司 | 虚拟机的负载均衡方法和计算机可读存储介质 |
CN108536538A (zh) * | 2018-03-13 | 2018-09-14 | Oppo广东移动通信有限公司 | 处理器核心调度方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111459634A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6509895B2 (ja) | デバイス固有又はユーザー固有のリソース使用プロファイルに基づくリソース管理 | |
US10101910B1 (en) | Adaptive maximum limit for out-of-memory-protected web browser processes on systems using a low memory manager | |
CN111352861B (zh) | 内存压缩方法、装置及电子设备 | |
KR101799253B1 (ko) | 다중 클러스터 이종 프로세서 아키텍처에서 동적 캐시 확장을 제공하기 위한 시스템 및 방법 | |
US20090160867A1 (en) | Autonomous Context Scheduler For Graphics Processing Units | |
KR101378390B1 (ko) | 공유 스택의 부분들을 할당하기 위한 시스템 및 방법 | |
US9043806B2 (en) | Information processing device and task switching method | |
CN111104208B (zh) | 进程调度管理方法、装置、计算机设备及存储介质 | |
US9218045B2 (en) | Operating processor element based on maximum sustainable dynamic capacitance associated with the processor | |
US20210208935A1 (en) | Method for Scheduling Multi-Core Processor, Terminal, and Storage Medium | |
US10289446B1 (en) | Preserving web browser child processes by substituting a parent process with a stub process | |
US20140115315A1 (en) | Optimized cold boot for non-volatile memory | |
CN110704084A (zh) | 固件升级中内存动态分配的方法、装置、计算机设备及存储介质 | |
CN111459634B (zh) | 任务调度方法、装置、终端及存储介质 | |
KR20140145748A (ko) | 다중 코어 환경에서 프로세스의 할당 방법 및 장치 | |
US8589942B2 (en) | Non-real time thread scheduling | |
US10248321B1 (en) | Simulating multiple lower importance levels by actively feeding processes to a low-memory manager | |
CN110795323A (zh) | 负载统计方法、装置、存储介质及电子设备 | |
CN111459682B (zh) | 频率调整方法、装置、电子设备以及存储介质 | |
CN110750346B (zh) | 任务运行优化方法、装置、终端及存储介质 | |
CN110633113A (zh) | 一种应用程序启动的方法及系统、存储介质、移动设备 | |
US20100242046A1 (en) | Multicore processor system, scheduling method, and computer program product | |
EP4022446B1 (en) | Memory sharing | |
CN115712337A (zh) | 处理器的调度方法、装置、电子设备及存储介质 | |
US8706928B2 (en) | Integrated circuit and method for reducing violations of a timing constraint |
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 |