我创建了一个应用程序,通过在多部手机上运行相同的任务来比较android手机的CPU速度。我注意到在HTC ONE X上,如果我在关闭屏幕时变得慢得多,而在另一部手机上做同样的事情时它不会改变。在程序中,我将任务放在一个服务中,并在一个单独的线程中运行,优先级设置为最高值10.
我尝试使用部分唤醒锁定来在屏幕关闭时保持cpu运行。但它在速度方面没有任何区别。
据我所知,不同的操作系统/用户界面(例如HTC意识)有自己的电源管理策略。但我想知道是否有任何方法可以克服它而不用你的手机,这意味着保持CPU以100%的时钟速率运行?
更新:最近的实验表明,当屏幕关闭时,One X(带ICS)将降低其CPU频率并禁用多核功能,Galaxy Nexus(带ICS)将降低约25%的性能,Nexus 7将大多数时候性能降低约25%(偶尔屏幕关闭时可以以最高速度运行)。
答案 0 :(得分:1)
对于Qualcomm设备,使用名为mpdecision
的程序处理CPU的热插拔。 mpdecision
文件作为供应商可执行文件在我们的系统中运行,它的作用是控制cpu的调控器。 mpdecision
定义了cpu1的性能,每次屏幕关闭时都会执行文件,因此cpu1脚本无用,因为mpdecision
文件会将cpu1调控器设置覆盖为userspace
{{1} },ondemand
是cpu1在线时的调控器,userspace
在离线时是。 Reference
您需要停止ondemand
,然后才能保持CPU频率。但是,停止mpdecision
需要root权限。所以我认为你不能在没有root权限的情况下保持CPU频率。
您可以将值写入mpdecision
以打开或关闭CPU核心,并将值写入/sys/devices/system/cpu/cpu0/online
以设置每个核心的频率。我在Nexus 4中尝试了这种方法,它运行正常。
有关详细信息,请参阅this。