WO2016058149A1 - 一种预测处理器利用率的方法、处理装置和终端设备 - Google Patents

一种预测处理器利用率的方法、处理装置和终端设备 Download PDF

Info

Publication number
WO2016058149A1
WO2016058149A1 PCT/CN2014/088693 CN2014088693W WO2016058149A1 WO 2016058149 A1 WO2016058149 A1 WO 2016058149A1 CN 2014088693 W CN2014088693 W CN 2014088693W WO 2016058149 A1 WO2016058149 A1 WO 2016058149A1
Authority
WO
WIPO (PCT)
Prior art keywords
processor
time
message
processing
time period
Prior art date
Application number
PCT/CN2014/088693
Other languages
English (en)
French (fr)
Inventor
彭钰
朱宗卫
李曦
刘腾福
吕良
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2014/088693 priority Critical patent/WO2016058149A1/zh
Priority to CN201480028027.XA priority patent/CN105706022B/zh
Publication of WO2016058149A1 publication Critical patent/WO2016058149A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种预测处理器利用率的方法、处理装置和终端设备。该预测处理器利用率的方法包括:获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、该待调控处理器中每一处理器在该第一时间段内用于处理消息的时间和该待调控处理器中每一处理器在该第一时间段内处于非空闲状态时间;根据预设的消息处理阈值、该待调控处理器中每一处理器在该第一时间段内的利用率、该待调控处理器中每一处理器在该第一时间段内用于处理消息的时间和该待调控处理器中每一处理器在该第一时间内段处于非空闲状态时间,预测该待调控处理器中每一处理器在第二时间段内的利用率。能够优化对处理器的利用率的预测。

Description

一种预测处理器利用率的方法、处理装置和终端设备 技术领域
本发明实施例涉及信息技术领域,尤其涉及一种预测处理器利用率的方法、处理装置和终端设备。
背景技术
目前,移动手持设备大多数由电池供电,相对于由市电供电的台式机设备,这类设备的电源供应是有限的。尤其对于各种智能手持设备来说,电池工作时间的长短在某种程度上决定了其性能的优劣。为了延长电池的工作时间,一种办法是利用各种存储介质,改善电池的性能,以提高电池的存储的电量。但是这方面的工作进展仍然缓慢。另一种更有效的方法是降低系统运行的功耗,以最大化延长电池的工作时间。
降低系统的运行功耗最典型的方案是针对中央处理器(Central Processing Unit,简称处理器)的动态调压(Dynamic Voltage Scaling,简称DVS)技术。概括的说,在降低处理器运行频率时,将时间划分为相同时间长度的调频周期,计算当前调频周期内处理器非空闲状态时间在处理器工作状态时间的占有率,用该占有率表示当前调频周期内处理器的利用率,并将此占有率作为下一调频周期内处理器的利用率。基于该利用率与预设阈值的比乘以当前CPU的运行频率得到下一调频周期内CPU的运行频率。其中,下一调频周期内CPU频率调节是基于当前调频周期内CPU利用率,过于保守,即用较高的频率运行较少的任务,功耗比较高。
发明内容
本发明实施例提供了一种预测处理器利用率的方法、处理装置和终端设备,利用处理器用于处理消息的时间作为预测处理器利用率的因子,优化对处理器的利用率的预测。
第一方面,提供了一种预测处理器利用率的方法,所述方法包括:
获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;
根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间内段处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率。
其中,该预测处理器利用率的方法可以用于处理器降频时,预测该处理器的利用率,即该方法为处理器降频时预测该处理器利用率的方法。
结合第一方面,在第一方面的第一种可能的实现方式中,所述获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,具体为:
获得所述至少一个待调控处理器中每一处理器在所述第一时间段内运行所有任务的时间中用于处理消息的时间总和。
结合第一方面或者第一方面第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述至少一个待调控处理器中每一处理器包括第一处理器,当系统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态,所述获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
若所述第一处理器处理消息的状态为所述第一处理器正在处理消息,则:
获得所述第一处理器正在处理所述消息的消息处理开始时间;
若所述消息处理开始时间晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述第一处理器用于处理消息的时间等于当前时间减去所述消息处理开始时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间;
在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现 方式中,在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,所述方法还包括:
若所述消息处理开始时间不晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述第一处理器用于处理消息的时间等于当前时间减去所述系统任务调度器上一次发生上下文切换的时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间。结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,
所述至少一个待调控处理器中每一处理器包括第一处理器,当系统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态,所述获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
若所述第一处理器处理消息的状态为所述第一处理器不在处理消息,则:
当所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,获得消息处理开始时间和结束时间,若所述消息处理开始时间早于所述系统任务调度器上一次发生上下文切换时间,则所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述系统任务调度器上一次发生上下文切换的时间;
在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,所述方法还包括:
若所述消息处理开始时间不早于所述系统任务调度器上一次发生上下文切换时间,则所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述消息处理开始时间。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第五种可 能的实现方式中的任一种可能的实现方式,在第一方面的第六种可能的实现方式中,所述根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率,具体为:
计算所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间占所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的比例;
根据所述预设消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率和所述比例,预测所述待调控处理器中每一处理器在所述第二时间段内的利用率。
结合第一方面第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述至少一个待调控处理器中每一处理器包括第一处理器,若所述第一处理器的所述比例小于所述预设的消息处理阈值,则采用如下公式预测所述第一处理器在所述第二时间段内的利用率:
next_cpu_load=current_cpu_load*R+current_cpu_load*(m/n)*(1-R);
其中,current_cpu_load为所述第一处理器在所述第一时间段内的利用率;next_cpu_load为预测的所述第一处理器在所述第二时间段内的利用率;R为缩放比例,0≤R<1;m是所述第一处理器在所述第一时间段内用于处理消息的时间占所述第一处理器在所述第一时间段内处于非空闲状态时间的比例,0≤m≤1;n是所述预设的消息处理阈值。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第七种可能的实现方式中的任一种可能的实现方式,在第一方面的第八种可能的实现方式中,所述方法还包括:
根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率中的最大值调控所述待调控处理器中每一处理器在所述第二时间段内的运行频率;或
根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率分别调控与所述每一处理器的利用率对应的每一处理器在所述第二时间段内的 运行频率。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第八种可能的实现方式中的任一种可能的实现方式,在第一方面的第九种可能的实现方式中,所述第一时间段为当前调频周期,所述第二时间段为下一调频周期。
第二方面,提供了一种处理装置,所述装置包括:
获得模块,用于获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;
预测模块,用于根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率。
结合第二方面,在第二方面的第一种可能的实现方式中,所述获得模块用于获得至少一个待调控处理器中每一处理器在第一时间段内用于处理消息的时间,具体为:
所述获得模块用于获得所述至少一个待调控处理器中每一处理器在所述第一时间段内运行所有任务的时间中用于处理消息的时间总和。
其中,该装置可以为处理器降频时,预测该处理器的利用率,即该装置为处理器降频时预测该处理器利用率的装置。
结合第二方面或者第二方面第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述至少一个待调控处理器中每一处理器包括第一处理器,所述装置还包括检查模块,用于当系统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态;
所述获得模块用于获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
若所述检查模块检查到所述第一处理器处理消息的状态为所述第一处理器正在处理消息,则:
所述装置还包括消息处理开始时间获得模块,用于获得所述第一处理器正 在处理所述消息的消息处理开始时间;
若所述消息处理开始时间晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述装置还包括消息处理时间计算模块,用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于当前时间减去所述消息处理开始时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间;
所述装置还包括累加模块,用于在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,在所述累加模块,用于在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,
若所述消息处理开始时间不晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述消息处理时间计算模块还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于当前时间减去所述系统任务调度器上一次发生上下文切换的时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间。
结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式中,
所述至少一个待调控处理器中每一处理器包括第一处理器,所述装置还包括检查模块,用于当系统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态;
所述获得模块用于获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
若所述检查模块检查到所述第一处理器处理消息的状态为所述第一处理器 不在处理消息,则:
当所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述装置还包括消息处理开始时间获得模块和消息处理结束时间获得模块,其中,所述消息处理开始时间获得模块用于获得消息处理开始时间,所述消息处理结束时间获得模块用于获得消息处理结束时间;若所述消息处理开始时间早于所述系统任务调度器上一次发生上下文切换时间,则所述消息处理时间计算模块还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述系统任务调度器上一次发生上下文切换的时间;
所述装置还包括累加模块,用于在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,在所述累加模块,用于在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,所述装置还包括:
若所述消息处理开始时间不早于所述系统任务调度器上一次发生上下文切换时间,则所述消息处理时间计算模块还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述消息处理开始时间。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第五种可能的实现方式中的任一种可能的实现方式,在第二方面的第六种可能的实现方式中,所述预测模块还包括:
比例计算模块,用于计算所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间占所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的比例;
处理模块,用于根据所述预设消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率和所述比例,预测所述待调控处理器中每一 处理器在所述第二时间段内的利用率。
结合第二方面第六种可能的实现方式,在第二方面的第七种可能的实现方式中,所述至少一个待调控处理器中每一处理器包括第一处理器,若所述第一处理器的所述比例小于所述预设的消息处理阈值,所述装置还包括:
公式计算模块,用于采用如下公式预测所述第一处理器在所述第二时间段内的利用率:
next_cpu_load=current_cpu_load*R+current_cpu_load*(m/n)*(1-R);
其中,current_cpu_load为所述第一处理器在所述第一时间段内的利用率;next_cpu_load为预测的所述第一处理器在所述第二时间段内的利用率;R为缩放比例,0≤R<1;m是所述第一处理器在所述第一时间段内用于处理消息的时间占所述第一处理器在所述第一时间段内处于非空闲状态时间的比例,0≤m≤1;n是所述预设的消息处理阈值。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第七种可能的实现方式中的任一种可能的实现方式,在第二方面的第八种可能的实现方式中,所述装置还包括:
第一调控模块,用于根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率中的最大值调控所述待调控处理器中每一处理器在所述第二时间段内的运行频率;或
第二调控模块,用于根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率分别调控与所述每一处理器的利用率对应的每一处理器在所述第二时间段内的运行频率。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第八种可能的实现方式中的任一种可能的实现方式,在第二方面的第九种可能的实现方式中,所述第一时间段为当前调频周期,所述第二时间段为下一调频周期。
第三方面,提供了一种终端设备,所述设备包括处理器和存储器,所述存储器存储所述处理器运行的程序,所述处理器运行所述程序,用于:
获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;
根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时 间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间内段处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率。
其中,该设备可以为处理器降频时,预测该处理器的利用率,即该设备为处理器降频时预测该处理器利用率的设备。
结合第三方面,在第三方面的第一种可能的实现方式中,所述处理器用于获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,具体为:
所述处理器用于获得所述至少一个待调控处理器中每一处理器在所述第一时间段内运行所有任务的时间中用于处理消息的时间总和。
结合第三方面或者第三方面第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述至少一个待调控处理器中每一处理器包括第一处理器,当系统任务调度器在所述第一时间段内发生上下文切换时,所述处理器还用于检查所述第一处理器处理消息的状态,所述处理器用于获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
若第一处理器处理消息的状态为所述第一处理器正在处理消息,则:
所述处理器还用于获得所述第一处理器正在处理所述消息的消息处理开始时间;
若所述消息处理开始时间晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述处理器还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于当前时间减去所述消息处理开始时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间;
在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,所述处理器还用于累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,所述处理器还用于累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,
若所述消息处理开始时间不晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述处理器还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于当前时间减去所述系统任务调度器上一次发生上下文切换的时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间。
结合第三方面或者第三方面的第一种可能的实现方式,在第三方面的第四种可能的实现方式中,
所述至少一个待调控处理器中每一处理器包括第一处理器,当系统任务调度器在所述第一时间段内发生上下文切换时,所述处理器还用于检查所述第一处理器处理消息的状态,所述处理器用于获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
若第一处理器处理消息的状态为所述第一处理器不在处理消息,则:
当所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述处理器还用于获得消息处理开始时间和所述消息处理结束时间,若所述消息处理开始时间早于所述系统任务调度器上一次发生上下文切换时间,则所述处理器还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述系统任务调度器上一次发生上下文切换的时间;
在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,所述处理器还用于累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
结合第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,所述处理器还用于累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,所述设备还包括:
若所述消息处理开始时间不早于所述系统任务调度器上一次发生上下文切换时间,则所述处理器还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述所述消息 处理开始时间。
结合第三方面或第三方面的第一种可能的实现方式至第三方面的第五种可能的实现方式中的任一种可能的实现方式,在第三方面的第六种可能的实现方式中,所述处理器用于根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率,具体为:所述处理器用于:
计算所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间占所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的比例;
根据所述预设消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率和所述比例,预测所述待调控处理器中每一处理器在所述第二时间段内的利用率。
结合第三方面第六种可能的实现方式,在第三方面的第七种可能的实现方式中,所述至少一个待调控处理器中每一处理器包括第一处理器,若所述第一处理器的所述比例小于所述预设的消息处理阈值,所述处理器还用于采用如下公式预测所述第一处理器在所述第二时间段内的利用率:
next_cpu_load=current_cpu_load*R+current_cpu_load*(m/n)*(1-R);
其中,current_cpu_load为所述第一处理器在所述第一时间段内的利用率;next_cpu_load为预测的所述第一处理器在所述第二时间段内的利用率;R为缩放比例,0≤R<1;m是所述第一处理器在所述第一时间段内用于处理消息的时间占所述第一处理器在所述第一时间段内处于非空闲状态时间的比例,0≤m≤1;n是所述预设的消息处理阈值。
结合第三方面或第三方面的第一种可能的实现方式至第三方面的第七种可能的实现方式中的任一种可能的实现方式,在第三方面的第八种可能的实现方式中,所述处理器还用于:
根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率中的最大值调控所述待调控处理器中每一处理器在所述第二时间段内的运行频率;或
根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率分别调控与所述每一处理器的利用率对应的每一处理器在所述第二时间段内的运行频率。
结合第三方面或第三方面的第一种可能的实现方式至第三方面的第八种可能的实现方式中的任一种可能的实现方式,在第三方面的第九种可能的实现方式中,所述第一时间段为当前调频周期,所述第二时间段为下一调频周期。
第四方面,提供了一种计算机程序产品,,所述计算机程序产品包括可读取存储介质用于存储计算机程序代码,所述的计算机程度代码运行在一个处理器上,所述计算机程序代码包括:
用于获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的指令;
用于根据预设的消息处理阈值、所述待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率的指令。
在上述技术方案中,本发明实施例提供的一种预测处理器利用率的方法,通过获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间内段处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率,能够优化对处理器利用率的预测,这样在降低处理器运行频率时,可以基于预测的处理器的利用率调控处理的运行频率,从而可以降低处理器的功耗。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的一种预测处理器利用率的方法示意图;
图2是本发明实施例提供的又一种预测处理器利用率的方法示意图;
图3是本发明实施例提供的一种获得一个处理器在一个上下文切换周期内用于处理一个消息时间的方法示意图;
图4是本发明实施例提供的再一种预测处理器利用率的方法示意图;
图5a是本发明实施例提供的一种系统任务调度示意图;
图5b是本发明实施例提供的又一种系统任务调度示意图;
图6是本发明实施例提供的一种处理装置的结构示意图;
图7是本发明实施例提供的一种终端设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当本发明实施例提及“第一”、“第二”等序数词时,除非根据上下文其确实表达顺序之意,应当理解为仅仅是起区分之用。
图1给出了本发明实施例提供的一种预测处理器利用率的方法示意图,该方法的执行主体可以是单核处理器,也可以是多核处理器,当然也可以是终端设备。该方法包括以下步骤:
S102:获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间。
待调控处理器(CPU)为在线(Online)的处理器,即在第一时间段内处于工作状态的处理器。处理器的工作状态包括空闲状态和非空闲状态。处理器处 于空闲状态的时间可以通过系统函数获取。处理器处于非空闲状态时间可以通过处理器处于工作状态时间减去处理器处于空闲状态时间。在第一时间段内,处理器处于非空闲状态时间占处理器处于工作状态时间的比例为处理器在第一时间段内的利用率。处理器在第一时间段内的利用率可以通过1减去在第一时间段内空闲进程(Idle进程)的运行时间占处理器运行总时间的比例。处理器处于非空闲状态包括处理器处于处理消息(Message)的状态和处理器处于处理非消息的状态。其中,消息指的是线程(Thread)从消息队列(Message Queue)中取出的消息。消息队列是一种进程(Process)间通信或同一进程的不同线程间的通信方式。对于在Android或其它带有界面的操作系统中,UI线程是一个带有消息循环的线程,该消息指UI线程在消息循环过程中取出的消息。需要说明的是,本发明实施例关注在第一时间段内处理器的非空闲状态时间不为零的情况。
该第一时间段可以为处理器的一个调频周期。调频周期指的是操作系统每相邻两次调用频率调控算法对处理器进行运行频率调控的时间间隔。调频周期可以是相同的时间长度,也可以是不同的时间长度。比如,某一时间段内调频周期的时间长度不同于另一时间段内调频周期的时间长度。该第一时间段也可以包括连续的至少两个调频周期。
S104:根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间内段处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率。
该第一时间段可以为处理器的当前调频周期。该第二时间段可以为处理器的下一个调频周期。
该预设的消息处理阈值可以根据当前操作系统正在运行的应用程序的不同,设置不同的消息处理阈值。该消息处理阈值,可以是百分数形式,也可以是小数形式。本发明实施例对此不做限定。例如,若当前操作系统正在运行的应用程序是游戏类的应用程序,则消息处理阈值可以设置为60%;若当前操作系统正在运行的应用程序是音乐类的应用程序,则消息处理阈值可以设置为0.15。具体的消息处理阈值,可以根据实际需要设定。
本发明实施例提供的一种预测处理器利用率的方法,通过获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;根据预设的消息处理阈值、所述待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间内段处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率,利用处理器用于处理消息的时间作为预测处理器利用率的因子,能够优化对处理器的利用率的预测。进一步的,根据优化的处理器的利用率,可以调控每一处理器的运行频率,降低能耗。
其中,所述获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,具体为:
获得所述每一处理器在所述第一时间段内运行所有任务的时间中用于处理消息的时间总和。
进一步的或可选的,所述至少一个待调控处理器中每一处理器包括第一处理器,当系统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态,所述获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
若所述第一处理器处理消息的状态为所述第一处理器正在处理消息,则:
获得所述第一处理器正在处理所述消息的消息处理开始时间;
若所述消息处理开始时间晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述第一处理器用于处理消息的时间等于当前时间减去所述消息处理开始时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间;
在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
进一步的,在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得 到所述第一处理器在所述第一时间段内用于处理消息的时间之前,所述方法还包括:
若所述消息处理开始时间不晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述第一处理器用于处理消息的时间等于当前时间减去所述系统任务调度器上一次发生上下文切换的时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间。
可选的,所述至少一个待调控处理器中每一处理器包括第一处理器,当系统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态,所述获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
若所述第一处理器处理消息的状态为所述第一处理器正在处理消息,则:
获得所述第一处理器正在处理所述消息的消息处理开始时间;
若所述消息处理开始时间不晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述第一处理器用于处理消息的时间等于当前时间减去所述系统任务调度器上一次发生上下文切换的时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间;
在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
进一步的,在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,所述方法还包括:若所述消息处理开始时间晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述第一处理器用于处理消息的时间等于当前时间减去所述消息处理开始时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间。
可选的,所述至少一个待调控处理器中每一处理器包括第一处理器,当系 统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态,所述获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
若所述第一处理器处理消息的状态为所述第一处理器不在处理消息,则:
当所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,获得消息处理开始时间和结束时间,若所述消息处理开始时间早于所述系统任务调度器上一次发生上下文切换时间,则所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述系统任务调度器上一次发生上下文切换的时间;
在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
进一步的,在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,所述方法还包括:
若所述消息处理开始时间不早于所述系统任务调度器上一次发生上下文切换时间,则所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述消息处理开始时间。
可选的,所述至少一个待调控处理器中每一处理器包括第一处理器,当系统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态,所述获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
若所述第一处理器处理消息的状态为所述第一处理器不在处理消息,则:
当所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,获得消息处理开始时间和结束时间,若所述消息处理开始时间不早于所述系统任务调度器上一次发生上下文切换时间,则所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述消息处理开始时间;
在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一 处理器在所述第一时间段内用于处理消息的时间。
进一步的,若所述消息处理开始时间早于所述系统任务调度器上一次发生上下文切换时间,则所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述系统任务调度器上一次发生上下文切换的时间。
其中,本发明实施例还提供了另一种预测处理器利用率的方法,所述方法包括:
获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;
根据所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率。
其中,所述每一处理器在第一时间段内的利用率等于每一处理器处于非空闲状态的时间占所述每一处理器处于工作状态时间的比例。
其中,根据所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率,具体为:
计算所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间占所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的比例;
根据所述比例和所述待调控处理器中每一处理器在所述第一时间段内的利用率,预测所述待调控处理器中每一处理器在所述第二时间段内的利用率。
具体的,可以根据如下公式预测一个处理器在所述第二时间段内的利用率,所述一个处理器为第一处理器:
next_cpu_load=current_cpu_load*R+current_cpu_load*m*(1-R);
其中,current_cpu_load为所述第一处理器在所述第一时间段内的利用率;next_cpu_load为预测的所述第一处理器在所述第二时间段内的利用率;R为缩放比例,0≤R<1;m是所述第一处理器在所述第一时间段内用于处理消息的时 间占所述第一处理器在所述第一时间段内处于非空闲状态时间的比例,0≤m≤1。
其中,所述第一时间段内可以为当前调频周期,所述第二时间段为下一调频周期。
通过上述这种方法,也可以调整处理器的利用率,进而根据利用率调整处理器的运行频率。
图2给出了本发明实施例提供的又一预测处理器利用率的方法示意图,该方法的执行主体可以是单核心处理器,也可以是多核心处理器,包括以下步骤:
S202:获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、该待调控处理器中每一处理器在该第一时间段内用于处理消息的时间和该待调控处理器中每一处理器在该第一时间段内处于非空闲状态时间。
待调控处理器(CPU)为在线(Online)的处理器,即在第一时间段内处于工作状态的处理器。处理器的工作状态包括空闲状态和非空闲状态。处理器处于空闲状态的时间可以通过系统函数获取。处理器处于非空闲状态时间可以通过处理器处于工作状态时间减去处理器处于空闲状态时间。处理器处于非空闲状态时间也可以通过累加该处理器上运行所有非空闲进程的时间得到。处理器处于非空闲状态时间占处理器处于工作状态时间的比例为处理器的利用率。处理器在第一时间段内的利用率可以通过1减去在第一时间段内空闲进程(Idle进程)的运行时间占处理器运行总时间的比例。处理器处于非空闲状态包括处理器处于处理消息(Message)的状态和处理器处于处理非消息的状态。其中,消息指的是线程(Thread)从消息队列(Message Queue)中取出的消息。消息队列是一种进程(Process)间通信或同一进程的不同线程间的通信方式。对于在Android或其它带有界面的操作系统中,UI线程是一个带有消息循环的线程,该消息指UI线程在消息循环过程中取出的消息。
该第一时间段可以为处理器的一个调频周期。调频周期指的是操作系统每相邻两次调用频率调控算法对处理器进行运行频率调控的时间间隔。调频周期可以是相同的时间长度,也可以是不同的时间长度。比如,某一时间段内调频周期的时间长度不同于另一时间段内调频周期的时间长度。该第一时间段也可以包括连续的至少两个调频周期。
S204:计算该待调控处理器中每一处理器在该第一时间段内用于处理消息的时间占该待调控处理器中每一处理器在该第一时间段内处于非空闲状态时间 的比例。
具体的,在第一时间段内,该待调控处理的某个处理器用于处理消息的时间msg_time占该某个处理器处于非空闲状态时间busy_time的比例为消息处理时间占空比ρ,ρ的计算公式为:
Figure PCTCN2014088693-appb-000001
消息处理时间占空比ρ不仅反映了该某个处理器在一段时间内用于处理消息时间的比重,而且为调频算法提供了一个便于比较的归一化的参考量。
S206:判断该比例是否小于预设的消息处理阈值。若该比例小于预设的消息处理阈值,则执行步骤S208。
该预设的消息处理阈值可以根据当前操作系统正在运行的应用程序的不同,设置不同的消息处理阈值。该消息处理阈值,可以是百分数形式,也可以是小数形式。本发明实施例对此不做限定。例如,若当前操作系统正在运行的应用程序是游戏类的应用程序,则消息处理阈值可以设置为60%;若当前操作系统正在运行的应用程序是音乐类的应用程序,则消息处理阈值可以设置为0.15。具体的消息处理阈值,可以根据实际需要设定。
S208:采用如下预测公式预测该每一处理器在第二时间段内的利用率。
其中,该至少一个待调控处理器中的每一处理器包括第一处理器,若该第一处理器在第一时间段内用于处理消息的时间占该第一处理器在第一时间段内处于非空闲状态时间的比例,小于预设的消息处理阈值,采用如下的预测公式预测该第一处理器在第二时间段内的利用率:
next_cpu_load=current_cpu_load*R+current_cpu_load*(m/n)*(1-R);
其中,current_cpu_load为该第一处理器在该第一时间段内的利用率;next_cpu_load为预测的该第一处理器在该第二时间段内的利用率;R为缩放比例,0≤R<1;m是该第一处理器在该第一时间段内用于处理消息的时间占该第一处理器在该第一时间段内处于非空闲状态时间的比例,0≤m≤1;n是该预设的消息处理阈值。其中,R可以取0.8。
其中,该第一处理器在第一时间段的利用率也可以通过如下方式得到:计算该第一处理器在第一时间段内空闲进程的运行时间占该第一处理器在第一时间段内处于工作状态时间的比例;1减去该比例即为该第一处理器在第一时间段的利用率。也可以先累加该第一处理器在第一时间段内所有非空闲进程的运行 时间,计算该所有非空闲进程的运行时间占该第一处理器在第一时间段内处于工作状态时间的比例,即为该第一处理器在第一时间段的利用率。
通过S208预测得到该待调控处理器的每一处理器在第二时间段内的利用率后,利用该利用率调控处理器的运行频率,可以有如下两种实现方式:
第一种方式:
S210:根据预测的该待调控处理器中每一处理器在该第二时间段内的利用率中的最大值调控该待调控处理器中每一处理器在该第二时间段内的运行频率。
例如,待调控处理器的个数为3,采用S208中的预测公式,分别获取该3个处理器在第二时间段内的利用率,获得该3个处理器在第二时间段内利用率的最大值,例如第2个处理器的利用率最大。
其中,根据利用率中的最大值调控该待调控处理器中每一处理器在该第二时间段内的运行频率,具体为:
根据利用率中的最大值,采用动态电压频率调节(Dynamic Voltage Frequency Scaling,简称DVFS)技术,调控第二时间段内该待调控处理器的运行频率和该待调控处理器的工作电压。
处理器的动态功耗与处理器的工作电压的平方成正比,功耗可随着工作电压的降低以二次方的速度降低,因此降低处理器的运行频率的同时降低工作电压是降低功耗的有力措施。动态电压频率调节技术的主要思路是根据处理器的工作状态改变功耗管理模式。
动态电压频率调节为目前在半导体领域被广泛采用的一种动态电压频率调节技术,动态电压频率调节技术具体是通过动态调节芯片的运行频率和工作电压,从而达到节能的目的。利用动态电压频率调节技术,将获取的处理器的利用率转换为处理器的运行频率,再根据处理器的运行频率计算得到相应的处理器工作电压,以达到节能的目的。
其中,利用动态电压频率调节技术,将预测得到的处理器的利用率转换为处理器的运行频率,可以为:取预测的该每一处理器在第二时间段内利用率的最大值为max_load,若max_load小于第一降频阈值r(例如,r可以取87%或者0.87),在第二时间段内,该待调控处理器的运行频率next_freq计算公式如下:
Figure PCTCN2014088693-appb-000002
其中,current_freq为在第一时间段内,该待调控处理器的运行频率。在该第一种方式下,在第一时间段内,该待调控处理器的每一处理器均遵循同一运行频率。
该计算得到的第二时间段内该调控处理器的运行频率,为该至少一个待调控处理器在第二时间段内均遵循的运行频率。例如,在第二时间段内,该3个处理器的运行频率均为next_freq对应的频率值。
第二种方式:
S210’:根据预测的该待调控处理器中每一处理器在该第二时间段内的利用率分别调控与该每一处理器的利用率对应的每一处理器在该第二时间段内的运行频率。
首先,采用S208中的预测公式,分别获得该待调控处理器中每一处理器在该第二时间段内的利用率next_cpu_load;
若该待调控处理器的某个处理器在第二时间段内的利用率next_cpu_load小于第一降频阈值r(例如,r可以取87%或者0.87),该某个处理器为第二处理器,利用动态电压频率调节技术,将获得的该第二处理器的利用率转换为该第二处理器的运行频率,可以为:
Figure PCTCN2014088693-appb-000003
next_freq为该第二处理器在第二时间段内的运行频率。current_freq为获得的该第二处理器在第一时间段内的运行频率。
采用S210’中的调频公式,分别获得该每一处理器在第二时间段内的运行频率,该每一处理器在第二时间段内分别以各自的运行频率运行。
通过本发明实施例提供的方法,将处理器用于处理消息的时间作为预测处理器利用率的因子,能够优化对处理器的利用率的预测;根据处理器的利用率,利用动态电压频率技术,调控每一处理器的运行频率和工作电压,达到节省能耗的目的。
其中,S202中获得至少一个待调控处理器中每一处理器在第一时间段内用于处理消息的时间,具体为,获得该每一处理器在该第一时间段内运行所有任务的时间中用于处理消息的时间总和。其中,该任务可以指一系列共同达到某一目的的操作。例如,一个任务可以是由应用程序完成的某个活动。一个任务 可以是一个进程也可以是一个线程。例如,读取数据并将数据放入内存中,这个任务可以作为一个进程来实现,也可以作为一个线程(或作为一个中断任务)来实现。
其中,获得该每一处理器在该第一时间段内运行所有任务的时间中用于处理消息的时间总和,可以为,在第一时间段内的系统任务调度器发生上下文切换(Context Switch)的周期内,获得每一处理器在该第一时间段内运行所有任务的时间中用于处理消息的时间总和,包括:
在该第一时间段内的系统任务调度器发生一次上下文切换的周期内,获得一个处理器运行一个任务的时间中用于处理消息的时间,其中该任务可以为一个线程;
其中,系统任务调度器每相邻两次发生上下文切换的时间为一个上下文切换周期。例如,可以称系统任务调度器从上一次发生上下文切换到当前时间本次发生上下文切换的时间为一个上下文切换周期。
在第一时间段内,系统任务调度器可能发生多次上下文切换,针对这种情况,在该第一时间段内,获得一个处理器在系统任务调度器发生多次上下文切换的周期内运行该任务的时间中用于处理消息的时间;
在第一时间段内,如果还有其他任务,则处理器运行其他任务的时间中用于处理消息的时间可以参考上面的方式获得。
在第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加该处理器运行每个任务的时间中用于处理消息的时间,得到该处理器在所述第一时间段内用于处理消息的时间。
其中,在该第一时间段内的系统任务调度器发生一次上下文切换的周期内,获得一个处理器运行一个任务的时间中用于处理消息的时间,可以参考如下图3一个处理器的一个线程在一个上下文切换周期内用于处理一个消息的时间的方法示意图。
一个处理器的一个线程在一个上下文切换周期内用于处理一个消息的时间的方法,包括以下步骤:
S302:该线程的消息队列处于消息循环状态。
线程是是操作系统能够进行运算调度的最小单位。线程可以包含在进程之中,是进程中的实际运作单位。一个线程指的是进程中一个单一顺序的控制流, 一个进程中可以并发多个线程,每个线程可以并行执行不同的任务。
应用程序启动的时候,操作系统会为应用程序创建至少一个线程,应用程序的每个线程在启动的时候,操作系统会为每一个线程创建一个消息队列。一个线程的生命周期包括消息队列的创建和消息循环两个阶段。其中,消息循环阶段又包括等待消息和处理消息两个子阶段。例如,应用程序1启动的时候,操作系统为应用程序1创建一个线程1,为线程1创建一个消息队列1。该线程1和其他线程均可以向该消息队列1发送消息。该线程1从该消息队列1中取出某个消息,并执行与该消息对应的任务。
线程包括就绪、阻塞和运行三种基本状态。
其中,就绪状态,指该线程运行所需的一切条件都得到满足,已经获得必要的资源和设备。但是因为未获得处理器的使用权,所以该线程暂不能运行,需要等待分配处理器资源。
运行状态,指该线程在处理器上处于运行状态,该线程已经获得了需要运行的必要的资源和设备,也获得了处理器的使用权,应用程序正在处理器上运行。
阻塞状态,指线程等待某种事件完成(例如,等待I/O设备操作的完成)而暂时不能运行的状态。处于阻塞状态的线程的任务没有运行结束,只是暂时让出处理器使用权,让其他处于就绪状态的线程获得处理器使用权。处于阻塞状态的线程不能参加处理器资源的竞争,此时,即使系统分配给该线程处理器资源,该线程也不能运行。睡眠状态是阻塞状态中的一种情况。
S304:该线程查询该线程的消息队列中是否存在新的待处理消息。
应用程序为某个线程创建一个消息队列后,该线程进入消息循环状态,不断查询该线程的消息队列中是否有新的消息需要处理。如果有新的消息需要处理,则该线程从它的消息队列中取出该新的待处理消息,执行步骤S308。如果该线程的消息队列中没有新的待处理消息,则执行步骤S306。
S306:该线程的消息队列没有新的待处理消息,该线程进入睡眠状态。
S308:该线程从它的消息队列中取出该新的待处理消息,在该线程开始处理消息前,系统记录消息处理开始时间。
S310:该线程处理从消息队列中取出的消息。
S312:该线程完成消息处理后,系统记录消息处理结束时间。
若在系统记录的线程处理该消息的消息处理开始时间和消息处理结束时间之间,系统任务调度器未发生上下文切换,则,处理器用于处理消息的时间等于消息处理结束时间减去消息处理开始时间。
S314:当前时间,系统任务调度器发生上下文切换。
在第一时间段内,若在系统记录的线程处理该消息的消息处理开始时间和消息处理结束时间之间,系统任务调度器可能发生多次上下文切换。系统任务调度器每相邻两次发生上下文切换的时间为一个上下文切换周期。例如,可以称系统任务调度器从上一次发生上下文切换到当前时间本次发生上下文切换的时间为一个上下文切换周期。上下文切换指处理器的控制权由当前运行任务转移到另外一个就绪任务时发生的事件。该任务可以是一个进程,也可以是一个线程。在操作系统中,处理器切换到另一个进程或线程,需要保存当前进程或线程的状态,并恢复另一个进程或线程的状态,当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。上下文切换包括保存当前任务的运行环境,恢复将要运行任务的运行环境。
系统任务调度器上一次发生上下文切换,该线程由非运行状态(例如就绪状态或挂起状态或阻塞状态等)转为运行状态,成为当前任务。此时存在以下几种情况:
(1)、若上一次发生上下文切换之前,该线程存在未完成的消息,则上一次发生上下文切换之后,该线程成为当前任务,继续处理未完成的消息;
(2)、若上一次发生上下文切换之前,该线程不存在未完成的消息,则上一次发生上下文切换之后,该线程执行步骤S304,查询到该线程的消息队列中存在新的待处理消息,则该线程从消息队列中取出该消息,执行步骤S308,系统记录该消息的消息处理开始时间,该线程开始处理该消息;
(3)、若上一次发生上下文切换之前,该线程不存在未完成的消息,则上一次发生上下文切换之后,该线程执行步骤S304,未查询到该线程的消息队列中存在新的待处理消息,则执行步骤S306,该线程进入睡眠状态。
(4)、从上一次发生上下文切换到当前时间本次发生上下文切换的这段时间内,在上述(1)和(2)的情况下,存在以下两种情况:
(4.1)、该线程在这段时间内完成了要处理的消息,则执行步骤S312,系统记录该消息的消息处理结束时间;
(4.2)、该线程在这段时间内未完成要处理的消息,在当前时间本次发生上下文切换后,该线程被切换为非运行状态,暂停正在处理的消息。等到下次发生上下文切换,该线程被切换为运行状态后,继续处理该未完成的消息。
S316:当前时间,系统任务调度器发生上下文切换,系统查询该线程是否正在处理消息。
系统任务调度器上一次发生上下文切换,该线程切换为当前任务。从系统任务调度器上一次发生上下文切换到本次发生上下文切换的时间内,为该线程的运行时间。其中,当前时间指系统任务调度器本次发生上下文切换时间。当前时间系统任务调度器本次发生上下文切换,该线程将由运行状态转为非运行状态。此时,系统查询该线程是否正在处理消息。若该线程正在处理消息,则执行步骤S318;若该线程不在处理消息,则执行步骤S318’。
S318:当前时间系统任务调度器发生上下文切换,系统查询到该线程正在处理消息,则系统查询该线程处理该消息的消息处理开始时间是否晚于上一次发生上下文切换时间。若是,则执行S3181;否则执行S3182。
S3181:该线程处理该消息的消息处理开始时间晚于上一次发生上下文切换时间,说明该情形属于S314中的(2)和(4.2)情形,即,在上一次发生上下文切换后,该线程查询到消息队列中存在新的待处理消息,则该线程从消息队列中取出该消息,并处理该消息。到当前时间发生上下文切换时,该线程未处理完成该消息。则,在系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,该线程用于处理消息的时间等于当前时间减去消息处理开始时间。
S3182:该线程处理该消息的消息处理开始时间不晚于上一次发生上下文切换时间,说明该情形属于S314中的(1)和(4.2)情形,即,上一次发生上下文切换之前,该线程存在未完成的消息,上一次发生上下文切换之后,该线程继续处理未完成的消息。到当前时间发生上下文切换时,该线程仍然未处理完成该消息。则,在系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,该线程用于处理消息的时间等于当前时间减去上一次发生上下文切换时间。
S318’:当前时间系统任务调度器发生上下文切换,系统查询到该线程不在处理消息,则系统查询该线程处理上一个消息的消息处理结束时间是否晚于上一次发生上下文切换时间。若是,则执行S318’1,否则,执行S318’2。
其中,该上一个消息指的是当前时间之前且距离当前时间最近的时间内,该线程处理的那个消息。
S318’1:若该消息处理结束时间晚于上一次发生上下文切换时间,说明,该情形属于S314中的(4.1)情形,即,从上一次发生上下文切换到当前时间本次发生上下文切换的这段时间内,该线程完成了待处理的消息。则,在系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,该线程用于处理消息的时间等于该消息处理结束时间减去上一次发生上下文切换时间。
S318’2:若该消息处理结束时间不晚于上一次发生上下文切换时间,说明该情形属于S314中的(3)情形,即,从上一次发生上下文切换到当前时间本次发生上下文切换的这段时间内,该线程未处理消息,处于睡眠状态。则,在系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,该线程用于处于消息的时间等于零。
在第一时间段内,系统任务调度器可能发生多次上下文切换,即,在第一时间段内可能存在多个上下文切换周期,累加该单个处理器运行每个任务的时间中用于处理消息的时间,得到该单个处理器在第一时间段内用于处理消息的时间。
图4给出了本发明实施例提供的又一种预测处理器利用率的方法,该方法的执行主体是Linux系统。Linux内核使用处理器freq内核子系统对处理器的运行频率进行动态管理。处理器freq内核子系统的管理框架主要包括处理器调频驱动层、内核调频策略层和用于衔接两者的中间层。处理器调频驱动层实现不同处理器的调频驱动。Linux在内核调频策略层实现了5种调频策略,分别是Powersave、Performance、Userspace、Conservative和Ondemand。Powersave策略和Performance策略分别将处理器的运行频率调到最低和最高;Userspace策略则是将频率调节的权力交给用户,由用户来决定当前的频率;Conservative策略和Ondemand策略都是根据当前处理器的利用率来调节处理器的频率。
本发明实施例以Linux系统对两个处理器进行频率调控为例。需要说明的是,本发明实施例同样适用于采用Linux系统内核的Android系统。
S402:获得该待调控处理器中每一处理器在当前调频周期的利用率、该待调控处理器中每一处理器在当前调频周期内用于处理消息的时间和该待调控处理器中每一处理器在该当前调频周期处于非空闲状态时间。
其中,当前调频周期内,每个处理器上可能运行多个线程,每个线程可能处理多个消息。需要统计每个处理器执行时间中用于处理消息的时间的总和。
其中,处理器的工作状态包括空闲状态和非空闲状态。某个处理器处于非空闲状态时间等于该某个处理器的工作状态时间减去该某个处理器的空闲状态时间。该某个处理器的空闲状态时间可以通过Linux系统函数获得。
S404:计算该待调控处理器中每一处理器在该当前调频周期内用于处理消息的时间占该待调控处理器中每一处理器在该当前调频周期内处于非空闲状态时间的比例。
S406:判断该比例是否小于预设的消息处理阈值。若是则执行S408。
其中,该预设的消息处理阈值可以根据Linux系统正在运行的应用程序的不同,设置不同的消息处理阈值。该消息处理阈值,可以是百分数形式,也可以是小数形式。本发明实施例对此不做限定。例如,若Linux系统正在运行的应用程序是游戏类的应用程序,则消息处理阈值为60%;若Linux系统正在运行的应用程序是音乐类的应用程序,则消息处理阈值为0.15。具体的消息处理阈值,可以根据实际需要设定。
S408:采用预测公式预测该每一处理器在下一调频周期内的利用率。
首先,Linux系统获得当前调频周期内该两个处理器的每个处理器的利用率;然后采用预测公式预测下一调频周期内每个处理器的利用率。该两个处理器在下一调频周期内的利用率均采用下述预测公式预测:
next_cpu_load=current_cpu_load*R+current_cpu_load*(m/n)*(1-R);
其中,current_cpu_load为某个处理器在当前调频周期内的利用率;next_cpu_load为该某个处理器在下一调频周期内的利用率;R为缩放比例,0≤R<1;m是当前调频周期内该某个处理器用于处理消息的时间占该某个处理器处于非空闲状态时间的比例,0≤m≤1;n是预设的消息处理阈值。其中,R可以取0.8。
S410:根据预测的该待调控处理器中每一处理器在该下一调频周期内的利用率中的最大值调控该待调控处理器中每一处理器在该下一调频周期内的运行频率。具体实现方式参见上文步骤S210。
其中,其中,S402中,Linux系统获得该待调控处理器中每一处理器在当前调频周期内用于处理消息的时间,具体为获得该每一处理器在该当前调频周 期内运行所有任务的时间中用于处理器消息的时间总和。一个任务可以是一个进程也可以是一个线程。获得该每一处理器在该当前调频周期内运行所有任务的时间中用于处理器消息的时间总和,具体为:
对于单个处理器处理一个消息的时间统计分为两种情况,一种是在处理器处理该消息的消息处理开始时间msg_start和处理器处理该消息的消息处理结束时间msg_stop之间没有发生处理器的重新调度,即系统任务调度器没有发生上下文切换;另一种是在处理器处理该消息的消息处理开始时间msg_start和处理器处理该消息的消息处理结束时间msg_stop之间发生了处理器重新调度,即系统任务调度器发生了上下文切换。基于这两种情况,所以,处理器用于处理消息的时间统计的方法如下:
当Linux的内核(Kernel)收到消息处理开始函数msg_start的通知时,会将当前处理器的消息处理状态置为MSG_PROCESSING,表示系统正在进行消息处理时间统计,获取系统当前时间,作为消息处理的开始时间。当Kernel收到消息处理结束函数msg_stop的通知时,会将当前处理器的消息处理状态设置为MSG_NOPROCESSING。之后进行具体的消息处理时间统计。可以设置一个处理器结构体,用于作为统计消息处理时间的变量。
首先,系统要判断在从msg_start函数到msg_stop函数之间,处理器有没有被重新调度,如果该进程或线程上次被调度的时刻Tsche_in1早于msg_start函数的通知时刻Tmsg_start,说明处理器处理消息是在上次调度时刻Tsche_in1至本次调度时刻Tsche_in2之间进行的,那么本次消息处理时间即为Tmsg_stop-Tmsg_start,如图5a所示。其中,一次CPU调度即一个上下文切换周期。
其次,当系统判断处理器上次被调度的时刻Tsche_in2晚于msg_start函数的通知时刻Tmsg_start时,说明在消息处理时间内发生了处理器重新调度,如图5b所示。其中,一次CPU调度即一个上下文切换周期。Tsche_in1到Tsche_out1的时间内本线程为当前任务,本线程在处理消息1;从Tsche_in2到Tsche_out2的时间内,本线程被切换出去,暂停对消息1的处理;Tsche_in3到Tsche_out3的时间内,本线程再次被切换为当前任务,继续处理未处理完成的该消息1。其中,Tsche_in表示一个上下文切换周期的开始,Tsche_out表示一个上下文切换周期的结束。在这种情况下,处理器用于消息处理时间被分为两部分,当内核接收到msg_stop消息时,用Tmsg_stop-Tsche_in3即为消息处理时间的第二部分。消息处理时间的第一部分的计算 需要借助于CPU调度时间机制,即在每一次发生处理器调度时,系统会记录当前线程的调度时刻,并判断上一线程是否为消息处理时间统计中的线程,如果是,则用Tsche_out1-Tmsg_start即为消息处理时间的第一部分,并将其加入消息处理时间统计变量中。这样就可以得到从msg_start函数到msg_stop函数之间处理器的消息处理时间。
一个调频周期内,处理器可能被多次调度,即系统任务调度器可能发生多次上下文切换。当前线程在一个调频周期内可能处理多个消息。通过上述方法可以获得单个处理器在从一个消息的msg_start函数到该消息的msg_stop函数之间处理器用于处理消息的时间。当前线程的消息处理时间可以用一个变量保存,系统需要时可以直接读取该变量。采用同样的方式,累加该单个处理器运行每个任务的时间中用于处理消息的时间,得到该单个处理器在当前调频周期内用于处理消息的时间。类似的,可以分别获得该两个处理器的每一处理器在当前调频周期内用于处理消息的时间。
可以理解的是,上述一种预测处理器利用率的方法可以用于处理器降频时,预测该处理器的利用率。即一种预测处理器利用率的方法为处理器降频时预测该处理器利用率的方法。
通过本发明实施例提供的方法,利用处理器用于处理消息的时间作为预测处理器利用率的因子,能够优化对处理器的利用率的预测;根据处理器的利用率,利用动态电压频率技术,调控处理器的运行频率和工作电压,达到节能能耗的目的。
图6给出了本发明实施例提供的一种处理装置的结构示意图。该处理装置可以是一处理芯片。该处理装置包括:
获得模块602,用于获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;
预测模块604,用于根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时 间段内的利用率。
该获得模块602用于获得至少一个待调控处理器中每一处理器在第一时间段内用于处理消息的时间,具体为:该获得模块602用于获得该每一处理器在该第一时间段内运行所有任务的时间中用于处理消息的时间总和。
可选的,该至少一个待调控处理器中每一处理器包括第一处理器,该装置还包括检查模块,该检查模块用于当系统任务调度器在该第一时间段内发生上下文切换时,检查该第一处理器处理消息的状态;
该获得模块用于获得至少一个待调控处理器中每一处理器在该第一时间段内用于处理消息的时间,包括:
若该检查模块检查到该第一处理器处理消息的状态为该第一处理器正在处理消息,则:
该装置还包括消息处理开始时间获得模块,该消息处理开始时间获得模块用于获得该第一处理器正在处理该消息的消息处理开始时间;
若该消息处理开始时间晚于该系统任务调度器上一次发生上下文切换时间,该系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,该装置还包括消息处理时间计算模块,该消息处理时间计算模块用于计算该第一处理器用于处理消息的时间,该第一处理器用于处理消息的时间等于当前时间减去该消息处理开始时间,其中,该当前时间为该系统任务调度器本次发生上下文切换的时间;
该装置还包括累加模块,该累加模块用于在第一时间段内的该系统任务调度器发生上下文切换的周期内,累加该第一处理器运行每个任务的时间中用于处理消息的时间,得到该第一处理器在该第一时间段内用于处理消息的时间。
进一步的或可选的,在该累加模块用于在第一时间段内的该系统任务调度器发生上下文切换的周期内,累加该第一处理器运行每个任务的时间中用于处理消息的时间,得到该第一处理器在该第一时间段内用于处理消息的时间之前,若该消息处理开始时间不晚于该系统任务调度器上一次发生上下文切换时间,该系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,该消息处理时间计算模块还用于计算该第一处理器用于处理消息的时间,该第一处理器用于处理消息的时间等于当前时间减去该系统任务调度器上一次发生上下文切换的时间,其中,该当前时间为该系统任务调度器本次发生上下文切 换的时间。
进一步的或可选的,在该累加模块用于在第一时间段内的该系统任务调度器发生上下文切换的周期内,累加该第一处理器运行每个任务的时间中用于处理消息的时间,得到该第一处理器在该第一时间段内用于处理消息的时间之前,若该检查模块检查到该第一处理器处理消息的状态为该第一处理器不在处理消息,则:
当该系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,该装置还包括消息处理结束时间获得模块,该消息处理结束时间获得模块还用于获得消息处理结束时间;该消息处理时间计算模块还用于计算该第一处理器用于处理消息的时间,该第一处理器用于处理消息的时间等于该消息处理结束时间减去该系统任务调度器上一次发生上下文切换的时间。
可选的,该预测模块604还包括:比例计算模块和处理模块。
该比例计算模块,用于计算该待调控处理器中每一处理器在该第一时间段内用于处理消息的时间占该待调控处理器中每一处理器在该第一时间段内处于非空闲状态时间的比例。
该处理模块,用于根据该预设消息处理阈值、该待调控处理器中每一处理器在所述第一时间段内的利用率和该比例,预测该待调控处理器中每一处理器在该第二时间段内的利用率。
可选的,该至少一个待调控处理器中每一处理器为第一处理器,该装置还包括公式计算模块,该公式计算模块,用于采用如下公式预测该第一处理器在该第二时间段内的利用率:
next_cpu_load=current_cpu_load*R+current_cpu_load*(m/n)*(1-R);
其中,current_cpu_load为该第一处理器在该第一时间段内的利用率;next_cpu_load为预测的该第一处理器在该第二时间段内的利用率;R为缩放比例,0≤R<1;m是该第一处理器在该第一时间段内用于处理消息的时间占该第一处理器在该第一时间段内处于非空闲状态时间的比例,0≤m≤1;n是该预设的消息处理阈值。
可选的,该装置还包括第一调控模块和第二调控模块。
该第一调控模块,用于根据预测的该待调控处理器中每一处理器在该第二时间段内的利用率中的最大值调控该待调控处理器中每一处理器在该第二时间 段内的运行频率。
该第二调控模块,用于根据预测的该待调控处理器中每一处理器在该第二时间段内的利用率分别调控与该每一处理器的利用率对应的每一处理器在该第二时间段内的运行频率。
其中,上述实施例中的装置可以为处理器降频时,预测该处理器的利用率,即该装置为处理器降频时预测该处理器利用率的装置。
本发明实施例提供的一种处理装置,包括获得模块和预测模块,将处理装置用于处理消息的时间作为预测处理装置利用率的因子,能够优化处理装置的利用率。进一步的,利用该优化的处理装置的利用率,调控处理器的运行频率,能够节省能耗。
其中,本发明实施例还提供了另外一种装置,所述装置包括:
获得模块,用于获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;
预测模块,用于根据所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率。
其中,所述每一处理器在第一时间段内的利用率等于每一处理器处于非空闲状态的时间占所述每一处理器处于工作状态时间的比例。
其中,所述预测模块还包括:
比例计算模块,用于计算所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间占所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的比例;
处理模块,用于根据所述比例和所述待调控处理器中每一处理器在所述第一时间段内的利用率,预测所述待调控处理器中每一处理器在所述第二时间段内的利用率。
具体的,处理模块可以根据如下公式预测一个处理器在所述第二时间段内的利用率,所述一个处理器为所述第一处理器:
next_cpu_load=current_cpu_load*R+current_cpu_load*m*(1-R);
其中,current_cpu_load为所述第一处理器在所述第一时间段内的利用率;next_cpu_load为预测的所述第一处理器在所述第二时间段内的利用率;R为缩放比例,0≤R<1;m是所述第一处理器在所述第一时间段内用于处理消息的时间占所述第一处理器在所述第一时间段内处于非空闲状态时间的比例,0≤m≤1。
其中,所述第一时间段内可以为当前调频周期,所述第二时间段为下一调频周期。
这种装置,也可以调整处理器的利用率,进而根据利用率调整处理器的运行频率。其中,所述装置可以为一芯片。
图7给出了本发明实施例提供的一种终端设备,该设备包括处理器702和存储器704。该存储器704存储该处理器702运行的程序,该处理器702运行该程序,用于:
获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;
根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间内段处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率。
具体的,该处理器用于该获得至少一个待调控处理器中每一处理器在该第一时间段内用于处理消息的时间,具体为:
该处理器用于获得该每一处理器在该第一时间段内运行所有任务的时间中用于处理消息的时间总和。
可选的,该至少一个待调控处理器中每一处理器为第一处理器,当系统任务调度器在该第一时间段内发生上下文切换时,该处理器还用于检查该第一处理器处理消息的状态,该处理器用于获得至少一个待调控处理器中每一处理器在该第一时间段内用于处理消息的时间,包括:
若第一处理器处理消息的状态为该第一处理器正在处理消息,则:
该处理器还用于获得该第一处理器正在处理该消息的消息处理开始时间;
若该消息处理开始时间晚于该系统任务调度器上一次发生上下文切换时间, 该系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,该处理器还用于计算该第一处理器用于处理消息的时间,该第一处理器用于处理消息的时间等于当前时间减去该消息处理开始时间,其中,该当前时间为该系统任务调度器本次发生上下文切换的时间;
在第一时间段内的该系统任务调度器发生上下文切换的周期内,该处理器还用于累加该第一处理器运行每个任务的时间中用于处理消息的时间,得到该第一处理器在该第一时间段内用于处理消息的时间。
进一步的或可选的,该处理器还用于累加该第一处理器运行每个任务的时间中用于处理消息的时间,得到该第一处理器在该第一时间段内用于处理消息的时间之前,若该消息处理开始时间不晚于该系统任务调度器上一次发生上下文切换时间,该系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,该处理器还用于计算该第一处理器用于处理消息的时间,该第一处理器用于处理消息的时间等于当前时间减去该系统任务调度器上一次发生上下文切换的时间,其中,该当前时间为该系统任务调度器本次发生上下文切换的时间。
进一步的或可选的,该处理器还用于累加该第一处理器运行每个任务的时间中用于处理消息的时间,得到该第一处理器在该第一时间段内用于处理消息的时间之前,若第一处理器处理消息的状态为该第一处理器不在处理消息,则:当该系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,该处理器还用于获得消息处理结束时间,该处理器还用于计算该第一处理器用于处理消息的时间,该第一处理器用于处理消息的时间等于该消息处理结束时间减去该系统任务调度器上一次发生上下文切换的时间。
其中,该处理器用于根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、该待调控处理器中每一处理器在该第一时间段内用于处理消息的时间和该待调控处理器中每一处理器在该第一时间段内处于非空闲状态时间,预测该待调控处理器中每一处理器在第二时间段内的利用率,具体为:该处理器用于:
计算该待调控处理器中每一处理器在该第一时间段内用于处理消息的时间占该待调控处理器中每一处理器在该第一时间段内处于非空闲状态时间的比例;
根据该预设消息处理阈值、所述待调控处理器中每一处理器在所述第一时 间段内的利用率和该比例,预测该待调控处理器中每一处理器在该第二时间段内的利用率。
可选的,该至少一个待调控处理器中每一处理器为第一处理器,该处理器还用于采用如下公式预测该第一处理器在该第二时间段内的利用率:
next_cpu_load=current_cpu_load*R+current_cpu_load*(m/n)*(1-R);
其中,current_cpu_load为该第一处理器在该第一时间段内的利用率;next_cpu_load为预测的该第一处理器在该第二时间段内的利用率;R为缩放比例,0≤R<1;m是该第一处理器在该第一时间段内用于处理消息的时间占该第一处理器在该第一时间段内处于非空闲状态时间的比例,0≤m≤1;n是该预设的消息处理阈值。
可选的,该处理器还用于:
根据预测的该待调控处理器中每一处理器在该第二时间段内的利用率中的最大值调控该待调控处理器中每一处理器在该第二时间段内的运行频率;或
根据预测的该待调控处理器中每一处理器在该第二时间段内的利用率分别调控与该每一处理器的利用率对应的每一处理器在该第二时间段内的运行频率。
可以理解的是,上述实施例中的终端设备可以为处理器降频时,预测该处理器的利用率。即终端设备为处理器降频时预测该处理器利用率的终端设备。
需要说明的是,对于终端设备而言,可以有一个处理器,也可以有多个处理器,本发明实施例对此并不限定。该终端设备可以为手机、平板电脑、或笔记本电脑等。对于终端设备有多个处理器时,该多个处理器可以集成为一体,例如集成为一个芯片。
本发明实施例提供的一种终端设备,包括处理器和存储器,将终端设备的处理器用于处理消息的时间作为预测处理器利用率的因子,能够优化处理器的利用率。进一步的,利用该优化的处理器的利用率,调控处理器的运行频率,能够节省能耗。
其中,本发明实施例还提供了一种终端设备,包括:处理器和存储器,
所述存储器存储所述处理器运行的程序;
所述处理器运行所述程序,用于:
获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待 调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;
根据所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间内段处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率。
其中,所述处理器用于根据所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率,具体为:所述处理器用于:
计算所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间占所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的比例;
根据所述比例和所述待调控处理器中每一处理器在所述第一时间段内的利用率,预测所述待调控处理器中每一处理器在所述第二时间段内的利用率。
具体的,所述处理器可以根据如下公式预测一个处理器在所述第二时间段内的利用率,所述一个处理器为所述第一处理器:
next_cpu_load=current_cpu_load*R+current_cpu_load*m*(1-R);
其中,current_cpu_load为所述第一处理器在所述第一时间段内的利用率;next_cpu_load为预测的所述第一处理器在所述第二时间段内的利用率;R为缩放比例,0≤R<1;m是所述第一处理器在所述第一时间段内用于处理消息的时间占所述第一处理器在所述第一时间段内处于非空闲状态时间的比例,0≤m≤1。
其中,所述第一时间段内可以为当前调频周期,所述第二时间段为下一调频周期。
这种终端设备,也可以调整处理器的利用率,进而根据利用率调整处理器的运行频率。其中,终端设备可以为手机。
本发明实施例还提供了一种计算机程序产品,包括可读取存储介质用于存储计算机程序代码,该的计算机程度代码运行在一个处理器上,该计算机程序代码包括:
用于获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、 所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的指令;
用于根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率的指令。
本发明实施例提供的一种计算机程序产品,包括可读取存储介质用于存储计算机程序代码,该的计算机程度代码运行在一个处理器上,执行该计算机程序代码能够优化处理器的利用率。进一步的,利用该优化的处理器的利用率,调控处理器的运行频率,能够节省能耗。
最后应说明的是:以上实施例仅用以示例性说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明及本发明带来的有益效果进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求的范围。

Claims (31)

  1. 一种预测处理器利用率的方法,其特征在于,所述方法包括:
    获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;
    根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率。
  2. 根据权利要求1所述的方法,其特征在于,所述获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,具体为:
    获得所述至少一个待调控处理器中每一处理器在所述第一时间段内运行所有任务的时间中用于处理消息的时间总和。
  3. 根据权利要求1或2所述的方法,其特征在于,所述至少一个待调控处理器中每一处理器包括第一处理器,当系统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态,所述获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
    若所述第一处理器处理消息的状态为所述第一处理器正在处理消息,则:
    获得所述第一处理器正在处理所述消息的消息处理开始时间;
    若所述消息处理开始时间晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述第一处理器用于处理消息的时间等于当前时间减去所述消息处理开始时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间;
    在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
  4. 根据权利要求3所述的方法,其特征在于,在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务 的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,所述方法还包括:
    若所述消息处理开始时间不晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述第一处理器用于处理消息的时间等于当前时间减去所述系统任务调度器上一次发生上下文切换的时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间。
  5. 根据权利要求1或2所述的方法,其特征在于,所述至少一个待调控处理器中每一处理器包括第一处理器,当系统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态,所述获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
    若所述第一处理器处理消息的状态为所述第一处理器不在处理消息,则:
    当所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,获得消息处理开始时间和结束时间,若所述消息处理开始时间早于所述系统任务调度器上一次发生上下文切换时间,则所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述系统任务调度器上一次发生上下文切换的时间;
    在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
  6. 根据权利要求5所述的方法,其特征在于,在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,所述方法还包括:
    若所述消息处理开始时间不早于所述系统任务调度器上一次发生上下文切换时间,则所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述消息处理开始时间。
  7. 根据权利要求1-6任一所述的方法,其特征在于,所述根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述 待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率,具体为:
    计算所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间占所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的比例;
    根据所述预设消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率和所述比例,预测所述待调控处理器中每一处理器在所述第二时间段内的利用率。
  8. 根据权利要求7所述的方法,其特征在于,所述至少一个待调控处理器中每一处理器包括第一处理器,若所述第一处理器的所述比例小于所述预设的消息处理阈值,则采用如下公式预测所述第一处理器在所述第二时间段内的利用率:
    next_cpu_load=current_cpu_load*R+current_cpu_load*(m/n)*(1-R);
    其中,current_cpu_load为所述第一处理器在所述第一时间段内的利用率;next_cpu_load为预测的所述第一处理器在所述第二时间段内的利用率;R为缩放比例,0≤R<1;m是所述第一处理器在所述第一时间段内用于处理消息的时间占所述第一处理器在所述第一时间段内处于非空闲状态时间的比例,0≤m≤1;n是所述预设的消息处理阈值。
  9. 根据权利要求1-8任一所述的方法,其特征在于,所述方法还包括:
    根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率中的最大值调控所述待调控处理器中每一处理器在所述第二时间段内的运行频率;或
    根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率分别调控与所述每一处理器的利用率对应的每一处理器在所述第二时间段内的运行频率。
  10. 根据权利要求1-9任一项所述的方法,其特征在于,所述第一时间段为当前调频周期,所述第二时间段为下一调频周期。
  11. 一种处理装置,其特征在于,所述装置包括:
    获得模块,用于获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息 的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;
    预测模块,用于根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率。
  12. 根据权利要求11所述的装置,其特征在于,所述获得模块用于获得至少一个待调控处理器中每一处理器在第一时间段内用于处理消息的时间,具体为:
    所述获得模块用于获得所述至少一个待调控处理器中每一处理器在所述第一时间段内运行所有任务的时间中用于处理消息的时间总和。
  13. 根据权利要求11或12所述的装置,其特征在于,所述至少一个待调控处理器中每一处理器包括第一处理器,所述装置还包括检查模块,用于当系统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态;
    所述获得模块用于获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
    若所述检查模块检查到所述第一处理器处理消息的状态为所述第一处理器正在处理消息,则:
    所述装置还包括消息处理开始时间获得模块,用于获得所述第一处理器正在处理所述消息的消息处理开始时间;
    若所述消息处理开始时间晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述装置还包括消息处理时间计算模块,用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于当前时间减去所述消息处理开始时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间;
    所述装置还包括累加模块,用于在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于 处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
  14. 根据权利要求13所述的装置,其特征在于,在所述累加模块,用于在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,
    若所述消息处理开始时间不晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述消息处理时间计算模块还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于当前时间减去所述系统任务调度器上一次发生上下文切换的时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间。
  15. 根据权利要求11或12所述的装置,其特征在于,所述至少一个待调控处理器中每一处理器包括第一处理器,所述装置还包括检查模块,用于当系统任务调度器在所述第一时间段内发生上下文切换时,检查所述第一处理器处理消息的状态;
    所述获得模块用于获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
    若所述检查模块检查到所述第一处理器处理消息的状态为所述第一处理器不在处理消息,则:
    当所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述装置还包括消息处理开始时间获得模块和消息处理结束时间获得模块,其中,所述消息处理开始时间获得模块用于获得消息处理开始时间,所述消息处理结束时间获得模块用于获得消息处理结束时间;若所述消息处理开始时间早于所述系统任务调度器上一次发生上下文切换时间,则所述消息处理时间计算模块还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述系统任务调度器上一次发生上下文切换的时间;
    所述装置还包括累加模块,用于在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于 处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
  16. 根据权利要求15所述的装置,其特征在于,在所述累加模块,用于在所诉第一时间段内的所述系统任务调度器发生上下文切换的周期内,累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,所述装置还包括:
    若所述消息处理开始时间不早于所述系统任务调度器上一次发生上下文切换时间,则所述消息处理时间计算模块还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述消息处理开始时间。
  17. 根据权利要求11-16任一项所述的装置,其特征在于,所述预测模块还包括:
    比例计算模块,用于计算所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间占所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的比例;
    处理模块,用于根据所述预设消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率和所述比例,预测所述待调控处理器中每一处理器在所述第二时间段内的利用率。
  18. 根据权利要求17所述的装置,其特征在于,所述至少一个待调控处理器中每一处理器包括第一处理器,若所述第一处理器的所述比例小于所述预设的消息处理阈值,所述装置还包括:
    公式计算模块,用于采用如下公式预测所述第一处理器在所述第二时间段内的利用率:
    next_cpu_load=current_cpu_load*R+current_cpu_load*(m/n)*(1-R);
    其中,current_cpu_load为所述第一处理器在所述第一时间段内的利用率;next_cpu_load为预测的所述第一处理器在所述第二时间段内的利用率;R为缩放比例,0≤R<1;m是所述第一处理器在所述第一时间段内用于处理消息的时间占所述第一处理器在所述第一时间段内处于非空闲状态时间的比例,0≤m≤1;n是所述预设的消息处理阈值。
  19. 根据权利要求11-18任一项所述的装置,其特征在于,所述装置还包括:
    第一调控模块,用于根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率中的最大值调控所述待调控处理器中每一处理器在所述第二时间段内的运行频率;或
    第二调控模块,用于根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率分别调控与所述每一处理器的利用率对应的每一处理器在所述第二时间段内的运行频率。
  20. 根据权利要求11-19任一项所述的装置,其特征在于,所述第一时间段为当前调频周期,所述第二时间段为下一调频周期。
  21. 一种终端设备,其特征在于,所述设备包括处理器和存储器,所述存储器存储所述处理器运行的程序,所述处理器运行所述程序,用于:
    获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间;
    根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间内段处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率。
  22. 根据权利要求21所述的设备,其特征在于,所述处理器用于获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,具体为:
    所述处理器用于获得所述至少一个待调控处理器中每一处理器在所述第一时间段内运行所有任务的时间中用于处理消息的时间总和。
  23. 根据权利要求21或22所述的设备,其特征在于,所述至少一个待调控处理器中每一处理器包括第一处理器,当系统任务调度器在所述第一时间段内发生上下文切换时,所述处理器还用于检查所述第一处理器处理消息的状态,所述处理器用于获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
    若第一处理器处理消息的状态为所述第一处理器正在处理消息,则:
    所述处理器还用于获得所述第一处理器正在处理所述消息的消息处理开始时间;
    若所述消息处理开始时间晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述处理器还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于当前时间减去所述消息处理开始时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间;
    在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,所述处理器还用于累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
  24. 根据权利要求23所述的设备,其特征在于,在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,所述处理器还用于累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,
    若所述消息处理开始时间不晚于所述系统任务调度器上一次发生上下文切换时间,所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述处理器还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于当前时间减去所述系统任务调度器上一次发生上下文切换的时间,其中,所述当前时间为所述系统任务调度器本次发生上下文切换的时间。
  25. 根据权利要求21或22所述的设备,其特征在于,
    所述至少一个待调控处理器中每一处理器为第一处理器,当系统任务调度器在所述第一时间段内发生上下文切换时,所述处理器还用于检查所述第一处理器处理消息的状态,所述处理器用于获得至少一个待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间,包括:
    若第一处理器处理消息的状态为所述第一处理器不在处理消息,则:
    当所述系统任务调度器从上一次发生上下文切换到本次发生上下文切换的时间内,所述处理器还用于获得消息处理开始时间和所述消息处理结束时间,若所述消息处理开始时间早于所述系统任务调度器上一次发生上下文切换时间,则所述处理器还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述系统任务调度器上一次发生上下文切换的时间;
    在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,所述处理器还用于累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间。
  26. 根据权利要求25所述的设备,其特征在于,在所述第一时间段内的所述系统任务调度器发生上下文切换的周期内,所述处理器还用于累加所述第一处理器运行每个任务的时间中用于处理消息的时间,得到所述第一处理器在所述第一时间段内用于处理消息的时间之前,所述设备还包括:
    若所述消息处理开始时间不早于所述系统任务调度器上一次发生上下文切换时间,则所述处理器还用于计算所述第一处理器用于处理消息的时间,所述第一处理器用于处理消息的时间等于所述消息处理结束时间减去所述消息处理开始时间。
  27. 根据权利要求21-26任一项所述的设备,其特征在于,所述处理器用于根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率,具体为:所述处理器用于:
    计算所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间占所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的比例;
    根据所述预设消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率和所述比例,预测所述待调控处理器中每一处理器在所述第二时间段内的利用率。
  28. 根据权利要求27所述的设备,其特征在于,所述至少一个待调控处理器中每一处理器包括第一处理器,若所述第一处理器的所述比例小于所述预设的消息处理阈值,所述处理器还用于采用如下公式预测所述第一处理器在所述第二时间段内的利用率:
    next_cpu_load=current_cpu_load*R+current_cpu_load*(m/n)*(1-R);
    其中,current_cpu_load为所述第一处理器在所述第一时间段内的利用率;next_cpu_load为预测的所述第一处理器在所述第二时间段内的利用率;R为缩 放比例,0≤R<1;m是所述第一处理器在所述第一时间段内用于处理消息的时间占所述第一处理器在所述第一时间段内处于非空闲状态时间的比例,0≤m≤1;n是所述预设的消息处理阈值。
  29. 根据权利要求21-28任一项所述的设备,其特征在于,所述处理器还用于:
    根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率中的最大值调控所述待调控处理器中每一处理器在所述第二时间段内的运行频率;或
    根据预测的所述待调控处理器中每一处理器在所述第二时间段内的利用率分别调控与所述每一处理器的利用率对应的每一处理器在所述第二时间段内的运行频率。
  30. 根据权利要求21-29任一项所述的设备,其特征在于,所述第一时间段为当前调频周期,所述第二时间段为下一调频周期。
  31. 一种计算机程序产品,其特征在于,所述计算机程序产品包括可读取存储介质用于存储计算机程序代码,所述的计算机程度代码运行在一个处理器上,所述计算机程序代码包括:
    用于获得至少一个待调控处理器中每一处理器在第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间的指令;
    用于根据预设的消息处理阈值、所述待调控处理器中每一处理器在所述第一时间段内的利用率、所述待调控处理器中每一处理器在所述第一时间段内用于处理消息的时间和所述待调控处理器中每一处理器在所述第一时间段内处于非空闲状态时间,预测所述待调控处理器中每一处理器在第二时间段内的利用率的指令。
PCT/CN2014/088693 2014-10-16 2014-10-16 一种预测处理器利用率的方法、处理装置和终端设备 WO2016058149A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2014/088693 WO2016058149A1 (zh) 2014-10-16 2014-10-16 一种预测处理器利用率的方法、处理装置和终端设备
CN201480028027.XA CN105706022B (zh) 2014-10-16 2014-10-16 一种预测处理器利用率的方法、处理装置和终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/088693 WO2016058149A1 (zh) 2014-10-16 2014-10-16 一种预测处理器利用率的方法、处理装置和终端设备

Publications (1)

Publication Number Publication Date
WO2016058149A1 true WO2016058149A1 (zh) 2016-04-21

Family

ID=55745963

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2014/088693 WO2016058149A1 (zh) 2014-10-16 2014-10-16 一种预测处理器利用率的方法、处理装置和终端设备

Country Status (2)

Country Link
CN (1) CN105706022B (zh)
WO (1) WO2016058149A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110514982B (zh) * 2019-08-22 2022-03-22 上海兆芯集成电路有限公司 性能分析系统与方法
CN112540886A (zh) * 2020-11-26 2021-03-23 北京和利时系统工程有限公司 Cpu负荷值检测方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101699368A (zh) * 2009-11-02 2010-04-28 中兴通讯股份有限公司 Cpu的自适应动态调频或调压方法及装置
CN103336722A (zh) * 2013-07-16 2013-10-02 上海大学 一种虚拟机cpu资源监控和动态分配方法
CN103955266A (zh) * 2014-05-22 2014-07-30 东北林业大学 基于Android移动Sink负载预测的低功耗设计方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376743B1 (en) * 2002-04-02 2008-05-20 Cisco Technology, Inc. Method and apparatus for load balancing in a virtual private network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101699368A (zh) * 2009-11-02 2010-04-28 中兴通讯股份有限公司 Cpu的自适应动态调频或调压方法及装置
CN103336722A (zh) * 2013-07-16 2013-10-02 上海大学 一种虚拟机cpu资源监控和动态分配方法
CN103955266A (zh) * 2014-05-22 2014-07-30 东北林业大学 基于Android移动Sink负载预测的低功耗设计方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ZHU, ZONGWEI;: "Research on Memory Power Optimization Based on System Spatio-temporal Behaviours", ELECTRONIC TECHNOLOGY & INFORMATION SCIENCE , CHINA DOCTORAL DISSERTATIONS FULL-TEXT DATABASE, 15 October 2014 (2014-10-15) *

Also Published As

Publication number Publication date
CN105706022A (zh) 2016-06-22
CN105706022B (zh) 2019-04-19

Similar Documents

Publication Publication Date Title
US11579934B2 (en) Scheduler for amp architecture with closed loop performance and thermal controller
US9292068B2 (en) Controlling a turbo mode frequency of a processor
CN101379453B (zh) 使用动态工作负载特征来控制cpu频率和电压调节的方法和装置
JP5982588B2 (ja) 保証された過渡期限とともに中央処理装置の電力を制御するためのシステムおよび方法
US8547840B1 (en) Bandwidth allocation of bursty signals
TW200941209A (en) Power-aware thread schedulingard and dynamic use of processors
CN111625080B (zh) 一种服务器节能方法、装置及电子设备和存储介质
CN110795238B (zh) 负载计算方法、装置、存储介质及电子设备
US11113216B2 (en) Dispatching interrupts in a multi-processor system based on power and performance factors
CN114710563A (zh) 一种集群节能方法及装置
WO2016058149A1 (zh) 一种预测处理器利用率的方法、处理装置和终端设备
JP5930504B2 (ja) 保証された過渡期限とともに中央処理装置の電力を制御するためのシステムおよび方法
Nair et al. ERfair scheduler with processor suspension for real-time multiprocessor embedded systems
Baskaran et al. Dynamic Scheduling of Skippable Periodic Tasks with Energy Efficiency in Weakly Hard Real-Time System

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14904064

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14904064

Country of ref document: EP

Kind code of ref document: A1