一种功耗控制方法及装置与流程

未命名 08-09 阅读:99 评论:0


1.本技术涉及终端技术领域,尤其涉及一种功耗控制方法及装置。


背景技术:

2.电子设备使用过程中,可能出现应用进程或系统进程异常高负载,占用处理器的大量资源,导致处理器高负载甚至满载。电子设备的处理器高负载甚至满载,会导致前台运行的应用出现卡顿,还会带来高耗电、发热等问题。如何降低异常高负载进程对处理器性能的影响,是亟待解决的问题。


技术实现要素:

3.本技术实施例提供一种功耗控制方法及装置,可以减少异常高负载进程占用处理器资源,降低处理器功耗,提高处理器性能。
4.为达到上述目的,本技术的实施例采用如下技术方案:
5.第一方面,提供了一种功耗控制方法,应用于电子设备,电子设备包括处理器,处理器上运行有第一进程,第一进程对应的第一应用在电子设备后台运行,该方法包括:如果检测到第一进程的负载高于预设负载阈值、且运行时长大于或等于预设时长阈值,并且确定第一应用的运行不被用户感知,则降低第一进程的处理器使用率。
6.检测到第一进程的负载高于预设负载阈值、且运行时长大于或等于预设时长阈值,表示第一进程为高负载进程。第一应用的运行不被用户感知,表示第一进程是异常地在后台占用处理器资源。当确定第一进程是异常高负载后台进程,则降低第一进程的处理器使用率;即降低了第一进程对处理器资源的占用,释放了处理器资源;处理器资源可以用于其他进程,降低处理器负载,这样就降低了处理器功耗,提高了处理器性能。
7.相比直接将第一进程杀掉,本技术实施例提供的降低第一进程的处理器使用率的方法可以降低误杀后台进程的几率,避免引起系统异常。
8.结合第一方面,在一种可能的实施方式中,降低第一进程的处理器使用率的条件还包括:确定电子设备满足预设的异常条件;其中,异常条件包括下列至少一项:电子设备的处理器温度大于预设温度阈值;电子设备的电池电量在预设时长内下降的值大于预设电量阈值;电子设备上运行的前台应用运行卡顿。
9.结合电子设备的异常,可以更准确地判断第一进程是异常高负载后台进程。
10.结合第一方面,在一种可能的实施方式中,降低第一进程的处理器使用率包括:控制第一进程周期性地休眠;在第一进程休眠时,第一进程未使用处理器资源,即降低了第一进程的处理器使用率。
11.在一种可能的实施方式中,每个休眠周期内包括第一进程的运行时间和休眠时间;在第一进程的运行时间内,第一进程根据处理器的调度使用处理器资源。这样,第一进程可以在处理器为其分配的时长内使用处理器资源。运行时间长度与休眠时间长度之和为休眠周期。
12.结合第一方面,在一种可能的实施方式中,第一进程在每个休眠周期内的休眠时间相等,休眠时间为预设值。
13.结合第一方面,在一种可能的实施方式中,根据处理器当前负载和预设的目标负载确定当前休眠周期内的休眠时间。
14.结合第一方面,在一种可能的实施方式中,降低第一进程的处理器使用率包括:降低第一进程的调度优先级,调度优先级用于指示进程被处理器分配处理器资源的顺序。这样就降低了第一进程被分配处理器资源的几率,降低了第一进程的处理器使用率。在一种实施方式中,降低第一进程的调度优先级包括:增大第一进程的调度优先级数值。
15.结合第一方面,在一种可能的实施方式中,降低第一进程的处理器使用率包括:降低第一进程的处理器使用率阈值。
16.结合第一方面,在一种可能的实施方式中,第一应用的运行不被用户感知包括:第一应用未进行音频输入或输出;并且,第一应用未通过移动通信或无线通信接收或发送数据。
17.结合第一方面,在一种可能的实施方式中,第一应用在电子设备后台运行包括:第一应用不存在人机交互界面;或,第一应用的人机交互界面停止在电子设备的屏幕上显示。
18.第二方面,提供了一种电子设备,该电子设备具有实现上述第一方面所述的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
19.第三方面,提供了一种电子设备,包括:处理器和存储器;该存储器用于存储计算机执行指令,当该电子设备运行时,该处理器执行该存储器存储的该计算机执行指令,以使该电子设备执行如下步骤:
20.检测到第一进程的负载高于预设负载阈值、且运行时长大于或等于预设时长阈值,表示第一进程为高负载进程。第一应用的运行不被用户感知,表示第一进程是异常地在后台占用处理器资源。当确定第一进程是异常高负载后台进程,则降低第一进程的处理器使用率;即降低了第一进程对处理器资源的占用,释放了处理器资源;处理器资源可以用于其他进程,降低处理器负载,这样就降低了处理器功耗,提高了处理器性能。
21.相比直接将第一进程杀掉,本技术实施例提供的降低第一进程的处理器使用率的方法可以降低误杀后台进程的几率,避免引起系统异常。
22.结合第三方面,在一种可能的实施方式中,降低第一进程的处理器使用率的条件还包括:确定电子设备满足预设的异常条件;其中,异常条件包括下列至少一项:电子设备的处理器温度大于预设温度阈值;电子设备的电池电量在预设时长内下降的值大于预设电量阈值;电子设备上运行的前台应用运行卡顿。
23.结合电子设备的异常,可以更准确地判断第一进程是异常高负载后台进程。
24.结合第三方面,在一种可能的实施方式中,降低第一进程的处理器使用率包括:控制第一进程周期性地休眠;在第一进程休眠时,第一进程未使用处理器资源,即降低了第一进程的处理器使用率。
25.在一种可能的实施方式中,每个休眠周期内包括第一进程的运行时间和休眠时间;在第一进程的运行时间内,第一进程根据处理器的调度使用处理器资源。这样,第一进程可以在处理器为其分配的时长内使用处理器资源。运行时间长度与休眠时间长度之和为
休眠周期。
26.结合第三方面,在一种可能的实施方式中,第一进程在每个休眠周期内的休眠时间相等,休眠时间为预设值。
27.结合第三方面,在一种可能的实施方式中,根据处理器当前负载和预设的目标负载确定当前休眠周期内的休眠时间。
28.结合第三方面,在一种可能的实施方式中,降低第一进程的处理器使用率包括:降低第一进程的调度优先级,调度优先级用于指示进程被处理器分配处理器资源的顺序。这样就降低了第一进程被分配处理器资源的几率,降低了第一进程的处理器使用率。在一种实施方式中,降低第一进程的调度优先级包括:增大第一进程的调度优先级数值。
29.结合第三方面,在一种可能的实施方式中,降低第一进程的处理器使用率包括:降低第一进程的处理器使用率阈值。
30.结合第三方面,在一种可能的实施方式中,第一应用的运行不被用户感知包括:第一应用未进行音频输入或输出;并且,第一应用未通过移动通信或无线通信接收或发送数据。
31.结合第三方面,在一种可能的实施方式中,第一应用在电子设备后台运行包括:第一应用不存在人机交互界面;或,第一应用的人机交互界面停止在电子设备的屏幕上显示。
32.第四方面,提供了一种电子设备,包括:处理器;所述处理器用于与存储器耦合,并读取存储器中的指令之后,根据所述指令执行如上述第一方面中任一项所述的功耗控制方法。
33.第五方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项所述的功耗控制方法。
34.第六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项所述的功耗控制方法。
35.第七方面,提供了一种装置(例如,该装置可以是芯片系统),该装置包括处理器,用于支持电子设备实现上述第一方面中所涉及的功能。在一种可能的设计中,该装置还包括存储器,该存储器,用于保存电子设备必要的程序指令和数据。该装置是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件。
36.其中,第二方面至第七方面中任一种实施方式所带来的技术效果可参见第一方面中不同实施方式所带来的技术效果,此处不再赘述。
附图说明
37.图1a为本技术实施例提供的功耗控制方法所适用的场景示意图;
38.图1b为本技术实施例提供的功耗控制方法所适用的场景示意图;
39.图2a为本技术实施例提供的一种电子设备的硬件结构示意图;
40.图2b为本技术实施例提供的一种电子设备的软件架构示意图;
41.图3为本技术实施例提供的功耗控制方法的流程图;
42.图4a为本技术实施例提供的功耗控制方法的场景实例示意图;
43.图4b为本技术实施例提供的功耗控制方法的场景实例示意图;
44.图5a为本技术实施例提供的功耗控制方法的场景实例示意图;
45.图5b为本技术实施例提供的功耗控制方法的场景实例示意图;
46.图5c为本技术实施例提供的功耗控制方法的场景实例示意图;
47.图5d为本技术实施例提供的功耗控制方法的场景实例示意图;
48.图6为本技术实施例提供的功耗控制方法的场景实例示意图;
49.图7为本技术实施例提供的功耗控制方法的场景实例示意图;
50.图8为本技术实施例提供的功耗控制方法的场景实例示意图;
51.图9为本技术实施例提供的功耗控制方法的场景实例示意图;
52.图10为本技术实施例提供的功耗控制方法的流程示意图;
53.图11为本技术实施例提供的功耗控制方法的场景实例示意图;
54.图12为本技术实施例提供的功耗控制方法的流程示意图;
55.图13a为本技术实施例提供的功耗控制方法的实现效果示意图;
56.图13b为本技术实施例提供的功耗控制方法的实现效果示意图;
57.图14为本技术实施例提供的功耗控制装置示意图。
具体实施方式
58.下面结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。其中,在本技术实施例的描述中,以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本技术的限制。如在本技术的说明书和所附权利要求书中所使用的那样,单数表达形式“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本技术以下各实施例中,“至少一个”、“一个或多个”是指一个或两个以上(包含两个)。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
59.在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。术语“连接”包括直接连接和间接连接,除非另外说明。“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
60.在本技术实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
61.电子设备使用过程中,存在一些在后台运行的应用程序(比如,第三方应用或系统应用)。应用程序在后台运行,即应用程序在电子设备上运行,但是不在电子设备屏幕上显
示应用程序的人机交互界面。比如,用户在电子设备上打开聊天应用,显示聊天应用的人机交互界面。使用聊天应用过程中,用户又打开视频应用,电子设备显示视频应用的人机交互界面。聊天应用的人机交互界面被隐藏或者被关闭或者被视频应用的人机交互界面完全遮挡,电子设备屏幕上停止显示聊天应用的人机交互界面;即聊天应用在后台运行。比如,用户打开音乐应用,启动播放音乐后,关闭音乐应用的人机交互界面;音乐应用继续播放音乐,即音乐应用在后台运行。比如,操作系统在后台启动一些系统应用,这些系统应用没有人机交互界面。
62.在后台运行的应用程序(本技术中称为后台应用),通常不占用大量的处理器资源;或者基于用户需要(比如快速下载较大文件)占用较多处理器资源。其中,处理器资源即处理器的运算能力。但是在一些场景中,后台运行的应用程序会异常高负载。比如,应用程序执行的指令进入死循环,无法正常退出,就会异常高负载。应用程序负载就是在一段时间内处理器正在处理以及等待处理器处理的该应用程序的进程数之和的统计信息。后台应用异常高负载,可能会异常占用较多处理器资源,造成处理器负载较高甚至处理器满载。处理器负载就是在一段时间内处理器正在处理以及等待处理器处理的进程数之和的统计信息,即处理器使用队列的长度统计信息。可以理解的,处理器负载越低,进程等待被处理器调度的时间就越短;处理器负载越高,进程等待被处理器调度的时间就越长。如果存在应用程序在前台运行(本技术中称为前台应用),后台应用异常高负载会导致前台应用无法被及时调度,出现卡顿(比如,应用程序播放的动态画面不连续,播放的声音断断续续等),影响用户体验。并且,后台应用异常高负载还会带来高耗电、使电子设备发热等问题。
63.本技术实施例所述处理器可以包括中央处理器(central processing unit,cpu),图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),数字信号处理器(digital signal processor,dsp),或神经网络处理器(neural-network processing unit,npu)等。下面以处理器是cpu为例进行介绍。可以理解的,本技术实施例提供的功耗控制方法同样适用于其他类型的处理器。
64.示例性的,图1a示出一种手机上存在后台应用异常高负载时cpu负载的监测情况示意图。如图1a所示,22:45-1:30之间,用户正常使用手机,手机上运行有前台应用,cpu负载随用户使用情况实时变化。由于后台应用异常高负载,占用大量cpu资源;用户使用手机时,前台应用出现卡顿,影响用户使用体验。1:30之后,用户未使用手机,手机上未运行前台应用,手机上仅存在后台应用,但是cpu负载仍然保持在一个较高的值。通过监测手机电量,22:45时手机剩余80%电量,1:30时手机剩余40%电量,6:00时手机剩余电量接近0。可以看出,用户不使用手机时,1:30-6:00之间的4个半小时内,手机消耗40%电量;后台应用耗电量较高。通过监测发现,22:45-6:00之间,手机总功耗为1583.71毫安时(mah),前台应用功耗为3.44mah,后台应用功耗为1580.27mah;可以看出,后台应用功耗远大于前台应用功耗。后台应用耗电量高,手机待机时间会大大缩短,还可能会发热,降低用户使用体验。
65.示例性的,图1b示出另一手机上存在后台应用异常高负载时cpu负载的监测情况示意图。如图1b所示,手机上应用1在前台运行(本技术中称为前台应用1),cpu负载随应用1负载变化。一段时间后,前台应用1停止运行。23:48之后,在后台运行的应用2(本技术中称为后台应用2)高负载98%,cpu负载仍然保持在一个较高的值。通过监测cpu温度,前台应用1运行期间,cpu温度从28.5℃上升至36.5℃,并维持在36.5℃;前台应用1停止运行后,后台
应用2高负载98%,cpu温度持续升高,最高上升至47℃。可以看出,后台应用高负载会带来手机发热的问题。
66.现有技术中,如果检测到异常高负载的后台应用,一般会将该后台应用关联的进程杀掉,清理异常高负载后台应用的关联进程;消除异常高负载后台应用对cpu资源的占用。但是,如果被杀掉的是系统进程,该系统进程关联的其他系统进程可能存在状态错误,导致业务功能异常、无法恢复问题。更严重地,部分重要系统进程被杀掉后,会导致操作系统重启。还有部分异常进程被杀掉后,如果操作系统重启,还是会出现异常高负载问题。
67.本技术实施例提供一种功耗控制方法,如果检测到后台进程(后台进程即后台应用的进程)异常高负载,则降低该后台进程使用cpu的时长,解决后台进程高负载带来的电子设备使用卡顿、掉电快、易发热等问题。
68.本技术实施例提供的功耗控制方法可以应用于包括处理器的电子设备。上述电子设备可以包括手机、平板电脑、笔记本电脑、个人电脑(personal computer,pc)、超级移动个人计算机(ultra-mobile personal computer,umpc)、手持计算机、上网本、智能家居设备(比如,智能电视、智慧屏、大屏、智能音箱、智能空调等)、个人数字助理(personal digital assistant,pda)、可穿戴设备(比如,智能手表、智能手环等)、车载设备、虚拟现实设备等,本技术实施例对此不做任何限制。
69.请参考图2a,为本技术实施例提供的一种电子设备100的结构示意图。如图2a所示,该电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,传感器模块170,摄像头180,显示屏190等。其中传感器模块170可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
70.可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
71.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括中央处理器(central processing unit,cpu),应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
72.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或
通用串行总线(universal serial bus,usb)接口等。
73.充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
74.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏190,摄像头180,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
75.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
76.天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
77.移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
78.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备输出声音信号,或通过显示屏190显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
79.无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信(near field communication,nfc),红外(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
80.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
81.电子设备100通过gpu,显示屏190,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏190和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
82.显示屏190用于显示图像,视频等。显示屏190包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,电子设备100可以包括1个或n个显示屏190,n为大于1的正整数。
83.电子设备100可以通过isp,摄像头180,视频编解码器,gpu,显示屏190以及应用处理器等实现拍摄功能。
84.isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。
85.摄像头180用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,电子设备100可以包括1个或n个摄像头180,n为大于1的正整数。
86.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
87.视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
88.npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
89.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
90.内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
91.电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构为例,示例性说明电子设备100的软件结构。
92.图2b是本发明实施例的电子设备100的软件结构框图。
93.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,以及内核层。
94.应用程序层可以包括一系列应用程序包。
95.如图2b所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息等应用程序。
96.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。
97.如图2b所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
98.窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
99.内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
100.视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
101.电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
102.资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
103.通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的
消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
104.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
105.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
106.应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
107.系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。
108.表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
109.媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。
110.三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
111.2d图形引擎是2d绘图的绘图引擎。
112.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
113.下面结合附图,详细介绍本技术实施例提供的功耗控制方法。需要说明的是,执行本技术实施例提供的功耗控制方法的,可以是处理器(本技术实施例以cpu为例),或者电子设备中其他处理单元(比如芯片),或者能够与电子设备通信以控制电子设备中处理器的装置等,本技术实施例对该方法的执行主体并不进行限定。
114.示例性的,如图3所示,本技术实施例提供的功耗控制方法可以包括:
115.s301、监测cpu上后台应用对应的进程的负载和运行时长。
116.电子设备运行时,存在一些在后台运行的应用程序,即后台应用。本技术中,后台应用对应的进程称为后台进程。在一种实现方式中,如果确定应用程序不存在人机交互界面或应用程序的人机交互界面停止在电子设备的屏幕上显示,则确定该应用程序为后台应用。进程的负载就是在一段时间内处理器正在处理以及等待处理器处理的该进程的进程数之和的统计信息。
117.s302、检测到第一进程的负载高于预设负载阈值、且运行时长大于或等于预设时长阈值。
118.如果确定后台进程满足预设条件,则确定该后台进程高负载。在一种示例中,预设条件包括:负载高于预设负载阈值、且运行时长大于或等于预设时长阈值。比如,负载高于30%且运行时长大于或等于5分钟;比如,负载高于20%且运行时长大于或等于8分钟;比如,负载高于10%且运行时长大于或等于15分钟;比如,负载高于5%且运行时长大于或等于60分钟。
119.检测到第一进程的负载高于预设负载阈值、且运行时长大于或等于预设时长阈值,即检测到第一进程高负载。
120.如果确定第一进程高负载,执行s303;否则,执行s301。
121.s303、判断第一进程对应的第一应用的运行是否可被用户感知。
122.在一种示例中,应用程序的运行可被用户感知包括:应用程序进行音频输入或输出。比如,音乐播放应用在后台运行,并播放音乐,即存在音频输出。比如,用户拨打电话时,通话应用在后台运行,进行语音输入和输出。
123.在一种示例中,应用程序的运行可被用户感知包括:应用程序通过移动通信或无线通信接收或发送数据。比如,下载类应用(比如迅雷下载)、导航类应用(比如高德地图、百度地图)在后台运行时,进行数据上传或下载。比如,运动健康应用通过gps获取用户位置信息。
124.在一种示例中,新闻阅读类应用、金融理财类应用在后台运行时,未进行音频输入输出,也未通过移动通信或无线通信收发数据,用户不可感知。
125.如果确定第一应用的运行可被用户感知,执行s301。在一种实现方式中,如果确定第一应用的运行不被用户感知,执行s304。
126.s304、判断电子设备是否满足异常条件。如果满足异常条件,执行s305;如果确定不满足异常条件,执行s301。
127.可选的,进一步判断电子设备是否满足异常条件;异常条件包括以下至少一项:cpu温度大于预设温度阈值;电池电量在预设时长内下降的值大于预设电量阈值;前台应用运行卡顿。
128.在一些实施例中,判断电子设备是否满足异常条件包括s3041-s3043:
129.s3041、判断cpu温度是否大于预设温度阈值。如果确定cpu温度大于预设温度阈值,则确定电子设备满足异常条件;如果确定cpu温度小于或等于预设温度阈值,则执行s3042。
130.在一种实现方式中,电子设备通过温度传感器监测cpu温度。示例性的,预设的温度阈值为40℃。如果温度传感器检测到cpu温度大于40℃,则确定电子设备满足异常条件。s3042、判断电池电量在预设时长内下降的值是否大于预设电量阈值。如果确定电池电量在预设时长内下降的值大于预设电量阈值,确定电子设备满足异常条件;如果确定电池电量在预设时长内下降的值小于或等于预设电量阈值,则执行s3043。
131.示例性的,预设时长为10分钟,预设电量阈值为20%。如果确定电池电量在预设时长内下降的值大于20%,则确定电子设备满足异常条件。
132.s3043、判断是否存在前台应用运行卡顿。如果确定存在前台应用运行卡顿,则确定电子设备满足异常条件。如果确定不存在前台应用运行卡顿,执行s301。
133.在一种实现方式中,如果确定应用程序播放的帧率小于预设的第一帧率阈值,则确定该应用程序运行卡顿。比如,预设的第一帧率阈值为20fps。
134.在另一种实现方式中,通过统计该电子设备上的历史数据,确定前台应用正常播放的平均帧率为第一帧率值(比如,50fps)。如果确定该应用程序播放的第二帧率值与第一帧率值的差值大于预设的第二帧率阈值,则确定该应用程序运行卡顿。其中,第二帧率值小于第一帧率值。比如,第一帧率值为80fps,第二帧率值为40fps,第二帧率阈值为30fps,则
确定该应用程序运行卡顿。
135.需要说明的是,上述以先判断cpu温度,再判断电池电量,最后判断前台应用运行卡顿的顺序为例进行介绍。在实际应用中,可以有不同的判断顺序,其并不影响本技术实施例的实现效果。比如,可以先执行s3042,再执行s3041;再比如,可以先执行s3043,再执行s3042等。本技术实施例对s3041、s3042和s3043执行的先后顺序并不进行限定。
136.需要说明的是,本技术实施例对s302、s303和s304执行的先后顺序并不进行限定。在另一些实施方式中,可以先执行s303或s304。
137.s305、降低第一进程的cpu使用率。
138.进程使用cpu资源的时长可以通过进程的cpu使用率(即处理器使用率)体现,进程的cpu使用率即单位时长内进程使用cpu资源的时长。降低进程的cpu使用率即降低单位时长内该进程使用cpu资源的时长。其中,进程的cpu使用率=进程使用cpu资源的时长/cpu运行时长。对于单个cpu,示例性的,如图4a所示,进程1周期性地运行20ms,停止运行20ms。那么进程1的cpu使用率=20ms/40ms=50%。对于多个cpu或多核cpu,进程的cpu使用率=进程使用各个cpu资源的时长总和/各个cpu运行时长总和。示例性的,如图4b所示,进程1在cpu0上周期性地运行40ms,停止运行40ms;进程1在cpu1上周期性地运行20ms,停止运行60ms。那么进程1的cpu使用率=(40ms+20ms)/(80ms+80ms)=37.5%。
139.降低异常高负载后台进程在单位时间内使用cpu资源的时长,即降低了异常高负载的后台进程对cpu资源的占用,cpu资源可以用于其他进程(比如前台进程),这样可以避免异常高负载的后台进程导致的前台应用卡顿。并且,降低异常高负载的后台进程在单位时间内使用cpu资源的时长,即减少了异常高负载的后台进程对cpu资源的占用,cpu资源可以用于其他正常运行的进程,加快其他进程的处理速度,降低cpu负载;这样就可以降低电量消耗,也消除了其带来的发热问题。
140.方式一:通过降低异常高负载后台进程的调度优先级降低该进程的cpu使用率。
141.将一个时间段内的cpu资源分配给进程使用,即cpu调度进程。一般来说,多个进程不能同时使用同一个时间段的cpu资源。如果有多个进程等待cpu调度,在一种实现方式中,cpu按照进程的调度优先级从高到低的顺序对进程进行调度。调度优先级高的进程比调度优先级低的进程优先被cpu调度。可选的,调度优先级相同的进程按照进入调度队列的先后顺序进行调度。在一种实现方式中,用调度优先级数值表示调度优先级;调度优先级数值越大,调度优先级越低。示例性的,调度优先级用-20至19的整数表示,每个数字代表一个调度优先级;-20表示调度优先级最高,19表示调度优先级最低。
142.在一种示例中,cpu采用时间片轮转的方式调度各个进程;时间片的时长为预设值,比如,20ms。cpu将一个时间片内的cpu资源分给进程使用,即在一个时间片内调度该进程。当有多个进程等待使用cpu资源时,cpu可以轮流为各个进程分配时间片。在一种实现方式中,cpu按照进程的调度优先级从高到低的顺序为进程分配时间片。示例性的,cpu保存进程调度队列;等待cpu处理的进程按照进程的调度优先级从高到低的顺序在进程调度队列中排序;如果调度优先级相同,则按照进程到达进程调度队列的先后顺序进行排序。cpu在每个时间片开始时,查看进程调度队列,将该时间片分配给进程调度队列中位于队首的进程(进程1)。进程1在该时间片内使用cpu资源。该时间片结束后,进程1停止使用cpu资源。进程1再次进入进程调度队列。这样,调度优先级高的进程被调度的几率高,cpu使用率较高。
143.在一种实现方式中,通过降低异常高负载后台进程的调度优先级降低该进程被cpu调度的几率。比如,通过调整进程的调度优先级值来改变进程的调度优先级。在一种示例中,可以增大异常高负载的后台进程的调度优先级值,以降低异常高负载的后台进程的调度优先级。这样,其他进程(比如前台进程,非异常的后台进程)比异常高负载的后台进程更优先被cpu调度,降低了该进程被分配cpu资源的几率,从而降低该进程使用cpu的时长。
144.在一种示例中,进程1的调度优先级值为-20。示例性的,如图5a所示,在10个时间片(200ms)内,cpu为进程1分配了6个时间片;进程1的cpu使用率为60%。检测到进程1为异常高负载后台进程,则将进程1的调度优先级值修改为19,降低进程1的调度优先级。进程1位于进程调度队列中队首位置的几率降低,即被分配时间片的几率降低。示例性的,如图5b所示,在10个时间片(200ms)内,cpu为进程1分配了3个时间片;进程1的cpu使用率降为30%。
145.在另一示例中,如图5c所示,进程标识(pid)为6508的后台进程的调度优先级(ni)为-20(调度优先级最高),该进程被调用的几率较高,进程负载为247%。检测到该进程为异常高负载后台进程后,通过nice指令将pid为6508的后台进程的调度优先级(ni)修改为19(调度优先级最低)。经过一段时间后,如图5d所示,进程标识(pid)为6508的后台进程的进程负载降至232%。可以看出,降低异常高负载的后台进程的调度优先级后,该进程的进程负载降低,即降低了该进程的运行频率,从而降低了该进程的cpu使用率。
146.方式二:通过设置异常高负载后台进程的cpu使用率阈值降低该进程的cpu使用率。
147.进程的cpu使用率阈值用于限制进程的cpu使用率(进程的cpu使用率小于或等于进程的cpu使用率阈值),即限制进程的cpu使用时长。
148.在一些实施例中,如果确定进程为异常高负载后台进程,则设置该进程的cpu使用率阈值为第一阈值。比如,如果确定进程1为异常高负载后台进程,设置进程1的cpu使用率阈值为第一阈值,这样,在每个调度周期内,cpu为进程1分配的cpu时长占调度周期的比例小于或等于第一阈值,则该进程1在一个调度周期内的cpu使用时长小于或等于(第一阈值*调度周期),即该进程1的cpu使用率小于或等于第一阈值。比如,可以将第一阈值的值设置得较小。这样,异常高负载后台进程在每个调度周期内的cpu使用时长都保持在较低的范围内,降低了异常高负载后台进程使用cpu的时长。
149.在另一些实施例中,进程1的cpu使用率阈值为第一阈值,确定该进程1为异常高负载后台进程,则设置进程1的cpu使用率阈值为第二阈值;其中,第二阈值小于第一阈值。这样,降低了异常高负载后台进程的cpu使用率,即异常高负载后台进程在每个调度周期内的cpu使用时长都降低了,即降低了异常高负载后台进程使用cpu的时长。
150.在一种示例中,可以通过第一指令设置每个进程占用cpu时长的相对权重,根据进程占用cpu时长的相对权重获取进程的cpu使用率阈值;其中,第一进程的cpu使用率阈值=第一进程占用cpu时长的相对权重/全部进程占用cpu时长的相对权重之和。以第一指令为cpu.shares为例。在一种实现方式中,可以采用cpu.shares设置每个进程占用cpu时长的相对权重。比如,采用cpu.shares将进程1占用cpu时长的相对权重(shares值)设置为1024,将进程2的shares值设置为512,将进程3的shares值设置为512。那么进程1的cpu使用率阈值为1024/(1204+512+512)=50%,进程2的cpu使用率阈值为512/(1204+512+512)=25%,进
程3的cpu使用率阈值为512/(1204+512+512)=25%。示例性的,如图6的(a)所示,对于一个单核cpu,cpu调度各个进程时,进程1的cpu使用率不超过50%,即进程1占用的cpu时长不超过50%*单个cpu总运行时长;进程2的cpu使用率不超过25%,即进程2占用的cpu时长不超过25%*单个cpu总运行时长;进程3的cpu使用率不超过25%,即进程3占用的cpu时长不超过25%*单个cpu总运行时长。示例性的,如图6的(b)所示,对于双核cpu(包括cpu0和cpu1),cpu调度各个进程时,进程1的cpu使用率不超过50%,即进程1占用的cpu时长不超过50%*(cpu0总运行时长+cpu1总运行时长)=单个cpu总运行时长;进程2的cpu使用率不超过25%,即进程2占用的cpu时长不超过25%*(cpu0总运行时长+cpu1总运行时长)=50%*单个cpu总运行时长;进程3的cpu使用率不超过25%,即进程3占用的cpu时长不超过25%*(cpu0总运行时长+cpu1总运行时长)=50%*单个cpu总运行时长。在另一种实现方式中,将cpu上的进程分为多个进程组,每个进程组包括一个或多个进程;比如,进程组1包括视频类应用的进程,进程组2包括导航类应用的进程。可以采用cpu.shares设置每个进程组占用cpu时长的相对权重,还可以采用cpu.shares设置进程组内每个进程占用cpu时长的相对权重。示例性的,如图7所示,采用cpu.shares设置进程组1的shares值为50,设置进程组2的shares值为100,设置进程组2内进程1的shares值为500,设置进程组2内进程2的shares值为1000;那么进程组1的cpu使用率阈值为50/(50+100)=33%,进程组2的cpu使用率阈值为100/(50+100)=67%,进程组2内进程1的cpu使用率阈值为(500/(500+1000))*67%=22%,进程组2内进程2的cpu使用率阈值为(1000/(500+1000))*67%=44%。对于一个单核cpu,cpu调度各个进程时,进程组1内各个进程的cpu使用率之和不超过33%,即进程组1内各个进程占用cpu的时长之和不超过33%*单个cpu总运行时长;进程组2内进程1的cpu使用率不超过22%,即进程组2内进程1占用cpu的时长不超过22%*单个cpu总运行时长;进程组2内进程2的cpu使用率不超过44%,即进程组2内进程2占用cpu的时长不超过44%*单个cpu总运行时长。可选的,在一些实施例中,如果cpu存在空闲资源,进程的cpu使用率可以大于对应的cpu使用率阈值。
151.通过第一指令降低异常高负载后台进程占用cpu时长的相对权重,即降低异常高负载后台进程的cpu使用率阈值,这样,cpu调度进程时,异常高负载后台进程的cpu使用率降低,即降低了该进程占用cpu的时长。示例性的,进程1、进程2和进程3的shares值如图6的(a)所示,进程1的cpu使用率阈值为50%,进程2的cpu使用率阈值为25%,进程3的cpu使用率阈值为25%。检测到进程1为异常高负载后台进程,则通过cpu.shares将进程1的shares值设置为2。这样,如图8所示,进程1的cpu使用率阈值变为2/(2+512+512)=0.19%,即cpu调度进程时,进程1的cpu使用率不超过0.19%,即降低了进程1使用cpu的时长。
152.在另一种示例中,可以通过第二指令设置每个进程的cpu使用率阈值。比如,通过第二指令设置cpu的调度周期以及在1个调度周期内进程使用cpu的时长。以cpu.cfs_period_us和cpu.cfs_quota_us为例。cpu.cfs_period_us用于设置cpu的调度周期,比如设为100000(单位:微秒);cpu.cfs_quota_us用于设置在每个调度周期内该进程占用cpu的时长(微秒),比如设为50000(单位:微秒)。对于一个单核cpu,该进程的cpu使用率阈值为50000/100000=50%;对于多个单核cpu或多核cpu,该进程的cpu使用率阈值为50000/(100000*n),n为cpu核的个数,n》1。比如,对于双核cpu,该进程的cpu使用率阈值为50000/(100000*2)=25%。再比如,设置cpu.cfs_period_us=1000,cpu.cfs_quota_us=2000,那
么该进程的cpu使用率阈值为2000/(1000*n);当n=2时,该进程最多占用两个cpu核的全部资源。
153.通过第二指令降低异常高负载后台进程的cpu使用率阈值,这样,cpu调度进程时,异常高负载后台进程的cpu使用率降低,即降低了该进程占用cpu的时长。示例性的,进程1的cpu使用率阈值为50%,检测到进程1为异常高负载后台进程,则将该进程的cpu使用率阈值设置为1%(比如,设置cpu.cfs_period_us=1000,cpu.cfs_quota_us=10),这样,该进程的cpu使用率不会超过1%,降低了异常高负载后台进程的cpu使用率,即降低了异常高负载后台进程占用cpu的时长。
154.方式三:通过周期性地触发进程休眠降低该进程的cpu使用率。
155.cpu调度进程,即将一个时间段内的cpu资源分配给进程使用。本实施例提供的方法中,如果检测到异常高负载后台进程(第一进程),则控制该异常高负载后台进程周期性地休眠。在第一进程休眠时,第一进程不使用cpu资源。也就是说,cpu在进程休眠时,不为其分配cpu资源。比如,cpu采用时间片轮转的方式调度各个进程。确定第一进程在一段时长内休眠,则cpu在该时间段内不为第一进程分配时间片,即第一进程不参与时间片轮转。这样,异常高负载后台进程在休眠时未使用cpu资源,降低了单位时长内该进程使用cpu的时长,即降低了异常高负载后台进程的cpu使用率。
156.本技术实施例中,进程周期性地休眠的时间间隔称为时间槽,该时间间隔或时间槽也称为休眠周期。时间槽的时长为预设值,比如,一个时间槽=m个时间片,m为大于1的整数。示例性的,一个时间槽的时长为200ms。每个时间槽内包括第一进程的运行时间和第一进程的休眠时间。在第一进程的运行时间内,第一进程可以被cpu调度,使用cpu资源。在第一进程的休眠时间内,cpu不调度第一进程,第一进程不使用cpu资源。
157.在一种实施方式中,在每个时间槽内,第一进程的休眠时间长度(休眠时长)相等。示例性的,如图9所示,cpu采用时间片轮转的方式调度各个进程,时间片时长为20ms,时间槽时长为200ms,每个时间槽包括10个时间片。第一进程是异常高负载后台进程,在时间槽1内,第一进程的cpu使用率为60%。从时间槽2开始,第一进程周期性地休眠,在每个时间槽内的运行时长为第一运行时长(140ms),休眠时长为第一休眠时长(60ms)。第一运行时长和第一休眠时长为预设值。
158.在一种实现方式中,cpu确定第一运行时长和第一休眠时长后,在第一运行时长内按照cpu调度规则(比如时间片轮转)为第一进程分配cpu资源;在第一休眠时长内不为第一进程分配cpu资源。
159.在一种实现方式中,如图10所示,cpu周期性地向第一进程发送启动运行指令和暂停运行指令;启动运行指令用于指示第一进程开始运行,暂停运行指令用于指示第一进程开始休眠。cpu向第一进程发送启动运行指令后,第一进程根据启动运行指令开始运行,可以被cpu调度。第一运行时长后,cpu向第一进程发送暂停运行指令,第一进程根据暂停运行指令开始休眠。第一休眠时长后,cpu向第一进程发送启动运行指令,第一进程根据启动运行指令开始运行。这样,第一进程周期性地运行第一运行时长,休眠第一休眠时长。
160.需要说明的是,图9中运行时间为7个连续的时间片,休眠时间为3个连续的时间片。在另一些实现方式中,运行时间可以不是连续的时间片,休眠时间也可以不是连续的时间片。每个时间槽内的休眠时间可以不在该时间槽的最后,休眠时间可以在时间槽内的任
意位置。并且,在各个不同的时间槽内,休眠时间的位置可以相同也可以不同。本技术实施例对此并不进行限定。
161.如图9所示,在第一进程的运行时间内,cpu采用时间片轮转的方式调度各个进程。在时间槽2内,cpu为第一进程分配4个时间片,第一进程在时间槽2内的cpu使用率为40%。在时间槽3内,cpu为第一进程分配3个时间片,第一进程在时间槽3内的cpu使用率为30%。在时间槽4内,cpu为第一进程分配4个时间片,第一进程在时间槽2内的cpu使用率为40%。
162.可以理解的,在另一些实施方式中,cpu可以采用其他方式调度各个进程。比如,cpu按照调度优先级从高到低的顺序调度各个进程,一个进程退出使用cpu资源之后调度另一个进程。本技术实施例提供的功耗控制方法并不限定cpu的调度方式。
163.另一种实施方式中,在各个时间槽内,第一进程的休眠时间长度(休眠时长)可以不相等。示例性的,如图11所示,cpu采用时间片轮转的方式调度各个进程,时间片时长为20ms,时间槽时长为200ms,每个时间槽包括10个时间片。在时间槽1内,第一进程的cpu使用率为60%。检测到第一进程为异常高负载后台进程,从时间槽2开始,第一进程周期性地休眠。在一种实现方式中,在每个时间槽开始时,根据cpu当前负载和预设的目标cpu负载计算当前时间槽内第一进程的运行时长和休眠时长。比如,目标cpu负载可以是根据对cpu运行的历史数据统计得出的。例如,根据历史数据,cpu负载小于或等于20%时,电池温度小于预设温度阈值;则确定预设的目标cpu负载为20%。
164.示例性的,在时间槽2开始时,获取cpu当前负载为50%,cpu当前负载大于目标cpu负载,确定时间槽2内的运行时长为第一运行时长(例如100ms),休眠时长为第一休眠时长(例如100ms)。例如,cpu在第一运行时长内,采用时间片轮转的方式,为第一进程分配了4个时间片。第一进程在时间槽2内的cpu使用率为40%。由于在时间槽2内,降低了第一进程(异常高负载后台进程)的cpu使用率,cpu负载降低。在时间槽3开始时,获取cpu当前负载为40%,cpu当前负载大于目标cpu负载,确定增大时间槽3内的休眠时长。例如,确定时间槽3内的运行时长为第二运行时长(例如80ms),休眠时长为第二休眠时长(例如120ms);其中,第二运行时长《第一运行时长,第二休眠时长》第一休眠时长。例如,cpu在第二运行时长内,采用时间片轮转的方式,为第一进程分配了3个时间片。第一进程在时间槽3内的cpu使用率为30%。由于在时间槽3内,降低了第一进程(异常高负载后台进程)的cpu使用率,cpu负载降低。在时间槽4开始时,获取cpu当前负载为25%,cpu当前负载大于目标cpu负载,确定增大时间槽4内的休眠时长。例如,确定时间槽4内的运行时长为第三运行时长(60ms),休眠时长为第三休眠时长(140ms);其中,第三运行时长《第二运行时长,第三休眠时长》第二休眠时长。例如,cpu在第三运行时长内,采用时间片轮转的方式,为第一进程分配了2个时间片。第一进程在时间槽4内的cpu使用率为20%。由于在时间槽4内,降低了第一进程(异常高负载后台进程)的cpu使用率,cpu负载降低。在时间槽5开始时,获取cpu当前负载为18%,小于目标cpu负载;确定在时间槽5内休眠时长为第三休眠时长,等于时间槽4内的休眠时长。
165.在一种实现方式中,cpu确定每个时间槽内的运行时长和休眠时长后,在运行时长内按照cpu调度规则(比如时间片轮转)为第一进程分配cpu资源;在休眠时长内不为第一进程分配cpu资源。
166.在一种实现方式中,如图12所示,cpu向第一进程发送启动运行指令后,第一进程根据启动运行指令开始运行,可以被cpu调度。第一运行时长后,cpu向第一进程发送暂停运
行指令,第一进程根据暂停运行指令开始休眠。第一休眠时长后,cpu向第一进程发送启动运行指令,第一进程根据启动运行指令开始运行,可以被cpu调度。第二运行时长后,cpu向第一进程发送暂停运行指令,第一进程根据暂停运行指令开始休眠。第二休眠时长后,cpu向第一进程发送启动运行指令,第一进程根据启动运行指令开始运行,可以被cpu调度。第三运行时长后,cpu向第一进程发送暂停运行指令,第一进程根据暂停运行指令开始休眠。第三休眠时长后,cpu向第一进程发送启动运行指令,第一进程根据启动运行指令开始运行,可以被cpu调度。这样,第一进程周期性地休眠。
167.本技术实施例提供的功耗控制方法,检测到后台进程异常高负载,则降低该后台进程的cpu使用率,从而降低cpu负载,解决后台进程高负载带来的电子设备使用卡顿、掉电快、易发热等问题。
168.在一示例中,如图13a所示,不采用本技术实施例提供的功耗控制方法时(优化前),后台进程异常高负载导致cpu负载保持在较高值(40%左右),cpu温度由31.5℃上升至36.5℃。采用本技术实施例提供的功耗控制方法后(优化后),后台进程占用cpu的时长降低,cpu负载降低至20%左右,cpu温度下降至33℃。
169.在另一示例中,如图13b所示,由于存在异常高负载的后台进程,17:45分之前,cpu整体负载较高。采用本技术实施例提供的功耗控制方法后,cpu整体负载由86%下降至56%,小核cpu频点和中核cpu频点都显著下降。由于存在前台应用,大核cpu频点基本保持不变。
170.可以理解的是,本技术实施例提供的电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术实施例的范围。
171.本技术实施例可以根据上述方法示例对上述电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
172.在一种示例中,请参考图14,其示出了上述实施例中所涉及的电子设备的一种可能的结构示意图。该电子设备1400包括:处理单元1410和存储单元1420。
173.其中,处理单元1410,用于对电子设备1400的动作进行控制管理。存储单元1420用于保存电子设备1400的程序代码和数据,处理单元1410调用存储单元1420存储的程序代码,以执行以上方法实施例中的各个步骤。
174.当然,上述电子设备1400中的单元模块包括但不限于上述处理单元1410和存储单元1420。例如,电子设备1400中还可以包括显示单元、电源单元等。显示单元用于显示电子设备1400的显示界面;电源单元用于对电子设备1400供电。
175.其中,处理单元1410可以是处理器或控制器,例如可以是中央处理器(central processing unit,cpu),数字信号处理器(digital signal processor,dsp),专用集成电
路(application-specific integrated circuit,asic),现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。存储单元1420可以是存储器。显示单元可以是显示屏等。
176.例如,处理单元1410为处理器(如图2a所示的处理器110),存储单元1420可以为存储器(如图2a所示的内部存储器121),显示单元可以为显示屏(如图2a所示的显示屏190)。本技术实施例所提供的电子设备1400可以为图2a所示的电子设备100。其中,上述处理器、存储器、显示屏等可以连接在一起,例如通过总线连接。处理器调用存储器存储的程序代码,以执行以上方法实施例中的各个步骤。
177.本技术实施例还提供一种芯片系统,该芯片系统包括至少一个处理器和至少一个接口电路。处理器和接口电路可通过线路互联。例如,接口电路可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路可用于向其它装置(例如处理器)发送信号。示例性的,接口电路可读取存储器中存储的指令,并将该指令发送给处理器。当所述指令被处理器执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本技术实施例对此不作具体限定。
178.本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中手机执行的各个功能或者步骤。
179.本技术实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中手机执行的各个功能或者步骤。
180.通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
181.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
182.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
183.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
184.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式
体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
185.以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种功耗控制方法,应用于电子设备,其特征在于,所述电子设备包括处理器,所述处理器上运行有第一进程,所述第一进程对应的第一应用在所述电子设备后台运行,所述方法包括:检测到所述第一进程的负载高于预设负载阈值、且运行时长大于或等于预设时长阈值;确定所述第一应用的运行不被用户感知;降低所述第一进程的处理器使用率。2.根据权利要求1所述的方法,其特征在于,降低所述第一进程的处理器使用率之前,所述方法还包括:确定所述电子设备满足预设的异常条件;其中,所述异常条件包括下列至少一项:电子设备的处理器温度大于预设温度阈值;电子设备的电池电量在预设时长内下降的值大于预设电量阈值;电子设备上运行的前台应用运行卡顿。3.根据权利要求1或2所述的方法,其特征在于,所述降低所述第一进程的处理器使用率包括:控制所述第一进程周期性地休眠;在所述第一进程休眠时,所述第一进程未使用处理器资源。4.根据权利要求3所述的方法,其特征在于,每个休眠周期内包括第一进程的运行时间和休眠时间;在第一进程的运行时间内,所述第一进程根据处理器的调度使用处理器资源。5.根据权利要求3或4所述的方法,其特征在于,所述第一进程在每个休眠周期内的休眠时间相等,所述休眠时间为预设值。6.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:根据处理器当前负载和预设的目标负载确定当前休眠周期内的休眠时间。7.根据权利要求1或2所述的方法,其特征在于,所述降低所述第一进程的处理器使用率包括:降低所述第一进程的调度优先级,所述调度优先级用于指示进程被处理器分配处理器资源的顺序。8.根据权利要求7所述的方法,其特征在于,所述降低所述第一进程的调度优先级包括:增大所述第一进程的调度优先级数值。9.根据权利要求1或2所述的方法,其特征在于,所述降低所述第一进程的处理器使用率包括:降低所述第一进程的处理器使用率阈值。10.根据权利要求1-9任意一项所述的方法,其特征在于,所述第一应用的运行不被用户感知包括:所述第一应用未进行音频输入或输出;并且,所述第一应用未通过移动通信或无线通信接收或发送数据。11.根据权利要求1-10任意一项所述的方法,其特征在于,所述第一应用在所述电子设
备后台运行包括:所述第一应用不存在人机交互界面;或,所述第一应用的人机交互界面停止在所述电子设备的屏幕上显示。12.一种电子设备,其特征在于,所述电子设备包括:处理器和存储器;所述存储器与所述处理器耦合;所述存储器用于存储计算机程序代码;所述计算机程序代码包括计算机指令,当所述处理器执行上述计算机指令时,使得所述电子设备执行如权利要求1-11任意一项所述的方法。13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-11任意一项所述的方法。14.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1-11任意一项所述的方法。

技术总结
本申请实施例提供一种功耗控制方法及装置,涉及终端技术领域。检测到后台应用对应的进程的负载高于预设负载阈值、且运行时长大于或等于预设时长阈值;并且确定该后台应用的运行不被用户感知;则降低该后台应用对应的进程在单位时长内使用处理器资源的时长,降低该进程的处理器使用率。这样可以减少该异常高负载后台进程对处理器资源的占用,释放处理器资源,降低处理器负载,减少处理器功耗,提高了处理器性能。理器性能。理器性能。


技术研发人员:赵京 黄文
受保护的技术使用者:荣耀终端有限公司
技术研发日:2022.01.28
技术公布日:2023/8/8
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐