3

我创建了一个应用程序,通过在多部手机上运行相同的任务来比较 android 手机的 cpu 速度。我注意到在 HTC ONE X 上,如果我关闭屏幕,它会变得慢得多,而在另一部手机上做同样的事情时它不会改变。在程序中,我将任务放在服务中并在单独的线程中运行,优先级设置为最高值 10。

我尝试使用部分唤醒锁在屏幕关闭时保持 CPU 运行。但就速度而言,它没有任何区别。

我了解不同的操作系统/用户界面(例如 HTC 感觉)有自己的电源管理策略。但是我想知道是否有任何方法可以在不root手机的情况下克服它,意味着保持cpu以100%的时钟频率运行?

更新:最近的实验表明,当屏幕关闭时,One X(带 ICS)会降低其 cpu 频率并禁用多核功能,Galaxy Nexus(带 ICS)将降低约 25% 的性能,Nexus 7 将降低约 25 % 性能大部分时间(有时它可以在屏幕关闭时以最高速度运行)。

4

1 回答 1

1
  1. 为什么唤醒锁不起作用?

对于 Qualcomm 设备,CPU 的热插拔是由一个名为mpdecision. 该mpdecision文件作为供应商可执行文件在我们的系统中运行,它的作用是控制 CPU 的调控器。mpdecision定义您的 cpu1 的性能,每次屏幕关闭时都会执行该文件,因此 cpu1 脚本是无用的,因为该mpdecision文件将 cpu1 调控器设置覆盖为userspace ondemanduserspace是 cpu1 在线和ondemand离线时的调控器。参考

  1. 我能做些什么来保持 CPU 不降低其频率吗?

你需要停止mpdecision,然后你可以保持CPU频率。但是,停止mpdecision需要 root 权限。所以我认为没有root权限就无法保持CPU频率。

您可以写入值来/sys/devices/system/cpu/cpu0/online打开或关闭 CPU 的核心,写入值来/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed设置每个核心的频率。我在 Nexus 4 中尝试了这种方法,效果很好。

有关更多详细信息,您可以查看

于 2014-09-18T12:31:07.523 回答