CN115048209A - Cpu调度方法、装置、终端设备和存储介质 - Google Patents
Cpu调度方法、装置、终端设备和存储介质 Download PDFInfo
- Publication number
- CN115048209A CN115048209A CN202110254947.5A CN202110254947A CN115048209A CN 115048209 A CN115048209 A CN 115048209A CN 202110254947 A CN202110254947 A CN 202110254947A CN 115048209 A CN115048209 A CN 115048209A
- Authority
- CN
- China
- Prior art keywords
- task
- target
- core
- distributed
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本申请涉及一种CPU调度方法、装置、终端设备和存储介质。方法包括:在待分配任务为目标任务的情况下,将待分配任务分配至CPU的第一运算单元,以使第一运算单元执行待分配任务;目标任务包括与画面渲染相关的前景应用任务和系统任务;在待分配任务为非目标任务的情况下,将待分配任务分配至CPU的第二运算单元,以使第二运算单元执行待分配任务;其中,第一运算单元的单个核心运算能力优于第二运算单元的单个核心运算能力。采用本方法能够保证目标任务的资源配置,实现CPU资源的合理调度,在高运算能力的运算单元资源不足时,也能通过合理的调度尽可能避免画面卡顿的发生。
Description
技术领域
本申请涉及CPU技术领域,特别是涉及一种CPU调度方法、装置、终端设备和存储介质。
背景技术
随着操作系统的发展,目前越来越多的电子设备以ARM系统为基础进行搭建。目前,安卓终端的主流CPU(Central Processing Unit,中央处理器)架构是基于ARM提出的big.LITTLE架构来实现的。请参阅图1,big.LITTLE架构是指将比较耗电但运算能力强的异质运算多核心处理器组成结构组态,在此组态中,处理器核心组成的“big丛集”就是CPU大核(如图1中的Cortex A57)。另外,将低耗电但运算能力弱的处理器核心组成“LITTLE丛集”,以得到CPU小核(如图1中的Cortex A53)。
然而,传统技术中高运算能力的运算单元存在资源不足的问题,容易导致画面卡顿。
发明内容
基于此,有必要针对上述技术问题,提高一种能够解决高运算能力的运算单元资源不足的CPU调度方法、装置、终端设备和存储介质,以避免终端设备出现画面卡顿的情况。
为实现上述目的,第一方面,本申请实施例提供了一种CPU调度方法,该方法包括:在待分配任务为目标任务的情况下,将待分配任务分配至CPU的第一运算单元,以使第一运算单元执行待分配任务;其中,目标任务包括与画面渲染相关的前景应用任务或系统任务;在待分配任务为非目标任务的情况下,将待分配任务分配至CPU的第二运算单元,以使第二运算单元执行待分配任务;其中,第一运算单元的单个核心运算能力优于第二运算单元的单个核心运算能力。
在其中一个实施例中,CPU调度方法还包括:检测当前运行的各任务对渲染队列缓冲区的填充行为,并根据检测的结果确定与画面渲染相关的前景应用任务。
在其中一个实施例中,根据检测的结果确定与画面渲染相关的前景应用任务的步骤,包括:在检测到当前运行的任务向渲染队列缓冲区填充数据的情况下,标记当前运行的任务,并得到标记后的各任务;从标记后的各任务中确定与画面渲染相关的前景应用任务。
在其中一个实施例中,根据检测的结果确定与画面渲染相关的前景应用任务的步骤之后,包括:采用控制群组对目标任务进行封装。
在其中一个实施例中,第一运算单元包括多个处理器核心。将待分配任务分配至第一运算单元的步骤,包括:根据各处理器核心的剩余运算能力确定目标处理器核心;将待分配任务分配至目标处理器核心,以使目标处理器核心执行待分配任务。
在其中一个实施例中,处理器核心为中核或大核,中核的数量为至少一个,大核的数量为至少一个。根据各处理器核心的剩余运算能力确定目标处理器核心的步骤,包括:根据中核的剩余运算能力计算待分配任务的中核处理时长;在中核处理时长小于或等于时长阈值的情况下,将中核确定为目标处理器核心,否则,将大核确定为目标处理器核心。
在其中一个实施例中,第二运算单元包括多个小核。将待分配任务分配至第二运算单元的步骤,包括:根据各小核的剩余运算能力,分别计算各小核对待分配任务的小核处理时长,且将小核处理时长小于或等于时长阈值的小核确认为目标小核;将待分配任务分配至任一目标小核上。
第二方面,本申请实施例提供了一种CPU调度装置,该装置包括目标任务分配模块和非目标任务分配模块。其中,目标任务分配模块用于在待分配任务为目标任务的情况下,将待分配任务分配至CPU的第一运算单元,以使第一运算单元执行待分配任务;其中,目标任务包括与画面渲染相关的前景应用任务和系统任务。非目标任务分配模块用于在待分配任务为非目标任务的情况下,将待分配任务分配至CPU的第二运算单元,以使第二运算单元执行待分配任务;其中,第一运算单元的单个核心运算能力强于第二运算单元的单个核心运算能力。
第三方面,本申请实施例提供了一种终端设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:在待分配任务为目标任务的情况下,将待分配任务分配至CPU的第一运算单元,以使第一运算单元执行待分配任务;其中,目标任务包括与画面渲染相关的前景应用任务和系统任务;在待分配任务为非目标任务的情况下,将待分配任务分配至CPU的第二运算单元,以使第二运算单元执行待分配任务,其中,第一运算单元的单个核心运算能力优于第二运算单元的单个核心运算能力。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:在待分配任务为目标任务的情况下,将待分配任务分配至CPU的第一运算单元,以使第一运算单元执行待分配任务;其中,目标任务包括与画面渲染相关的前景应用任务和系统任务;在待分配任务为非目标任务的情况下,将待分配任务分配至CPU的第二运算单元,以使第二运算单元执行待分配任务,其中,第一运算单元的单个核心运算能力优于第二运算单元的单个核心运算能力。
上述CPU调度方法、装置、终端设备和计算机可读存储介质中,若待分配任务为与画面渲染相关的前景应用任务或系统任务,则将待分配任务分配至单个核心运算能力较优的第一运算单元,以使第一运算能力执行待分配任务。若待分配任务为非目标任务,即,待分配任务不属于与画面渲染相关的前景应用任务和系统任务,则将待分配任务分配至单个核心运算能力较弱的第二运算单元,以使第二运算单元执行待分配任务。如此,可令非目标任务被限制在第二运算单元执行,由于非目标任务是对用户感官体验没有直接影响的任务,因此其被分配至第二运算单元执行也不会对用户体验有所影响,还可确保第一运算单元的资源只被目标任务所使用,降低第一运算单元的使用度并减少资源竞争,进而保证目标任务的资源配置,实现CPU资源的合理调度,在高运算能力的运算单元资源不足时,也能通过合理的调度尽可能避免画面卡顿的发生。
附图说明
图1为big.LITTLE架构图;
图2为Snapdragon 735的CPU架构图;
图3为现有技术中CFS任务放置策略的流程示意图;
图4为现有技术中boost任务放置策略的流程示意图;
图5为本申请一个实施例中CPU调度方法流程示意图;
图6为本申请一个实施例中目标任务识别的流程示意图;
图7为本申请一个实施例中任务放置的概念图;
图8为本申请与boost任务放置策略的负载对比图;
图9为本申请一个实施例中将待分配任务分配至第一运算单元的流程示意图;
图10为本申请一个实施例中确定目标处理器核心的流程示意图;
图11为本申请一个实施例中将待分配任务分配至第二运算单元的流程示意图;
图12为一个实施例中CPU调度装置的结构框图;
图13为一个实施例中终端设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
正如背景技术所言,传统技术中高运算能力的运算单元存在资源不足的问题,容易导致显示画面卡顿。经发明人研究发现,导致资源不足的原因在于以下两方面:(1)运算单元的单个核心运算能力不足,在此情况下,虽然存在运算能力相对较高的处理器核心,但该处理器核心的运算能力仍旧不足以支撑高工作量任务(Task)的执行;(2)高运算能力的运算单元数量不足,此时,虽然单个运算单元或者单核处理器核心的运算能力足以支撑高工作量任务的执行,然而受限于其数量,当需要处理的任务较多时,难以满足各个任务的执行需求。
针对前述第(2)种情况,以高通Snapdragon 735系列的CPU为例进行说明。请参阅图2,Snapdragon 735系列的CPU同样是基于big.LITTLE架构来实现,并区分有大小核。具体而言,该CPU主要分为1个大核(最高频率为2.34GHz)、1个中核(最高频率为2.32GHz)和6个小核(最高频率为1.73GHz),其中,中核和大核运算能力强功耗高,小核运算能力和功耗均相对较低。可见,该CPU的中大核资源稀少,任务放置(Task placement)策略和CPU资源的调度结果大大影响了终端设备的响应速度以及用户体验。
为实现任务放置和CPU调度,高通采用CFS(Complete Fair Schedule,完全公平调度)作为一般任务的任务放置策略。请参阅图3,在该策略中,一般按照每个任务的工作量大小来配置相对应的CPU资源。例如任务A的工作量较小,小核、中核和大核都可执行,则优先配置小核。任务B的工作量较大,小核无法满足其执行需求,则优先配置中核,以此类推。
而针对用户在终端上开启应用并滑动手机屏幕浏览内容的场景,高通则采用boost任务放置策略。请参阅图4,有别于前述根据工作量大小配置的策略,对于一些特定的任务,无论小核是否能够执行该任务,boost任务放置策略都将直接为该任务配置中核或大核。如此,通过分配执行速度快的中核和大核,从而可提高任务的执行效率,在画面更新率高的场景下(如滑动画面的场景),可避免画面的FPS(Frame Per Second,每秒传输帧数)下降,进而减少画面卡顿,并提升用户在浏览画面时的性能体验。
其中,特定的任务可以根据cgroup(即Control Groups,控制群组)来区分。cgroup作为Linux的一个核心功能,可用于对各个任务进行区分。通过将每个任务分成不同的cgroup,从而可针对不同的cgroup给予不同的资源(如CPU、内存、磁盘输入输出等)。在终端应用滑动场景中,前景应用所属的任务都被归类到“top-app”的cgroup中,而boost任务放置策略会为这个cgroup下的任务配置CPU中、大核资源来确保画面的流畅度。如图4所示,当某一任务被归类为top-app的cgroup时,CPU会从中核开始挑选,若中核不能满足该任务的执行时,则为将该任务放置到大核上。
然而,针对前述CFS任务放置策略,在按照任务工作量进行CPU资源的调度的同时,并没有考虑到任务的重要程度。有些任务虽然工作量低,但是对实时反应时间的要求高,若由执行效率较低的小核进行执行,将使得终端设备的性能受到影响。而有些任务虽然工作量大,但是实时性要求低,其处理时长对用户而言并不会有直接的影响,若将这种任务放置在中大核执行,则会增加终端设备的功耗。
针对前述boost任务放置策略,由于该策略会将特定cgroup下的全部任务都放置在中大核,容易使中大核的资源发生资源竞争,难以保证该cgroup下实时性要求高的任务均能由中大核进行执行,进而容易发生画面卡顿。同时,当中大核上配置有数量较多的任务时,容易增加中大核的负载和使用度,进一步加剧终端设备的发热问题并增加功耗。
基于此,有必要提供一种能够合理调度CPU资源的CPU调度方法、装置、终端设备和计算机可读存储介质,在高运算能力的运算单元资源不足时,也能通过合理的调度尽可能避免画面卡顿的发生。
需要说明的是,下述各实施例中涉及的“任务”是指一个需要CPU资源执行的单元,例如,一个终端应用开启时,会产生一个进程,而这个进程可以产生出很多线程,每个进程包含其所派生的线程都可以算作一个执行单元。下述各实施例中的“待分配任务”、“目标任务”、“非目标任务”等均可按此理解。
在一个实施例中,如图5所示,提供了一种CPU调度方法,本实施例中以该方法应用于CPU为例进行说明,可以理解,该方法可以应用于CPU控制器件,还可以应用于包括CPU和CPU控制器件的设备或系统上,并通过CPU和CPU控制器件的交互实现。本实施例中,该方法包括以下步骤:
步骤S110,在待分配任务为目标任务的情况下,将待分配任务分配至CPU的第一运算单元,以使第一运算单元执行待分配任务;目标任务包括与画面渲染相关的前景应用任务和系统任务。
其中,待分配任务为当前运行的任务,可通过相对应的处理器核心来执行。需要说明的是,待分配任务可为未分配处理器核心的任务或已分配处理器核心的任务,本申请对此不做具体限制。若某一任务已分配初始处理器核心,当其需要调整执行的处理器核心时,也可将该任务确认为待分配任务。
前景应用任务包括前景应用产生的进程和线程,其中前景应用可为当前显示在显示设备上的应用。例如当前时刻A应用、B应用和C应用均正在运行,且A应用的应用界面正在显示设备上显示,B应用和C应用在后台运行。在此情况下,A应用为前景应用,A应用的主进程及其派生(fork)的线程均属于前景应用任务。系统任务可为操作系统在运行过程中产生的进程或线程,其具体涵盖的任务可根据操作系统的类型来确定,例如安卓系统所对应的系统任务可区别于IOS系统对应的系统任务。目标任务包括直接或间接控制/影响画面渲染的前景应用任务,以及直接或间接控制/影响渲染的系统任务。进一步地,目标任务可包括前景应用进程中负责图形绘制的线程(如RenderThread线程、图像编码的线程和处理OpenGL的线程)、控制/产生该负责图像绘制的线程的进程/线程(如前景应用主线程)以及操作系统中绘制交互界面的线程(如安卓系统的Surfaceflinger线程,以及充当Surfaceflinger线程与GPU间桥梁的HWComposer线程)。
第一运算单元可为一个或多个运算能力强的处理器核心的集合。进一步地,第一运算单元可基于各处理器核心的最高频率来划分,例如将最高频率大于或等于设定频率阈值的处理器核心划分至第一运算单元。或者,按照最高频率的大小进排序,将排名在预设比例内的处理器核心划分至第一运算单元。以前述高通Snapdragon 735系列的CPU为例,第一运算单元可包括大核,也可包括大核和中核。
具体地,在需要确定待分配任务对应的处理器核心时,CPU可首先判断待分配任务是否为目标任务,即判断待分配任务是否为与画面渲染相关的前景应用任务或系统任务。若是,则将待分配任务分配至第一运算单元,以通过运算能力较强的第一运算单元执行待分配任务。如此,可为目标任务优先配置运算能力强的CPU资源,并缩短待分配任务的处理时长,进而确保画面的流畅度。
步骤S120,在所述待分配任务为非目标任务的情况下,将所述待分配任务分配至所述CPU的第二运算单元,以使所述第二运算单元执行所述待分配任务;其中,所述第一运算单元的单个核心运算能力优于所述第二运算单元的单个核心运算能力。
其中,非目标任务为除目标任务外的其余任务,可包括后台应用的应用任务、与画面渲染无关的前景应用任务和与画面渲染无关的系统任务等。第二运算单元可为一个或多个运算能力相对较弱的处理器核心的集合,进一步地,第二运算单元也可基于各处理器核心的最高频率来划分,例如将最高频率小于设定频率阈值的处理器核心划分至第二运算单元。或者,按照最高频率的大小进排序,将排名在预设比例外的处理器核心划分至第二运算单元。以前述高通Snapdragon 735系列的CPU为例,第二运算单元可包括中核和各小核,也可仅包括各小核。
第二运算单元的单个核心运算能力较第一运算单元的单个核心运算能力弱,其中单个核心运算能力是指单个处理器核心在无处理任务情况下的运算能力,即单个处理器核心的总运算能力。进一步地,运算单元的单个核心运算能力可根据该运算单元内各处理器核心运算能力的极值(如最大值、最小值)或均值来确定,本申请对此不做具体限制,只需其可反映该运算单元各处理器核心的运算能力即可。
具体地,当待分配任务即不属于与画面渲染相关的前景应用任务,也不属于与画面渲染相关的系统任务时,可认为待分配任务对用户的感官体验没有直接影响。即使待分配任务的处理时长较长,也不影响用户的体验,也即可认为待分配任务的实时性要求较低,因此可待分配任务分配至第二运算单元,以通过运算能力相对较弱的第二运算单元执行待分配任务。如此,可减少配置在第一运算单元上的任务数量,既减少第一运算单元的使用度并改善资源竞争的问题,从而确保目标任务能够被分配至第一运算单元,避免发生画面卡顿等影响用户体验的情况,又缩短第一运算单元的工作时长,使得其工作电流有所下降,进而降低第一运算单元的温度并实现节省功耗的效果。
上述CPU调度方法中,若待分配任务为与画面渲染相关的前景应用任务或系统任务,则将待分配任务分配至单个核心运算能力较优的第一运算单元,以使第一运算能力执行待分配任务。若待分配任务为非目标任务,即,待分配任务不属于与画面渲染相关的前景应用任务和系统任务,则将待分配任务分配至单个核心运算能力较弱的第二运算单元,以使第二运算单元执行待分配任务。如此,可令非目标任务被限制在第二运算单元执行,由于非目标任务是对用户感官体验没有直接影响的任务,因此其被分配至第二运算单元执行也不会对用户体验有所影响,还可确保第一运算单元的资源只被目标任务所使用,降低第一运算单元的使用度并减少资源竞争,进而保证目标任务的资源配置,实现CPU资源的合理调度,在高运算能力的运算单元资源不足时,也能通过合理的调度尽可能避免画面卡顿的发生。
在一个实施例中,CPU调度方法还包括:检测当前运行的各任务对渲染队列缓冲区的填充行为,并根据检测的结果确定与画面渲染相关的前景应用任务。
具体地,当应用的某个线程需要在显示设备上绘制内容时,该线程可通过libGUI函数库操作,将需要绘制的内容填入绘图的缓冲区(buffer queue),也即填入渲染队列缓冲区。因此通过检测当前运行的各任务对渲染队列缓冲区的填充行为,即可确定当前运行的各任务中哪些任务是负责画面成像的,即哪些任务是与画面渲染相关的应用任务。当该应用任务所属的应用为前景应用时,该任务即为目标任务,可被分配至第一运算单元来执行。
具体而言,CPU可对填充行为进行检测,也可对渲染队列缓冲区的内容进行检测,以得到检测的结果。进一步地,在对填充行为进行检测时,CPU可实时检测针对渲染队列缓冲区的写操作,在检测到写操作对应的函数被调用时,确定调用该函数的线程,以得到检测的结果。而在检测渲染队列缓冲区的内容时,CPU可周期性地对渲染队列缓冲区的内容进行遍历,并分别确定每个内容对应的填入线程,即缓冲区内的各个内容是由哪个线程填入的,并据此得到检测的结果。在得到检测的结果后,CPU可根据该检测结果确定与画面渲染相关的应用任务。另外,CPU可透过系统获取前景应用的进程ID(PID,Process ID),并根据进程ID确定前景应用。在确定前景应用和与画面渲染相关的应用任务后,即可确定与画面渲染相关的前景应用任务。
本实施例中,通过检测当前运行的各任务对渲染队列缓冲区的填充行为,并根据检测的结果确定与画面渲染相关的前景应用任务,从而实现目标任务的自动识别,在前景应用有所变化的情况下也能准确认定目标任务,进而提高目标任务的认定准确性,进一步保证目标任务的资源配置,实现CPU资源的合理调度。
在一个实施例中,如图6所示,根据检测的结果确定与画面渲染相关的前景应用任务的步骤包括:
步骤S210,在检测到当前运行的任务向渲染队列缓冲区填充数据的情况下,标记当前运行的任务,并得到标记后的任务;
步骤S220,从标记后的各任务中确定与画面渲染相关的前景应用任务。
具体地,CPU在检测到某个当前运行的任务正在或曾经向渲染队列缓冲区填充数据的情况下,标记该当前运行的任务。进一步地,在标记的过程中,CPU若检测到该任务已标记,则可结束标记,否则继续标记该任务。若前景应用的应用任务中存在标记后的任务,则该标记后的任务即为与画面渲染相关的前景应用任务。
本实施例中,对于任一个当前运行的任务而言,只要其在生命周期内向渲染队列缓冲区填充数据,CPU就可标记该任务。在标记后,标记可一直跟随任务直至任务被回收,如此可进一步提高目标任务的认定准确性,并保证目标任务的资源配置,实现CPU资源的合理调度。
在一个实施例中,根据检测的结果确定与画面渲染相关的前景应用任务的步骤之后,还包括:采用控制群组对目标任务进行封装。
具体地,可自定义对应的控制群组来对各目标任务进行封装。在一个示例中,自定义控制群组可为Rendering group(以下简称RG群组),RG群组的任务均带有RG属性,RG属性可通过前述标记过程来标记得到。RG群组可包括最影响画面显示流畅性的线程(如RenderThread线程),其他比较弱相关的线程(如图片编码的线程和处理OpenGL的线程)以及与成像流程相关的系统任务(如按照系统中的Surfaceflinger、HWComposer产生的线程)。而前述系统任务在被派生出时就将其识别为RG群组的任务。
以前述高通Snapdragon 735系列的CPU为例,RG群组可如图7所示,其内包括top-app cgroup里带有RG属性的任务,以及系统任务中带有RG属性的任务。若第一运算单元包括大核和中核,第二运算单元包括各个小核,则对于RG群组内的任务可给予配置CPU中大核的保证,其他任务(包括top-app内不带RG属性的任务、不带RG属性的系统任务和后台应用任务等)则可分配至CPU小核来执行,以降低功耗。例如,请参阅图7,任务1和任务2可分别为前景应用的RenderThread线程和UI Thread线程,任务3和任务4分别为系统负责成像的Surfaceflinger线程和HWComposer线程,则对于任务1至任务4可给予配置CPU中大核的保证,以确保显示效能。
从上述示例可以确定,本申请有别于高通的CPU调度策略,通过RG群组/RG属性的识别,将当前运行的各任务分为重要的目标任务(即对用户感官影响较大的任务)以及非重要的非目标任务(即对用户感光体验无影响的任务)两种类别。对于重要的目标任务优先配置中大核的CPU资源,确保画面的流畅度,反之对于非重要的非目标任务则配置小核的CUP资源。
相反地,高通的boost任务策略是将top-app群组下几乎所有的任务都放置中大核,容易造成CPU中大核的资源竞争。对于CPU中、大核核数较少的平台,其性能会有所下降。而本申请经过RG群组对当前运行的任务进行识别后,可有效地限制更重要的目标任务拥有中大核资源,增强画面的流畅度。请参阅图8,图8以高速公路的车流量比喻CPU中、大核的使用度,并示出了本申请与现有技术的负载对比。高通boost任务放置策略加剧CPU中、大核资源的抢占,而本申请着重于保证重要线程优先配置CPU中、大核资源,并排除了非重要线程对中大核资源的抢占,从而可减少了中大核上配置的任务数量,降低中大核的使用度,缩短中大核的工作时间,从而降低中大核的工作电流,令其温度有所下降,进而达到节省功耗的效果。
在一个实施例中,第一运算单元包括多个处理器核心。如图9所示,将待分配任务分配至第一运算单元的步骤,包括:
步骤S310,根据各处理器核心的剩余运算能力确定目标处理器核心;
步骤S320,将待分配任务分配至目标处理器核心,以使目标处理器核心执行待分配任务。
其中,剩余运算能力为处理器核心当前能够使用的运算能力。第一运算单元包括至少两个运算能力强的处理器核心,任意两个处理器核心的最高频率可以相同或不同,例如第一运算单元可包括多个大核,或者包括至少一个大核和至少一个中核。目标处理器核心是指第一运算单元中执行待分配任务的处理器核心。
具体地,在向第一运算单元分配待分配任务时,可先获取或计算第一运算单元中各处理器核心的剩余运算能力,以确定各处理器核心能够用于执行待分配任务的运算能力,并据此确定目标处理器核心。进一步地,CPU可根据各处理器核心的剩余运算能力,随机、按照预设次序或按照预设算法从各处理器核心中确定目标处理器核心。在确定目标处理器核心后,CPU将待分配任务分配至目标处理器核心,以使目标处理器核心执行待分配任务。
在一个实施例中,处理器核心为中核或大核,其中,中核的数量为至少一个,大核的数量为至少一个。请参阅图10,根据各处理器核心的剩余运算能力确定目标处理器核心的步骤,包括:
步骤S410,根据中核的剩余运算能力计算待分配任务的中核处理时长;
步骤S420,在中核处理时长小于或等于时长阈值的情况下,将中核确定为目标处理器核心,否则将大核确定为目标处理器核心。
具体地,第一运算单元中可同时包括至少一个中核和至少一个大核。在确定目标处理器核心时,CPU可根据中核的剩余运算能力计算中核执行待分配任务的处理时长,即中核处理时长。若中核处理时长小于或等于时长阈值,则可确定中核能够满足待分配任务的实时性要求,并优先为待分配任务配置中核。若中核处理时长大于时长阈值,则认为中核不能满足待分配任务的实时性要求,并将待分配任务分配至运算能力更强的大核进行处理。如此,可优先为待分配任务配置中核,在不影响画面流畅性的前提下节省功耗。
在一个实施例中,第二运算单元包括多个小核。请参阅图11,将待分配任务分配至第二运算单元的步骤,包括:
步骤S510,根据各小核的剩余运算能力,分别计算各小核对待分配任务的小核处理时长,且将小核处理时长小于或等于时长阈值的小核确认为目标小核;
步骤S520,将待分配任务分配至任一目标小核。
具体地,第二运算单元包括多个运算能力较弱的小核。在向第二运算单元分配待分配任务时,可先获取或计算各个小核的剩余运算能力,并根据各小核的剩余运算能力计算各个小核执行待分配任务的处理时长,以得到各小核处理时长。对于每一个小核处理时长,将其与时长阈值进行比较,若该小核处理时长小于或等于时长阈值,则将该小核处理时长所对应的小核确认为目标小核。目标小核的数量可以为一个或者多个,当目标小核的数量为多个时,可将待分配任务分配至任意一个目标小核上,以使该目标小核执行待分配任务。进一步地,CPU可随机将待分配任务分配至任一目标小核上,也可按照预设的次序或预设的算法进行分配,本申请对此不作具体限制,只需执行待分配任务的小核能够满足待分配任务的实时性要求即可。
本实施例中,通过根据各小核的剩余运算能力,分别计算各小核对待分配任务的小核处理时长,并将小核处理时长小于或等于时长阈值的小核确认为目标小核,然后将待分配任务分配至任一目标小核,在避免非目标任务抢占第一运算单元资源的基础上,可尽可能提高非目标任务的处理效率。
应该理解的是,虽然图1-11的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-11中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图12所示,提供了一种CPU调度装置600,包括:目标任务分配模块610和非目标任务分配模块620,其中:
目标任务分配模块610,用于在待分配任务为目标任务的情况下,将待分配任务分配至CPU的第一运算单元,以使第一运算单元执行待分配任务;目标任务包括与画面渲染相关的前景应用任务和系统任务。
非目标任务分配模块620,用于在待分配任务为非目标任务的情况下,将待分配任务分配至CPU的第二运算单元,以使第二运算单元执行待分配任务;其中,第一运算单元的单个核心运算能力优于第二运算单元的单个核心运算能力。
在一个实施例中,CPU调度装置600还包括目标任务识别模块。目标任务识别模块用于检测当前运行的各任务对渲染队列缓冲区的填充行为,并根据检测的结果确定与画面渲染相关的前景应用任务。
在一个实施例中,目标任务识别模块包括标记单元,标记单元用于在检测到当前运行的任务向渲染队列缓冲区填充数据的情况下,标记当前运行的任务,并得到标记后的各任务;还用于从标记后的各任务中确定与画面渲染相关的前景应用任务。
在一个实施例中,目标任务识别模块还包括封装单元,封装单元用于采用控制群组对目标任务进行封装。
在一个实施例中,第一运算单元包括多个处理器核心。目标任务分配模块610包括目标处理器核心确认单元和第一分配单元。其中目标处理器核心确认单元用于根据各处理器核心的剩余运算能力确定目标处理器核心。第一分配单元用于将待分配任务分配至目标处理器核心,以使目标处理器核心执行待分配任务。
在一个实施例中,处理器核心为中核或大核,中核的数量为至少一个,大核的数量为至少一个。目标处理器核心确认单元包括第一时长计算单元和比较单元。其中,第一时长计算单元用于根据中核的剩余运算能力计算待分配任务的中核处理时长。比较单元用于在中核处理时长小于或等于时长阈值的情况下,将中核确定为目标处理器核心,否则,将大核确定为目标处理器核心
在一个实施例中,非目标任务分配模块620包括第二时长计算单元和第二分配单元。其中,第二时长计算单元用于根据各小核的剩余运算能力,分别计算各小核对待分配任务的小核处理时长,且将小核处理时长小于或等于时长阈值的小核确认为目标小核;第二分配单元用于将待分配任务分配至任一目标小核。
关于CPU调度装置的具体限定可以参见上文中对于CPU调度方法的限定,在此不再赘述。上述CPU调度装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种终端设备,该终端设备可以为具备显示功能的设备,包括但不局限于车用电脑、车用显示设备、个人计算机、笔记本电脑、智能手机、平板电脑、便携式可穿戴设备、车用电脑和物联网(Internet of Things,IoT)设备,其内部结构图可以如图13所示。该终端设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该终端设备的处理器用于提供计算和控制能力。该终端设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该终端设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种CPU调度方法。该终端设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该终端设备的输入装置可以是显示屏上覆盖的触摸层,也可以是终端设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端设备的限定,具体的终端设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种终端设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
在待分配任务为目标任务的情况下,将待分配任务分配至CPU的第一运算单元,以使第一运算单元执行待分配任务;目标任务包括与画面渲染相关的前景应用任务和系统任务;
在待分配任务为非目标任务的情况下,将待分配任务分配至CPU的第二运算单元,以使第二运算单元执行待分配任务;
其中,第一运算单元的单个核心运算能力优于第二运算单元的单个核心运算能力。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:检测当前运行的各任务对渲染队列缓冲区的填充行为,并根据检测的结果确定与画面渲染相关的前景应用任务。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在检测到当前运行的任务向渲染队列缓冲区填充数据的情况下,标记当前运行的任务,并得到标记后的各任务;从标记后的各任务中确定与画面渲染相关的前景应用任务。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:采用控制群组对目标任务进行封装。
在一个实施例中,第一运算单元包括多个处理器核心。处理器执行计算机程序时还实现以下步骤:根据各处理器核心的剩余运算能力确定目标处理器核心;将待分配任务分配至目标处理器核心,以使目标处理器核心执行待分配任务。
在一个实施例中,处理器核心为中核或大核,中核的数量为至少一个,大核的数量为至少一个。处理器执行计算机程序时还实现以下步骤:根据中核的剩余运算能力计算待分配任务的中核处理时长;在中核处理时长小于或等于时长阈值的情况下,将中核确定为目标处理器核心,否则,将大核确定为目标处理器核心。
在一个实施例中,第二运算单元包括多个小核。处理器执行计算机程序时还实现以下步骤:根据各小核的剩余运算能力,分别计算各小核对待分配任务的小核处理时长,且将小核处理时长小于或等于时长阈值的小核确认为目标小核;将待分配任务分配至任一目标小核。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
在待分配任务为目标任务的情况下,将待分配任务分配至CPU的第一运算单元,以使第一运算单元执行待分配任务;目标任务包括与画面渲染相关的前景应用任务和系统任务;
在待分配任务为非目标任务的情况下,将待分配任务分配至CPU的第二运算单元,以使第二运算单元执行待分配任务;
其中,第一运算单元的单个核心运算能力优于第二运算单元的单个核心运算能力。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:检测当前运行的各任务对渲染队列缓冲区的填充行为,并根据检测的结果确定与画面渲染相关的前景应用任务。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在检测到当前运行的任务向渲染队列缓冲区填充数据的情况下,标记当前运行的任务,并得到标记后的各任务;从标记后的各任务中确定与画面渲染相关的前景应用任务。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:采用控制群组对目标任务进行封装。
在一个实施例中,第一运算单元包括多个处理器核心。计算机程序被处理器执行时还实现以下步骤:根据各处理器核心的剩余运算能力确定目标处理器核心;将待分配任务分配至目标处理器核心,以使目标处理器核心执行待分配任务。
在一个实施例中,处理器核心为中核或大核,中核的数量为至少一个,大核的数量为至少一个。计算机程序被处理器执行时还实现以下步骤:根据中核的剩余运算能力计算待分配任务的中核处理时长;在中核处理时长小于或等于时长阈值的情况下,将中核确定为目标处理器核心,否则,将大核确定为目标处理器核心。
在一个实施例中,第二运算单元包括多个小核。计算机程序被处理器执行时还实现以下步骤:根据各小核的剩余运算能力,分别计算各小核对待分配任务的小核处理时长,且将小核处理时长小于或等于时长阈值的小核确认为目标小核;将待分配任务分配至任一目标小核。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种CPU调度方法,其特征在于,所述方法包括:
在待分配任务为目标任务的情况下,将所述待分配任务分配至CPU的第一运算单元,以使所述第一运算单元执行所述待分配任务;所述目标任务包括与画面渲染相关的前景应用任务和系统任务;
在所述待分配任务为非目标任务的情况下,将所述待分配任务分配至所述CPU的第二运算单元,以使所述第二运算单元执行所述待分配任务;
其中,所述第一运算单元的单个核心运算能力优于所述第二运算单元的单个核心运算能力。
2.根据权利要求1所述的CPU调度方法,其特征在于,所述方法还包括:
检测当前运行的各任务对渲染队列缓冲区的填充行为,并根据所述检测的结果确定所述与画面渲染相关的前景应用任务。
3.根据权利要求2所述的CPU调度方法,其特征在于,根据所述检测的结果确定所述与画面渲染相关的前景应用任务的步骤,包括:
在检测到所述当前运行的任务向所述渲染队列缓冲区填充数据的情况下,标记所述当前运行的任务,并得到标记后的各任务;
从所述标记后的各任务中确定所述与画面渲染相关的前景应用任务。
4.根据权利要求2或3所述的CPU调度方法,其特征在于,根据所述检测的结果确定所述与画面渲染相关的前景应用任务的步骤之后,还包括:
采用控制群组对所述目标任务进行封装。
5.根据权利要求1所述的CPU调度方法,其特征在于,所述第一运算单元包括多个处理器核心;
将所述待分配任务分配至第一运算单元的步骤,包括:
根据各所述处理器核心的剩余运算能力确定目标处理器核心;
将所述待分配任务分配至所述目标处理器核心,以使所述目标处理器核心执行所述待分配任务。
6.根据权利要求5所述的CPU调度方法,其特征在于,所述处理器核心为中核或大核,所述中核的数量为至少一个,所述大核的数量为至少一个;
根据各所述处理器核心的剩余运算能力确定目标处理器核心的步骤,包括:
根据所述中核的剩余运算能力计算所述待分配任务的中核处理时长;
在所述中核处理时长小于或等于时长阈值的情况下,将所述中核确定为所述目标处理器核心,否则,将所述大核确定为所述目标处理器核心。
7.根据权利要求1至3、5至6任一项所述的CPU调度方法,其特征在于,所述第二运算单元包括多个小核;
将所述待分配任务分配至第二运算单元的步骤,包括:
根据各所述小核的剩余运算能力,分别计算各所述小核对所述待分配任务的小核处理时长,且将所述小核处理时长小于或等于时长阈值的小核确认为目标小核;
将所述待分配任务分配至任一所述目标小核。
8.一种CPU调度装置,其特征在于,所述装置包括:
目标任务分配模块,用于在待分配任务为所述目标任务的情况下,将所述待分配任务分配至CPU的第一运算单元,以使所述第一运算单元执行所述待分配任务;所述目标任务包括与画面渲染相关的前景应用任务和系统任务;
非目标任务分配模块,用于在所述待分配任务为非目标任务的情况下,将所述待分配任务分配至所述CPU的第二运算单元,以使所述第二运算单元执行所述待分配任务;其中,所述第一运算单元的单个核心运算能力优于所述第二运算单元的单个核心运算能力。
9.一种终端设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110254947.5A CN115048209A (zh) | 2021-03-09 | 2021-03-09 | Cpu调度方法、装置、终端设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110254947.5A CN115048209A (zh) | 2021-03-09 | 2021-03-09 | Cpu调度方法、装置、终端设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115048209A true CN115048209A (zh) | 2022-09-13 |
Family
ID=83156360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110254947.5A Pending CN115048209A (zh) | 2021-03-09 | 2021-03-09 | Cpu调度方法、装置、终端设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115048209A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737346A (zh) * | 2023-08-14 | 2023-09-12 | 南京翼辉信息技术有限公司 | 一种大小核处理器调度配置系统及其实现方法 |
CN117793525A (zh) * | 2024-02-28 | 2024-03-29 | 荣耀终端有限公司 | 图像处理方法、可读介质、电子设备及程序产品 |
-
2021
- 2021-03-09 CN CN202110254947.5A patent/CN115048209A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737346A (zh) * | 2023-08-14 | 2023-09-12 | 南京翼辉信息技术有限公司 | 一种大小核处理器调度配置系统及其实现方法 |
CN116737346B (zh) * | 2023-08-14 | 2023-10-24 | 南京翼辉信息技术有限公司 | 一种大小核处理器调度配置系统及其实现方法 |
CN117793525A (zh) * | 2024-02-28 | 2024-03-29 | 荣耀终端有限公司 | 图像处理方法、可读介质、电子设备及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628216B2 (en) | I/O request scheduling method and apparatus by adjusting queue depth associated with storage device based on hige or low priority status | |
CN108509260B (zh) | 线程识别处理方法、装置、计算机设备和存储介质 | |
US11360817B2 (en) | Method and terminal for allocating system resource to application | |
US9946563B2 (en) | Batch scheduler management of virtual machines | |
CN107430549B (zh) | 基于联合的存储器管理 | |
US9619378B2 (en) | Dynamically optimizing memory allocation across virtual machines | |
KR102490908B1 (ko) | 자원 스케줄링 방법 및 단말 장치 | |
CN108549574B (zh) | 线程调度管理方法、装置、计算机设备和存储介质 | |
US11321808B2 (en) | Modifying processing of commands in a command queue based on subsequently received data | |
CN115048209A (zh) | Cpu调度方法、装置、终端设备和存储介质 | |
EP2772854B1 (en) | Regulation method and regulation device for i/o channels in virtualization platform | |
CN111831414A (zh) | 线程迁移方法、装置、存储介质及电子设备 | |
KR102052964B1 (ko) | 컴퓨팅 스케줄링 방법 및 시스템 | |
US11521042B2 (en) | System and method to dynamically and automatically sharing resources of coprocessor AI accelerators | |
CN115756866A (zh) | 负载均衡方法、装置及存储介质 | |
US20220100543A1 (en) | Feedback mechanism for improved bandwidth and performance in virtual environment usecases | |
CN112130977B (zh) | 一种任务调度方法、装置、设备及介质 | |
CN110471765B (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN113805941A (zh) | 通过替换指令集对应用软件进行加速的系统及方法 | |
CN112114967A (zh) | 一种基于服务优先级的gpu资源预留方法 | |
US10360652B2 (en) | Wavefront resource virtualization | |
JP5713973B2 (ja) | 情報処理装置および並列処理方法 | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
CN113138909A (zh) | 负载统计方法、装置、存储介质及电子设备 | |
CN113282383A (zh) | 任务调度方法、任务处理方法及相关产品 |
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 |