CN104460934A - 多cpu调度方法及装置 - Google Patents
多cpu调度方法及装置 Download PDFInfo
- Publication number
- CN104460934A CN104460934A CN201310419550.2A CN201310419550A CN104460934A CN 104460934 A CN104460934 A CN 104460934A CN 201310419550 A CN201310419550 A CN 201310419550A CN 104460934 A CN104460934 A CN 104460934A
- Authority
- CN
- China
- Prior art keywords
- cpu
- time
- thread
- drawing thread
- frequency
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
Abstract
本发明提供一种多CPU调度方法及装置,其中,多CPU调度方法通过获取M个绘图线程中的一个绘图线程以及N个运行的CPU中的一个CPU,其中M为大于0的整数,N为大于0的整数,将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理。在不影响系统性能的前提下,充分利用了各个CPU的资源,降低了多CPU的功耗。
Description
技术领域
本发明涉及通信技术,尤其涉及一种多CPU调度方法及装置
背景技术
随着中央处理器CPU技术的不断发展,多处理器技术,例如,对称多处理器(Symmetrical Multi-Processing,简称:SMP)技术的应用也越来越普及。目前许多终端均采用了多处理器技术,现有终端多处理器处理的线程中,图像绘制线程作为终端的多处理器主要处理的一类线程,对多处理器的功耗有很大影响。
在实际情况中,一条绘图线程可能在不同的CPU上跳变,从而导致该绘图线程可能受到各个CPU上的其他线程的影响,使得调度不均,可能增大多处理器的整体功耗。
发明内容
本发明实施例提供一种多CPU调度方法,使得一个绘图线程在一个运行的CPU上处理,可以降低多CPU功耗。
本发明实施例的第一方面是提供一种多CPU调度方法,包括:
获取M个绘图线程中的一个绘图线程以及N个运行的CPU中的一个CPU,其中M为大于0的整数,N为大于0的整数;
将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理。
结合第一方面,在第一种可能的实现方式中,获取M个绘图线程的其他M-1个绘图线程以及N个运行的CPU的其他N-1个CPU;
当所述M-1小于所述N-1时,则将所述M-1个绘图线程一对一的绑定在M-1个运行的CPU上处理;或者
当所述M-1等于所述N-1时,将所述M-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理;或者
当所述M-1大于所述N-1时,将N-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理,将M-N个绘图线程绑定在所述N-1个运行的CPU上的M-N个CPU上处理。
结合第一方面以及第一方面的第一种可能的实现方式,在第二种可能的实现方式中,
获取CPU占用率大于阈值的所述M个绘图线程中的一个绘图线程和/或所述M个绘图线程的其他M-1个绘图线程。
结合第一方面的第一种可能的实现方式以及第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述方法还包括:
获取所述M个绘图线程的绘图时间,并对所述M个绘图时间进行比较,获取其中的最大绘图时间;
将所述最大绘图时间与时间阈值进行比较,根据比较结果调整所述N个运行的CPU的频率。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述将所述最大绘图时间与时间阈值进行比较,包括:
若所述最大绘图时间小于所述时间阈值,则获取估算绘图时间;
所述估算绘图时间为所述N个运行的CPU的频率降低后,所述绘图线程的绘图时间;
将所述估算绘图时间与屏幕刷新时间进行比较,若所述估算绘图时间小于所述屏幕刷新时间,则将所述N个运行的CPU的频率降低。
结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,所述将所述最大绘图时间与时间阈值进行比较,包括:
若所述最大绘图时间大于所述时间阈值,则将所述最大绘图时间与屏幕刷新时间比较;
若所述最大绘图时间大于所述屏幕刷新时间,则将所述N个运行的CPU的频率调高。
本发明实施例的第二方面是提供一种多CPU调度装置,包括:
获取模块,用于获取M个绘图线程中的一个绘图线程以及N个运行的CPU中的一个CPU,其中M为大于0的整数,N为大于0的整数;
绑定模块,用于将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理。
结合第二方面,在第一种可能的实现方式中,所述获取模块,用于获取M个绘图线程的其他M-1个绘图线程以及N个运行的CPU的其他N-1个CPU;
所述绑定模块,用于:
当所述M-1小于所述N-1时,则将所述M-1个绘图线程一对一的绑定在M-1个运行的CPU上处理;或者
当所述M-1等于所述N-1时,将所述M-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理;或者
当所述M-1大于所述N-1时,将N-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理,将M-N个绘图线程绑定在所述N-1个运行的CPU上的M-N个CPU上处理。
结合第二方面以及第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述获取模块,用于:获取CPU占用率大于阈值的所述M个绘图线程中的一个绘图线程和/或所述M个绘图线程的其他M-1个绘图线程。
结合第二方面的第一种可能的实现方式以及第二方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:
最大绘图时间获取模块,用于获取所述M个绘图线程的绘图时间,并对所述M个绘图时间进行比较,获取其中的最大绘图时间;
比较模块,用于将所述最大绘图时间与时间阈值进行比较,根据比较结果调整所述N个运行的CPU的频率。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述比较模块,用于若所述最大绘图时间小于所述时间阈值,则获取估算绘图时间;
所述估算绘图时间为所述N个运行的CPU的频率降低后,所述绘图线程的绘图时间;
所述比较模块,用于将所述估算绘图时间与屏幕刷新时间进行比较;
调节模块,用于若所述估算绘图时间小于所述屏幕刷新时间,则将所述N个运行的CPU的频率降低。
结合第二方面的第三种可能的实现方式,在第五种可能的实现方式中,所述比较模块,用于若所述最大绘图时间大于所述时间阈值,则将所述最大绘图时间与屏幕刷新时间比较;
所述调节模块,用于若所述最大绘图时间大于所述屏幕刷新时间,则将所述N个运行的CPU的频率调高。
本发明实施例提供的多CPU调度方法,通过获取M个绘图线程中的一个绘图线程以及N个运行的CPU中的一个CPU,将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理。在不影响系统性能的前提下,充分利用了各个CPU的资源,可以防止绘图线程在各个CPU之间跳变,降低了多CPU的功耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的多CPU调度方法的流程示意图;
图2a为现有技术多CPU调度示意图;
图2b为本发明提供的实施例一以及实施例二多CPU调度方法的效果示意图;
图3为提供的实施例一以及实施例二的多CPU调度方法的流程示意图;
图4为本发明实施例二提供的多CPU调度方法的CPU占用率示意图;
图5为本发明实施例三提供的多CPU调频方法流程示意图;
图6为本发明提供的实施例二及实施例三中多CPU调度方法的一种可行的实现方式的效果示意图;
图7为本发明提供的实施例二及实施例三中多CPU调度方法的一种可行的实现方式的对比示意图;
图8为本发明实施例四提供的多CPU调度装置结构示意图;
图9为本发明实施例五提供的多CPU调度装置结构示意图;
图10为本发明实施例六提供的终端结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着终端设备的发展,终端设备的CPU需要运行越来越多的程序,程序运行的过程称为进程,并且一个进程中可以包含一个或者多个线程,其中线程是操作系统能够进行运算调度的最小单位,是进程中的实际运作单位。一个标准的线程由线程ID,当前指令指针,寄存器集合和堆栈组成。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。每一个程序都至少有一个线程,若程序只有一个线程,则该线程就是程序本身。在CPU处理的诸多线程中,与图像处理相关的绘图线程对于终端设备中的CPU频率具有非常明显的影响,人类眼睛存在视觉暂留,如果画面帧率高于60fps,就会认为画面是连贯的,大多数处理图形的CPU刷新画面的次数为每秒60次,则其屏幕刷新一次的时间,即屏幕刷新时间为1÷60=16.6ms,所以终端设备的CPU在处理绘图线程时,每次只要在屏幕刷新时间16.6ms前绘制完图像,用户在观看该图像时就不会有卡顿的感觉。绘图线程的图像绘制时间长短主要由CPU频率大小决定的,而大多数终端设备的CPU频率都会比实际工作需要的频率大,因此,在具有多CPU的终端设备中对于需要处理绘图线程的CPU来说,其需要较大的频率来完成绘图线程的处理,而对于没有处理绘图线程的CPU,该CPU处理的其他线程对CPU频率的要求不高,因此不处理绘图线程的CPU就会有很多的空闲时间。本发明的各个实施例就是基于上述绘图线程的特性,提供一种多CPU调度方法及装置,下面通过下文中的各个实施例对于本发明的技术方案进行说明。
图1为本发明实施例一提供的多CPU调度方法的流程示意图,需要说明的是实施例一的执行主体可以是任意一种具有多处理器,例如对称多处理器(Symmetrical Multi-Processing,简称:SMP),并且可以对图像进行处理的终端设备,例如,智能手机、平板电脑等。具体的,对于一个具有多处理器的终端设备,多CPU调度方法的执行主体可以为该终端设备的多个CPU中的一个CPU,具体可以根据CPU调度程序来决定。例如,大多数的CPU操作系统中都会根据进程的优先级、进程的CPU亲和性等进行CPU调度,CPU调度程序在执行时即为CPU调度进程,有些操作系统将CPU调度进程绑定在CPU_0上,也有些操作系统默认CPU调度进程可在所有的CPU上进行运算。其中,CPU亲和性即可以将线程绑定在多CPU中某个指定的CPU上尽量长时间运行,使该线程不在各个CPU之间进行跳变。CPU调度进程的其中一条依据就是进程的CPU亲和性。具体的,可以通过CPU亲和性掩码来实现对一个进程的CPU亲和性的设置,利用一个进程的进程识别符(ProcessIdentifier,简称:PID),将该PID对应的进程绑定在特定的CPU上,若该进程此时不在该特定的CPU上,则将该进程迁移到该特定的CPU上,实现根据CPU亲和性将进程绑定在CPU上的操作。例如,根据PID将CPU调度进程的CPU亲和性设置为CPU_0,那么CPU调度进程就只在CPU_0上运算;若是CPU调度进程的CPU亲和性默认为是所有的CPU,那么CPU调度进程也同其它线程一样参与调度,可在所有的CPU上进行迁移运算。本发明下述实施例中的多CPU调度方法即通过该CPU调度进程实现,终端设备也会给它分配PID,该CPU调度进程最初的CPU亲和性默认是所有的CPU。进一步的,本发明下述实施例中涉及的有关CPU频率调节的实施例是通过CPU调频程序实现的,该CPU调频程序在执行时即为CPU调频进程,该CPU调频进程同样也参与CPU调度。所以在CPU执行过程中,该CPU调频进程也会根据CPU调度进程的调度结果在相应的CPU上进行运算。若是CPU调频进程设置自身的CPU亲和性为CPU_0,那么CPU调度进程就会将CPU调频进程调度到CPU_0上,即CPU调频进程由CPU_0进行处理。
下面参照图1,一种多CPU调度方法,包括:
步骤100、获取M个绘图线程中的一个绘图线程以及N个运行的CPU中的一个CPU,其中M为大于0的整数,N为大于0的整数。
需要说明的是,如上文所述,当一个绘图程序在执行时即为绘图进程,而绘图进程的实际运作单位为绘图线程,对于CPU处理的线程,当某一线程调用终端设备存储的与绘图相关的函数时,就可以确定该线程为绘图线程,进一步的,通过获取绘图线程的PID来获取绘图线程的个数M。而对于运行的CPU个数N,可以通过预先设定的程序来获取运行的CPU个数N,此处对于具体的程序不做限定。其中,运行的CPU可以是正在处理线程的CPU或者允许处理线程的CPU。例如,对于一个具有四个CPU(CPU_0、CPU_1、CPU_2、CPU_3)的终端,可以通过操作系统对该终端进行设置来规定具体运行的CPU数量,例如,设置CPU_2、CPU_3不工作,即不处理该终端需要处理的进程,而仅由CPU_0、CPU_1来处理进程,则对于该终端来说,运行的CPU为CPU_0、CPU_1,其个数为2。
步骤101、将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理。
其中,可以通过设置绘图线程的CPU亲和性实现将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理的方案。具体可以利用该绘图线程的PID,将该绘图线程绑定在特定的CPU上,若该绘图线程此时不在该特定的CPU上,则将该绘图线程迁移到该特定的CPU上,实现根据CPU亲和性将进程绑定在CPU上的操作。例如,根据M个绘图线程中的一个绘图线程的PID将该绘图线程的CPU亲和性设置为CPU_0,那么该绘图线程就只在CPU_0上运算。
进一步的,对于将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理,下面通过具体的例子进行说明,例如,当绘图线程个数为2,即有绘图线程1以及绘图线程2,运行的CPU个数为4,其中包括CPU_0、CPU_1、CPU_2、CPU_3时,通过将绘图线程1的CPU亲和性设置为CPU_0,将绘图线程1绑定在CPU_0上,即实现了将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理的方案。从而保证其他非绘图线程不会影响CPU_0处理绘图线程1,并且绘图线程1也不会在不同的CPU之间进行迁移,从而降低了由于绘图线程1不绑定在不同CPU之间迁移造成的额外功耗。
本发明实施例提供的多CPU调度方法,通过获取M个绘图线程中的一个绘图线程以及N个运行的CPU中的一个CPU,其中M为大于0的整数,N为大于0的整数,将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理。在不影响系统性能的前提下,避免绘图线程在多个运行的CPU上迁移造成额外功耗,进而降低了多CPU整体的功耗。
进一步的,在针对上述获取M个绘图线程中的一个绘图线程进行相应的绑定处理之后,或,在针对上述获取M个绘图线程中的一个绘图线程进行相应的绑定处理时,还可以对剩余M-1个绘图线程进行类似的绑定处理,下面通过实施例二对剩余M-1个绘图线程的绑定方法进行说明:
首先,获取M个绘图线程的其他M-1个绘图线程以及N个运行的CPU的其他N-1个CPU。将M-1与N-1进行比较,根据比较结果,可以分为以下至少三种情况进行具体的操作:
情况一:当所述M-1小于所述N-1时,则将所述M-1个绘图线程一对一的绑定在M-1个运行的CPU上处理;或者
情况二:当所述M-1等于所述N-1时,将所述M-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理;或者
情况三:当所述M-1大于所述N-1时,将N-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理,将M-N个绘图线程绑定在所述N-1个运行的CPU上的M-N个CPU上处理。
进一步的,针对情况一,例如绘图线程个数为2,即有绘图线程1以及绘图线程2,运行的CPU个数为4,其中包括CPU_0、CPU_1、CPU_2、CPU_3,当其中一个绘图线程1已经绑定在CPU_0后,此时M-1=1,N-1=3,显然M-1小于N-1,则将绘图线程2绑定在CPU_1、CPU_2、CPU_3中的任意一个上,并且,假如将绘图线程2绑定在CPU_1,优选的,将其他非绘图线程的CPU亲和性设置为CPU_2或CPU_3,即其他非绘图线程可在CPU_2或CPU_3上进行处理,这样的好处在于避免其他非绘图线程迁移到CPU_1上,避免影响CPU_1处理绘图线程2,从而在整体上降低多个运行的CPU功耗。
针对情况二,例如绘图线程个数为4,即有绘图线程1、绘图线程2、绘图线程3、绘图线程4,运行的CPU个数为4,其中包括CPU_0、CPU_1、CPU_2、CPU_3,当其中一个绘图线程1已经绑定在CPU_0后,此时M-1=3,N-1=3,显然M-1等于N-1,则将绘图线程2绑定在CPU_1上,将绘图线程3绑定在CPU_2上,将绘图线程4绑定在CPU_3上,从而将所有绘图线程一对一地绑定在所有运行的CPU上,使得各个运行的CPU的功耗均衡,从而在整体上降低了多个运行的CPU的功耗,而其他非绘图线程根据其最初的CPU亲和性,在相应的CPU上进行处理,或者也可以在不同的CPU之间进行迁移,此处不做限定。
针对情况三,例如绘图线程个数为4,即有绘图线程1、绘图线程2、绘图线程3、绘图线程4,运行的CPU个数为2,其中包括CPU_0、CPU_1,当其中一个绘图线程1已经绑定在CPU_0后,此时M-1=3,N-1=1,显然M-1大于N-1,则此时将绘图线程2、绘图线程3、绘图线程4中的任意一个绘图线程绑定在CPU_1上,例如将绘图线程2绑定在CPU_1上,而绘图线程3、绘图线程4以及其他非绘图线程根据其最初的CPU亲和性,在相应的CPU上进行处理,此处不做限定。
请参阅图2a,图2a为现有技术多CPU调度示意图,如图2a所示,现有技术中,终端设备通过线程调度将线程在多个CPU之间进行迁移来实现CPU占用率的均衡,但是采用现有技术线程迁移的方案并不能有效的实现CPU占用率的均衡,并且当CPU的工作负荷较重时,多次的迁移线程会更加增大CPU的工作负荷,CPU的缓存利用率也会降低。
图2b为本发明提供的实施例一以及实施例二多CPU调度方法的效果示意图,如图2b所示,根据绘图线程的个数M以及运行的CPU个数N,将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理。终端设备在进行线程调度时,绘图线程不会在多个CPU之间进行迁移,进一步的,获取M个绘图线程的其他M-1个绘图线程以及N个运行的CPU的其他N-1个CPU,并对该其他M-1个绘图线程进行绑定,从而实现对M个绘图线程的绑定方案。例如,图2b中线程号为:1、2、3、4的四个绘图线程。在进行线程调度之后,该四个绘图线程均未发生迁移,这样使得对CPU频率影响较大的绘图线程能够均衡的分配在不同的CPU上,保证了一个CPU不受绑定在其他CPU上的绘图线程的影响,对于每一个CPU上被绑定的绘图线程,CPU对于其上绑定的绘图线程处理更加高效。进一步的,当每一个CPU都采用本发明实施例的方案对绘图线程进行绑定处理后,终端设备的多CPU整体的频率需求就能够进行下调,这样可以降低终端设备的功耗。
优选的,对于实施例一及实施例二中绘图线程个数M的一种可能的确定方式为:获取CPU占用率大于阈值的所述M个绘图线程中的一个绘图线程和/或所述M个绘图线程的其他M-1个绘图线程。例如,当前多CPU总共处理7个绘图线程,而其中CPU占用率大于阈值的绘图线程个数为4个,则M为4。
进一步的,图3为提供的实施例一以及实施例二的多CPU调度方法的流程示意图。在终端设备不断更新画面时,绘图线程就会变得繁重,而决定是否要进行CPU频率调整的条件可以是任务的繁重程度。因此,可以通过得到绘图线程的CPU占用率从而确定线程繁重程度。当发现有绘图线程的CPU占用率从大于CPU占用率阈值变(简称:阈值)成小于CPU占用率阈值(简称:阈值),或,是从小于CPU占用率阈值变成大于CPU占用率阈值时,则获取CPU占用率大于阈值的绘图线程的个数以及运行的CPU个数。其一种优选的实现方式为:当发现有绘图线程的CPU占用率从大于CPU占用率阈值变成小于CPU占用率阈值,或,是从小于CPU占用率阈值变成大于CPU占用率阈值时,对发生上述两种情况的绘图线程添加标识,通过该标识确定大于阈值的绘图线程的个数M。并且,阈值为一预先设置的小数,由于不同的终端设备所使用的CPU型号以及操作系统不尽相同,因此对于该阈值的具体数值可以根据不同的CPU型号以及操作系统进行设置,此处不予限定。
下面参照图3,对根据绘图线程的CPU占用率实现每一个绘图线程一对一地绑定在每一CPU上进行处理的方案进行详细说明,其中,对于一个具有多处理器的终端设备,多CPU调度方法的执行主体可以为该终端设备的多个CPU中的一个CPU,具体可以根据CPU调度程序来决定。针对图1中的步骤100,其一种可行的实现方式包括:
步骤100a、若有绘图线程的CPU占用率从小于阈值变为大于阈值,或者,绘图线程的CPU占用率从大于阈值变为小于阈值,则获取CPU占用率大于阈值的所述M个绘图线程中的一个绘图线程和/或所述M个绘图线程的其他M-1个绘图线程以及N个运行的CPU。
具体的,计算所有绘图线程的CPU占用率;将所有绘图线程的CPU占用率与阈值进行比较,当发生有绘图线程的CPU占用率从小于阈值变为大于阈值,或者,绘图线程的CPU占用率从大于阈值变为小于阈值这一触发条件时,则获取CPU占用率大于阈值的绘图线程的个数M以及运行的CPU个数N的操作,进一步的,已经将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理后,则将对获得的M减1。
优选的,若K个绘图线程的CPU占用率从大于阈值变为小于阈值,则将绘图线程个数M减K,根据M-K个绘图线程确定绘图线程绑定策略;或者,若K个绘图线程的CPU占用率从小于阈值变为大于阈值,则将绘图线程个数M加K,根据M+K个绘图线程确定绘图线程绑定策略。需要说明的是,K值为大于等于零的整数,并且若K个绘图线程的CPU占用率从大于阈值变为小于阈值时,该K值一定小于等于M值的整数。
进一步的,本发明实施例以线程的CPU占用率大小来表示线程的繁重程度。每个CPU都可以识别出正在执行的线程,统计出一段时间里该线程在该CPU上的执行时间,执行时间比上总的时间即可得到线程的CPU占用率,即:
线程的CPU占用率=执行时间/总的时间
需要说明的是,总的时间为CPU的n个时钟周期的时间之和,其中n为大于零的整数;而上文中的阈值为一预先设置的小数,其用于与一个线程的CPU占用率比较,例如,阈值可以设置为0.6,当某一绘图线程的CPU占用率经过计算为0.7时,显然该绘图线程的CPU占用率大于阈值,则说明该绘图线程的繁重程度较大。类似的,当一个线程的CPU占用率小于阈值时,则说明该线程的繁重程度较小。
图4为本发明实施例二提供的多CPU调度方法的CPU占用率示意图,如图4所示,以两个运行的CPU(CPU_0、CPU_1)为例,CPU_0、CPU_1上运行了线程1、线程2以及线程3,其中,计算线程1在时间T(n个时钟周期)这段时间的CPU占用率,终端设备统一以一个CPU为基准,则有:
线程1的CPU占用率=(t1+t2+t3)/T
其中,由于线程1可能在两个CPU之间发生迁移,参照图4可知,其中t1与t3表示该线程1在CPU_0上的执行时间,t3表示该线程1在迁移到CPU_1上的执行时间。绘图线程的CPU占用率计算方法也是类似的。例如:假如阈值为0.3。现有4个绘图线程,其中:绘图线程1的CPU占用率为0.8,绘图线程2的CPU占用率为0.35,绘图线程3的CPU占用率为0.3,绘图线程4的CPU占用率为0.1。因此有两个绘图线程1和2的CPU占用率超过阈值0.3,那么此时M的值为2。
另外,在实时获取CPU占用率发生变化的绘图线程个数M时,还可能发生如下情况:a、创建线程或者删除线程,则判断创建的新线程或者删除的线程是否为绘图线程,若是,则更新M的数值;b、动态计算绘图线程个数M时,若有之前CPU占用率没有变化的绘图线程的CPU占用率发生了变化,则若该绘图线程的占用率从大于阈值变成了小于阈值,则M-1,若该绘图线程的占用率从小于阈值变成了大于阈值,则M+1;如果运行的CPU个数发生变化,则重新获取N。
参照图3,其中,在图1中的步骤101之后,还包括:
步骤102、获取M个绘图线程的其他M-1个绘图线程以及N个运行的CPU的其他N-1个CPU,并根据所述M-1以及所述N-1确定绘图线程绑定策略。
具体的,参照上文本发明实施例二,绘图线程绑定策略可以包括至少以下三种情况:
情况一:当所述M-1小于所述N-1时,则将所述M-1个绘图线程一对一的绑定在M-1个运行的CPU上处理。另外,优选的,可以设置所述非绘图线程在N-M个运行的CPU上,由N-M个运行的CPU进行处理。
情况二:当所述M-1等于所述N-1时,将所述M-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理。另外,优选的,非绘图线程可以为最初的亲和性状态。
情况三:当所述M-1大于所述N-1时,将N-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理,将M-N个绘图线程绑定在所述N-1个运行的CPU上的M-N个CPU上处理。另外,优选的,非绘图线程可以为最初的亲和性状态。
步骤103、根据绘图线程绑定策略,将所述M-1个绘图线程一对一地绑定在所述N-1个CPU上进行处理。
具体的,在实施例一将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理之后,再根据步骤101a中的情况一、情况二以及情况三,将所述M-1个绘图线程一对一地绑定在所述N-1个CPU上进行处理。
优选的,参照图3,在步骤103之后,还包括:
步骤104、获取CPU占用率大于阈值的所述M个绘图线程中的一个绘图线程和/或所述M个绘图线程的其他M-1个绘图线程。
步骤105、获取M个绘图线程的绘图时间,并对M个绘图时间进行比较,获取其中的最大绘图时间。
具体的,在CPU处理的绘图线程绘图时,绘图线程都会调用到绘图函数,绘图函数运算需要的时间就是绘图时间。获取绘图时间的方法一种可行的实现方式为:在绘图函数的起始与结束的地方打点,获取起始与结束的时间,再计算绘图结束与起始的时间差即可得到绘图时间。
步骤106、将最大绘图时间与时间阈值进行比较。
具体的,时间阈值可以根据需要进行配置,例如时间阈值=屏幕刷新时间×70%。若最大绘图时间小于时间阈值,执行步骤107;若最大绘图时间大于时间阈值,则执行步骤109。
步骤107、获取估算绘图时间。
具体的,估算绘图时间为N个运行的CPU的频率降低一级后,绘图线程的绘图时间。其中,估算绘图时间可以通过如下公式(1)获得:
估算绘图时间=最大绘图时间×当前CPU的频率/小一级CPU的频率(1)
需要说明的是,由公式(1)可知,该估算绘图时间为M个绘图时间中的最大绘图时间经过公式(1)计算得到的,该估算绘图时间为估算的具有该最大绘图时间的绘图线程1在降低一级运行的CPU的频率后的绘图时间。另外,降低一级运行的CPU的频率,是针对N个运行的CPU的频率整体降低频率。例如,在降低运行的CPU频率前,N个运行的CPU频率的均为800MHZ,降低一级运行的CPU频率后,则N个运行的CPU频率均为600MHZ。
步骤108、将估算绘图时间与屏幕刷新时间进行比较,若估算绘图时间小于屏幕刷新时间,则将N个运行的CPU的频率降低。
若估算绘图时间仍小于屏幕刷新时间,则降低运行的CPU频率一级,此处需要说明的是,在降低一级CPU频率之后,参照上述步骤105至108,继续将最大绘图时间于时间阈值进行比较,直到满足时间阈值<最大绘图时间<屏幕刷新时间,则不需要再进行CPU频率调节。下面根据具体的场景,对于上述步骤107及108进行说明:
场景一,例如:通过比较M个绘图线程的绘图时间,获得其中最大绘图时间是11ms,此时N个运行的CPU频率均为800MHZ,小一级的CPU频率为600MHZ(需要说明,N个运行的CPU频率当前还处在800MHZ),根据公式(1)计算得到的估算绘图时间约为15ms,参照上文可知,屏幕刷新时间Tr为16.6ms,根据步骤108的比较,可知估算绘图时间15ms<屏幕刷新时间Tr16.6ms,则将N个运行的CPU的频率降低一级。即将N个运行的CPU的频率从800MHZ下调至600MHZ。并在CPU频率为600MHZ时,重新获取绘图时间,重复上述步骤105至108的操作,直到满足时间阈值<最大绘图时间<屏幕刷新时间,则不需要再进行CPU频率调节。
场景二,例如:通过比较M个绘图线程的绘图时间,获得其中最大绘图时间是14ms,此时N个运行的CPU频率均为800MHZ,小一级的CPU频率为600MHZ(需要说明,N个运行的CPU频率当前还处在800MHZ),根据公式(1)计算得到的估算绘图时间大约是18ms,参照上文可知,屏幕刷新时间Tr为16.6ms,则此时估算绘图时间>屏幕刷新时间Tr16.6ms,显然,此时如果将CPU频率降低一级,会造成终端设备显示的图像文件出现卡顿现象。那么即使当前的最大绘图时间14ms是小于时间阈值的,N个CPU频率也不可再调至600MHZ,而是保持800MHZ。
步骤109、将最大绘图时间与屏幕刷新时间比较,若最大绘图时间大于屏幕刷新时间,则N个运行的CPU的频率调高。
优选的,若最大绘图时间大于屏幕刷新时间,此时为了避免由于最大绘图时间大于屏幕刷新时间而造成的图像卡顿现象,可以将N个运行的CPU的频率调高一级,从而使得在较高的CPU频率下,绘图时间能够降低,满足绘图时间小于屏幕刷新时间的条件,从而避免图像卡顿现象的出现。另外,本实施例中涉及的有关CPU频率调节的实施例可以是通过CPU调频程序实现的。
参照图5,上述实施例二中多CPU的调频方案可以独立执行,不需要在对M个绘图线程进行绑定后再执行上文中的多CPU的调频方案,图5为本发明实施例三提供的多CPU调频方法流程示意图,其中,该多CPU调频方法可以由多CPU中的一个CPU执行。如图5所示,该多CPU调频方法包括如下步骤:
步骤200、获取M个绘图线程的绘图时间,并对M个绘图时间进行比较,获取其中的最大绘图时间,其中M为大于0的整数。
步骤201、将最大绘图时间与时间阈值进行比较。
具体的,时间阈值可以根据需要进行配置,例如时间阈值=屏幕刷新时间×70%。若最大绘图时间小于时间阈值,执行步骤202;若最大绘图时间大于时间阈值,则执行步骤204。
步骤202、获取估算绘图时间。
具体的,估算绘图时间的获取方式参照实施例二,此处不再赘述。
步骤203、将估算绘图时间与屏幕刷新时间进行比较,若估算绘图时间小于屏幕刷新时间,则将N个运行的CPU的频率降低。
采用步骤203,若估算绘图时间小于屏幕刷新时间,将N个运行的CPU的频率降低,这样在保证用户观看图像时就不会有卡顿的感觉的同时,还可以降低多CPU的功耗。
步骤204、将最大绘图时间与屏幕刷新时间比较,若最大绘图时间大于屏幕刷新时间,则将N个运行的CPU的频率调高。
采用步骤204,若最大绘图时间大于屏幕刷新时间,将N个运行的CPU的频率调高,这样用户在观看图像时就不会有卡顿的感觉。
需要说明的是,图6为本发明提供的实施例二及实施例三中多CPU调度方法的一种可行的实现方式的效果示意图,图7为本发明提供的实施例二及实施例三中多CPU调度方法的一种可行的实现方式的对比示意图,参照图6,其中T1为一个绘图线程的绘图时间,而T2为处理该绘图线程的CPU的屏幕刷新时间,通过采用本发明实施例的CPU频率调节方案,可以很明显的发现在调节之后,T2与T1之间的差值显著缩短,即CPU频率资源的利用率有显著提高,参照图7,对于没有采用本发明实施例二及实施例三技术方案的CPU,其CPU频率如未作CPU频率调节的CPU频率的波形(实线)所示,而经过CPU频率调节处理后的CPU频率波形图(虚线)显然更加平整,对于CPU频率的资源利用也更加充分,不会造成CPU频率资源的浪费。采取本发明提供的实施例二及实施例三中的CPU频率调节方案后,CPU频率调节处理后CPU的频率不会忽高忽低,大多时候是保持在较低频率上,CPU频率调节处理并不影响屏幕的刷新帧率。由这两图可知采用屏幕刷新CPU调频这一方案,能在不影响系统性能条件下(屏幕刷新帧率不变),减少CPU的空闲时间,充分利用CPU资源,使CPU能在更多时候工作在较低频率上。
需要说明的是,上述各实施例以及各个可能的实现方式中,绘图线程个数M可以为全部绘图线程中CPU占用率大于CPU占用率阈值的绘图线程个数。
图8为本发明实施例四提供的多CPU调度装置结构示意图,如图8所示,该多CPU调度装置,包括:获取模块10、绑定模块11。
获取模块10,用于获取M个绘图线程中的一个绘图线程以及N个运行的CPU中的一个CPU,其中M为大于0的整数,N为大于0的整数。
具体的,获取绘图线程的个数M以及运行的CPU个数N可能的实现方式,上文实施例一中已经进行了详细说明,此处不再赘述。
绑定模块11,用于将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理。
具体的,绑定模块11通过设置绘图线程的CPU亲和性实现将绘图线程一对一地绑定在每一CPU上进行处理的方案。CPU亲和性上文实施例一中已经进行了详细说明,此处不再赘述。
本发明实施例提供的多CPU调度方法,通过获取模块获取绘图线程的个数以及运行的CPU个数,再由绑定模块根据绘图线程的个数以及运行的CPU个数,当绘图线程的个数小于或等于运行的CPU个数时,将每一个绘图线程一对一地绑定在每一运行的CPU上进行处理。在不影响系统性能的前提下,充分利用了各个CPU的资源,使终端设备的多CPU整体工作在更低的频率上,降低了功耗。
优选的,获取模块10,还用于获取M个绘图线程的其他M-1个绘图线程以及N个运行的CPU的其他N-1个CPU。
参照上文实施例二,绑定模块11用于当所述M-1小于所述N-1时,将所述M-1个绘图线程一对一的绑定在M-1个运行的CPU上处理;或者
当所述M-1等于所述N-1时,将所述M-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理;或者
当所述M-1大于所述N-1时,将N-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理,将M-N个绘图线程绑定在所述N-1个运行的CPU上的M-N个CPU上处理。
进一步的,获取模块10还用于:获取CPU占用率大于阈值的所述M个绘图线程中的一个绘图线程和/或所述M个绘图线程的其他M-1个绘图线程。
优选的,在完成M个绘图线程中的一个绘图线程的绑定,和/或M个绘图线程中的其他M-1个绘图线程的绑定之后,还可以进行多CPU的调频方案,并且该方案可以基于绑定模块11在对M中的一个绘图线程和/或M-1个绘图线程进行绑定的前提下进行N个运行的CPU的频率调节,也可以参照上文实施例三的方式实现,具体的,为了执行该多CPU的调频方案,参照图9,在图8的基础上,图9为本发明实施例五提供的多CPU调度装置结构示意图,如图9所示,该多CPU调度装置,还包括:最大绘图时间获取模块12、比较模块13、调节模块14。
最大绘图时间获取模块12,用于获取所述M个绘图线程的绘图时间,并对所述M个绘图时间进行比较,获取其中的最大绘图时间。
具体的,在上文实施例二的步骤102中对如何获取绘图线程绘图时间以及如何获取最大绘图时间进行了详细的说明,此处不再赘述。
比较模块13,用于将最大绘图时间与时间阈值进行比较。
进一步的,比较模块13,用于将所述最大绘图时间与时间阈值进行比较,根据比较结果调整所述N个运行的CPU的频率。
具体的,在上文实施例二的步骤103中对时间阈值进行了详细的说明,估算绘图时间通过上文中的公式(1)获得,此处均不再赘述。
进一步的,比较模块13,还用于若所述最大绘图时间小于所述时间阈值,则获取估算绘图时间;
估算绘图时间为N个运行的CPU的频率降低后,绘图线程的绘图时间。其中,可以将N个运行的CPU的频率降低一级。
比较模块13,用于将所述估算绘图时间与屏幕刷新时间进行比较。
调节模块14,用于若估算绘图时间小于屏幕刷新时间,则将N个运行的CPU的频率降低。
需要说明的是,降低CPU的频率,可以是针对N个CPU的频率整体降低频率。
优选的,比较模块13,还用于若最大绘图时间大于时间阈值,则将最大绘图时间与屏幕刷新时间比较。
调节模块14,用于若最大绘图时间大于屏幕刷新时间,则将N个运行的CPU的频率调高。例如,可以将N个运行的CPU的频率调高一级。
若最大绘图时间大于屏幕刷新时间,此时为了避免由于最大绘图时间大于屏幕刷新时间而造成的图像卡顿现象,可以将N个运行的CPU的频率调高一级,从而使得在较高的CPU频率下,绘图时间能够降低,满足绘图时间小于屏幕刷新时间的条件,从而避免图像卡顿现象的出现。
本发明实施例六提供一种终端,可用于执行本发明实施例一至实施例三中所述的方法。图10为本发明实施例六提供的终端结构示意图,图10示出了本发明实施例六提供的终端500的结构。
该终端可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等终端设备,以终端为手机为例,图10示出的是与本发明实施例提供的终端相关的手机500的部分结构的框图。参考图10,手机500包括RF(Radio
Frequency,射频)电路510、存储器520、输入单元530、显示单元540、传感器550、音频电路560、WiFi(wireless fidelity,无线保真)模块570、
处理器580、以及电源590等部件。本领域技术人员可以理解,图10中示出的手机结构只做实现方式的举例,并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图10对手机500的各个构成部件进行具体的介绍:
RF电路510可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器580处理;另外,将上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路510还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband CodeDivision Multiple Access,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
存储器520可用于存储软件程序,处理器580通过运行存储在存储器520的软件程序,从而执行手机500的各种功能应用以及数据处理。存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机500的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元530可用于接收输入的数字或字符信息,以及产生与手机500的用户设置以及功能控制有关的键信号输入。具体地,输入单元530可包括触控面板531以及其他输入设备532。触控面板531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板531上或在触控面板531附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板531可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器580,并能接收处理器580发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板531。除了触控面板531,输入单元530还可以包括其他输入设备532。具体地,其他输入设备532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元540可用于显示由用户输入的信息或提供给用户的信息以及手机500的各种菜单。显示单元540可包括显示面板541,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板541。进一步的,触控面板531可覆盖显示面板541,当触控面板531检测到在其上或附近的触摸操作后,传送给处理器580以确定触摸事件的类型,随后处理器580根据触摸事件的类型在显示面板541上提供相应的视觉输出。虽然在图10中,触控面板531与显示面板541是作为两个独立的部件来实现手机500的输入和输入功能,但是在某些实施例中,可以将触控面板531与显示面板541集成而实现手机500的输入和输出功能。
手机500还可包括至少一种传感器550,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板541的亮度,接近传感器可在手机500移动到耳边时,关闭显示面板541和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机500还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路560、扬声器561,传声器562可提供用户与手机500之间的音频接口。音频电路560可将接收到的音频数据转换后的电信号,传输到扬声器561,由扬声器561转换为声音信号输出;另一方面,传声器562将收集的声音信号转换为电信号,由音频电路560接收后转换为音频数据,再将音频数据输出处理器580处理后,经RF电路510以发送给比如另一手机,或者将音频数据输出至存储器520以便进一步处理。
WiFi属于短距离无线传输技术,手机500通过WiFi模块570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图10示出了WiFi模块570,但是可以理解的是,其并不属于手机500的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器580是手机500的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器520内的软件程序和/或模块,以及调用存储在存储器520内的数据,执行手机500的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器580可包括一个或多个处理单元;优选的,处理器580可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器580中。
手机500还包括给各个部件供电的电源590(比如电池),优选的,电源可以通过电源管理系统与处理器580逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机500还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该终端所包括处理器580具有以下功能:
处理器580,用于获取M个绘图线程中的一个绘图线程以及N个运行的CPU中的一个CPU,其中M为大于0的整数,N为大于0的整数。
具体的,需要说明的是,对于多处理器的终端,则该处理器580为多处理器中的一个处理器。获取绘图线程的个数M以及运行的CPU个数N可能的实现方式,上文实施例一中已经进行了详细说明,此处不再赘述。
处理器580,用于将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理。
具体的,处理器580通过设置绘图线程的CPU亲和性实现将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理的方案。CPU亲和性上文实施例一中已经进行了详细说明,此处不再赘述。
在本发明实施例中,该终端所包括存储器520具有以下功能:用于存储于本发明相关的CPU调度程序、CPU调频程序以及与绘图相关的函数,以备处理器在运行CPU调度进程、CPU调频进程以及绘图线程时调用。
本发明实施例提供的多CPU调度方法,通过处理器获取绘图线程的个数以及运行的CPU个数,再由处理器根据绘图线程的个数以及运行的CPU个数,当绘图线程的个数小于或等于运行的CPU个数时,将每一个绘图线程一对一地绑定在每一CPU上进行处理。在不影响系统性能的前提下,充分利用了各个CPU的资源,使终端设备的多CPU整体工作在更低的频率上,降低了功耗。
优选的,处理器580,还用于获取M个绘图线程的其他M-1个绘图线程以及N个运行的CPU的其他N-1个CPU。
进一步的,处理器580,具体用于:
当所述M-1小于所述N-1时,则将所述M-1个绘图线程一对一的绑定在M-1个运行的CPU上处理;或者
当所述M-1等于所述N-1时,将所述M-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理;或者
当所述M-1大于所述N-1时,将N-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理,将M-N个绘图线程绑定在所述N-1个运行的CPU上的M-N个CPU上处理。
进一步的,在完成M个绘图线程中的一个绘图线程的绑定,和/或M个绘图线程中的其他M-1个绘图线程的绑定之后,还可以进行多CPU的调频方案,并且该方案可以基于处理器580在对M中的一个绘图线程和/或M-1个绘图线程进行绑定的前提下进行N个运行的CPU的频率调节,也可以参照上文实施例三的方式实现,具体的,处理器580,用于获取CPU占用率大于阈值的所述M个绘图线程中的一个绘图线程和/或所述M个绘图线程的其他M-1个绘图线程,并获取所述M个绘图线程的绘图时间,并对所述M个绘图时间进行比较,获取其中的最大绘图时间。
具体的,需要说明的是,上文实施例二中已经对CPU占用率以及阈值以及如何获取绘图线程绘图时间以及如何获取最大绘图时间进行了详细的说明,此处不再赘述。
处理器580,用于将所述最大绘图时间与时间阈值进行比较,根据比较结果调整所述N个运行的CPU的频率。
进一步的,处理器580,具体用于若所述最大绘图时间小于所述时间阈值,则获取估算绘图时间。
具体的,在上文实施例二的步骤103中对时间阈值进行了详细的说明,估算绘图时间通过上文中的公式(1)获得,此处均不再赘述。
估算绘图时间可以为N个运行的CPU的频率降低一级后,绘图线程的绘图时间。
处理器580,还用于将估算绘图时间与屏幕刷新时间进行比较。
处理器580,用于若估算绘图时间小于屏幕刷新时间,则将N个运行的CPU的频率降低。
需要说明的是,降低运行的CPU的频率,是针对N个运行的CPU的频率整体降低频率。
优选的,处理器580,还用于若最大绘图时间大于时间阈值,则将最大绘图时间与屏幕刷新时间比较。
处理器580,用于若最大绘图时间大于屏幕刷新时间,则将N个运行的CPU的频率调高。
若最大绘图时间大于屏幕刷新时间,此时为了避免由于最大绘图时间大于屏幕刷新时间而造成的图像卡顿现象,可以将N个运行的CPU的频率调高一级,从而使得在较高的CPU频率下,绘图时间能够降低,满足绘图时间小于屏幕刷新时间的条件,从而避免图像卡顿现象的出现。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种多CPU调度方法,其特征在于,包括:
获取M个绘图线程中的一个绘图线程以及N个运行的CPU中的一个CPU,其中M为大于0的整数,N为大于0的整数;
将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理。
2.根据权利要求1所述的方法,其特征在于,获取M个绘图线程的其他M-1个绘图线程以及N个运行的CPU的其他N-1个CPU;
当所述M-1小于所述N-1时,则将所述M-1个绘图线程一对一的绑定在M-1个运行的CPU上处理;或者
当所述M-1等于所述N-1时,将所述M-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理;或者
当所述M-1大于所述N-1时,将N-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理,将M-N个绘图线程绑定在所述N-1个运行的CPU上的M-N个CPU上处理。
3.根据权利要求1或2所述的方法,其特征在于,
获取CPU占用率大于阈值的所述M个绘图线程中的一个绘图线程和/或所述M个绘图线程的其他M-1个绘图线程。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
获取所述M个绘图线程的绘图时间,并对所述M个绘图时间进行比较,获取其中的最大绘图时间;
将所述最大绘图时间与时间阈值进行比较,根据比较结果调整所述N个运行的CPU的频率。
5.根据权利要求4所述的方法,其特征在于,所述将所述最大绘图时间与时间阈值进行比较,包括:
若所述最大绘图时间小于所述时间阈值,则获取估算绘图时间;
所述估算绘图时间为所述N个运行的CPU的频率降低后,所述绘图线程的绘图时间;
将所述估算绘图时间与屏幕刷新时间进行比较,若所述估算绘图时间小于所述屏幕刷新时间,则将所述N个运行的CPU的频率降低。
6.根据权利要求4所述的方法,其特征在于,所述将所述最大绘图时间与时间阈值进行比较,包括:
若所述最大绘图时间大于所述时间阈值,则将所述最大绘图时间与屏幕刷新时间比较;
若所述最大绘图时间大于所述屏幕刷新时间,则将所述N个运行的CPU的频率调高。
7.一种多CPU调度装置,其特征在于,包括:
获取模块,用于获取M个绘图线程中的一个绘图线程以及N个运行的CPU中的一个CPU,其中M为大于0的整数,N为大于0的整数;
绑定模块,用于将所述M个绘图线程中的一个绘图线程绑定在所述N个运行的CPU中的一个CPU上处理。
8.根据权利要求7所述的装置,其特征在于,所述获取模块,用于获取M个绘图线程的其他M-1个绘图线程以及N个运行的CPU的其他N-1个CPU;
所述绑定模块,用于:
当所述M-1小于所述N-1时,则将所述M-1个绘图线程一对一的绑定在M-1个运行的CPU上处理;或者
当所述M-1等于所述N-1时,将所述M-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理;或者
当所述M-1大于所述N-1时,将N-1个绘图线程一对一的绑定在所述N-1个运行的CPU上处理,将M-N个绘图线程绑定在所述N-1个运行的CPU上的M-N个CPU上处理。
9.根据权利要求7或8所述的装置,其特征在于,所述获取模块,用于:获取CPU占用率大于阈值的所述M个绘图线程中的一个绘图线程和/或所述M个绘图线程的其他M-1个绘图线程。
10.根据权利要求8或9所述的装置,其特征在于,还包括:
最大绘图时间获取模块,用于获取所述M个绘图线程的绘图时间,并对所述M个绘图时间进行比较,获取其中的最大绘图时间;
比较模块,用于将所述最大绘图时间与时间阈值进行比较,根据比较结果调整所述N个运行的CPU的频率。
11.根据权利要求10所述的装置,其特征在于,所述比较模块,用于若所述最大绘图时间小于所述时间阈值,则获取估算绘图时间;
所述估算绘图时间为所述N个运行的CPU的频率降低后,所述绘图线程的绘图时间;
所述比较模块,用于将所述估算绘图时间与屏幕刷新时间进行比较;
调节模块,用于若所述估算绘图时间小于所述屏幕刷新时间,则将所述N个运行的CPU的频率降低。
12.根据权利要求10所述的装置,其特征在于,所述比较模块,用于若所述最大绘图时间大于所述时间阈值,则将所述最大绘图时间与屏幕刷新时间比较;
所述调节模块,用于若所述最大绘图时间大于所述屏幕刷新时间,则将所述N个运行的CPU的频率调高。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310419550.2A CN104460934A (zh) | 2013-09-13 | 2013-09-13 | 多cpu调度方法及装置 |
PCT/CN2014/085818 WO2015035870A1 (zh) | 2013-09-13 | 2014-09-03 | 多cpu调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310419550.2A CN104460934A (zh) | 2013-09-13 | 2013-09-13 | 多cpu调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104460934A true CN104460934A (zh) | 2015-03-25 |
Family
ID=52665057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310419550.2A Pending CN104460934A (zh) | 2013-09-13 | 2013-09-13 | 多cpu调度方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104460934A (zh) |
WO (1) | WO2015035870A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786571A (zh) * | 2016-02-29 | 2016-07-20 | 珠海市魅族科技有限公司 | 一种移动终端的控制方法及移动终端 |
CN106095052A (zh) * | 2016-05-31 | 2016-11-09 | 广东欧珀移动通信有限公司 | 控制cpu功耗的方法及装置 |
WO2016197621A1 (zh) * | 2015-06-12 | 2016-12-15 | 华为技术有限公司 | 一种调整服务器的频率的方法及装置 |
CN106292838A (zh) * | 2016-07-27 | 2017-01-04 | 联想(北京)有限公司 | 控制方法、处理器和电子设备 |
CN107479976A (zh) * | 2017-08-14 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种多程序实例同时运行下cpu资源分配方法及装置 |
CN108803509A (zh) * | 2018-05-31 | 2018-11-13 | 广东盛哲科技有限公司 | 一种多类型cpu兼容工业控制器系统 |
CN109600396A (zh) * | 2019-01-23 | 2019-04-09 | 浙江安点科技有限责任公司 | 实现高可靠安全性的防火墙系统 |
WO2020073672A1 (zh) * | 2018-10-11 | 2020-04-16 | 华为技术有限公司 | 资源调度方法和终端设备 |
CN112114975A (zh) * | 2020-10-28 | 2020-12-22 | Oppo广东移动通信有限公司 | 处理器频率的调整方法、装置、存储介质及电子设备 |
CN113190315A (zh) * | 2021-04-29 | 2021-07-30 | 安徽华米健康医疗有限公司 | 一种显示器刷新方法及其装置 |
CN113220463A (zh) * | 2021-05-31 | 2021-08-06 | 中科曙光国际信息产业有限公司 | 一种绑定策略推断方法、装置、电子设备及存储介质 |
CN113672373A (zh) * | 2021-08-30 | 2021-11-19 | 浙江大华技术股份有限公司 | 一种线程绑定的方法、装置及电子设备 |
CN114442792A (zh) * | 2022-02-09 | 2022-05-06 | 北京小米移动软件有限公司 | 处理器的运行频率调整方法、装置及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506653A (zh) * | 2020-12-03 | 2021-03-16 | 浙江大华技术股份有限公司 | 一种抽帧帧率调节方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060095729A1 (en) * | 2004-04-07 | 2006-05-04 | Erdem Hokenek | Multithreaded processor with multiple concurrent pipelines per thread |
CN101324851A (zh) * | 2007-06-12 | 2008-12-17 | 华为技术有限公司 | 线程调度方法及其装置 |
CN100504763C (zh) * | 2006-06-27 | 2009-06-24 | 国际商业机器公司 | 启用同时多线程(smt)的系统及其管理方法 |
CN101634953A (zh) * | 2008-07-22 | 2010-01-27 | 国际商业机器公司 | 搜索空间计算方法和装置及自适应线程调度方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101322111A (zh) * | 2005-04-07 | 2008-12-10 | 杉桥技术公司 | 每个线程具有多个并发流水线的多线程处理器 |
-
2013
- 2013-09-13 CN CN201310419550.2A patent/CN104460934A/zh active Pending
-
2014
- 2014-09-03 WO PCT/CN2014/085818 patent/WO2015035870A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060095729A1 (en) * | 2004-04-07 | 2006-05-04 | Erdem Hokenek | Multithreaded processor with multiple concurrent pipelines per thread |
CN100504763C (zh) * | 2006-06-27 | 2009-06-24 | 国际商业机器公司 | 启用同时多线程(smt)的系统及其管理方法 |
CN101324851A (zh) * | 2007-06-12 | 2008-12-17 | 华为技术有限公司 | 线程调度方法及其装置 |
CN101634953A (zh) * | 2008-07-22 | 2010-01-27 | 国际商业机器公司 | 搜索空间计算方法和装置及自适应线程调度方法和系统 |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016197621A1 (zh) * | 2015-06-12 | 2016-12-15 | 华为技术有限公司 | 一种调整服务器的频率的方法及装置 |
CN106254058A (zh) * | 2015-06-12 | 2016-12-21 | 华为技术有限公司 | 一种调整服务器的频率的方法及装置 |
CN106254058B (zh) * | 2015-06-12 | 2019-06-11 | 华为技术有限公司 | 一种调整服务器的频率的方法及装置 |
CN105786571A (zh) * | 2016-02-29 | 2016-07-20 | 珠海市魅族科技有限公司 | 一种移动终端的控制方法及移动终端 |
CN106095052A (zh) * | 2016-05-31 | 2016-11-09 | 广东欧珀移动通信有限公司 | 控制cpu功耗的方法及装置 |
CN106095052B (zh) * | 2016-05-31 | 2018-03-27 | 广东欧珀移动通信有限公司 | 控制cpu功耗的方法及装置 |
CN108509016A (zh) * | 2016-05-31 | 2018-09-07 | 广东欧珀移动通信有限公司 | 控制cpu功耗的方法及装置和相关介质产品 |
CN106292838A (zh) * | 2016-07-27 | 2017-01-04 | 联想(北京)有限公司 | 控制方法、处理器和电子设备 |
CN106292838B (zh) * | 2016-07-27 | 2020-08-25 | 联想(北京)有限公司 | 控制方法、处理器和电子设备 |
CN107479976A (zh) * | 2017-08-14 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种多程序实例同时运行下cpu资源分配方法及装置 |
CN108803509A (zh) * | 2018-05-31 | 2018-11-13 | 广东盛哲科技有限公司 | 一种多类型cpu兼容工业控制器系统 |
CN111045814A (zh) * | 2018-10-11 | 2020-04-21 | 华为技术有限公司 | 资源调度方法和终端设备 |
KR102490908B1 (ko) * | 2018-10-11 | 2023-01-19 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 자원 스케줄링 방법 및 단말 장치 |
KR20200122364A (ko) * | 2018-10-11 | 2020-10-27 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 자원 스케줄링 방법 및 단말 장치 |
WO2020073672A1 (zh) * | 2018-10-11 | 2020-04-16 | 华为技术有限公司 | 资源调度方法和终端设备 |
CN111045814B (zh) * | 2018-10-11 | 2023-12-08 | 华为技术有限公司 | 资源调度方法和终端设备 |
US11765754B2 (en) | 2018-10-11 | 2023-09-19 | Huawei Technologies Co., Ltd. | Resource scheduling method and terminal device |
CN109600396A (zh) * | 2019-01-23 | 2019-04-09 | 浙江安点科技有限责任公司 | 实现高可靠安全性的防火墙系统 |
CN112114975A (zh) * | 2020-10-28 | 2020-12-22 | Oppo广东移动通信有限公司 | 处理器频率的调整方法、装置、存储介质及电子设备 |
CN112114975B (zh) * | 2020-10-28 | 2023-06-27 | Oppo广东移动通信有限公司 | 处理器频率的调整方法、装置、存储介质及电子设备 |
CN113190315A (zh) * | 2021-04-29 | 2021-07-30 | 安徽华米健康医疗有限公司 | 一种显示器刷新方法及其装置 |
CN113220463B (zh) * | 2021-05-31 | 2022-09-06 | 中科曙光国际信息产业有限公司 | 一种绑定策略推断方法、装置、电子设备及存储介质 |
CN113220463A (zh) * | 2021-05-31 | 2021-08-06 | 中科曙光国际信息产业有限公司 | 一种绑定策略推断方法、装置、电子设备及存储介质 |
CN113672373A (zh) * | 2021-08-30 | 2021-11-19 | 浙江大华技术股份有限公司 | 一种线程绑定的方法、装置及电子设备 |
CN114442792A (zh) * | 2022-02-09 | 2022-05-06 | 北京小米移动软件有限公司 | 处理器的运行频率调整方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2015035870A1 (zh) | 2015-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104460934A (zh) | 多cpu调度方法及装置 | |
CN107391259B (zh) | 资源处理方法和装置、计算机可读存储介质、移动终端 | |
CN103325332B (zh) | 页面刷新方法、装置及设备 | |
US11144477B2 (en) | Method for processing reclaimable memory pages, electronic device, and computer-readable storage medium | |
EP3937016A1 (en) | Memory management method and apparatus | |
CN103500002A (zh) | 应用程序管理的方法、装置及终端设备 | |
US20190205250A1 (en) | Method and device for processing a memory and storage medium | |
CN103455407A (zh) | 一种移动终端cpu占用率监测方法、装置及移动终端 | |
CN106776036A (zh) | 一种资源分配方法及装置 | |
CN104423996B (zh) | 视图刷新方法和装置 | |
CN103646656A (zh) | 音效处理方法、装置、插件管理器及音效插件 | |
US9405353B2 (en) | Method and apparatus for controlling central processing unit | |
CN104077184B (zh) | 一种应用程序的进程控制方法及计算机系统 | |
CN103473092A (zh) | 一种下载应用的处理方法、装置及终端设备 | |
US20170097725A1 (en) | Device and method for starting mobile terminal application and mobile terminal | |
CN104252341A (zh) | 应用程序的换肤方法、装置及应用程序的客户端设备 | |
CN103500227A (zh) | 视频帧存储管理方法和相关装置及通信系统 | |
CN106919458B (zh) | Hook目标内核函数的方法及装置 | |
CN104093123A (zh) | 应用程序的信息推送方法、装置和系统、移动终端 | |
CN104572046A (zh) | 一种堆栈还原方法和计算机系统 | |
CN103530115A (zh) | 一种应用程序显示方法、装置及终端设备 | |
CN104363988A (zh) | 一种多核处理器的管理方法及装置 | |
CN104423840A (zh) | 一种进度指示条的实现方法和装置 | |
CN104021129A (zh) | 显示组图的方法及终端 | |
WO2014194759A1 (en) | A method, apparatus, and system for controlling voice data transmission |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20171027 Address after: Metro Songshan Lake high tech Industrial Development Zone, Guangdong Province, Dongguan City Road 523808 No. 2 South Factory (1) project B2 -5 production workshop Applicant after: HUAWEI terminal (Dongguan) Co., Ltd. Address before: 518129 Longgang District, Guangdong, Bantian HUAWEI base B District, building 2, building No. Applicant before: Huawei Device Co., Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150325 |