Android поддерживает работу процессора на полной скорости, когда экран выключен

Я создал приложение, которое сравнивает скорость процессора телефона Android, выполняя одни и те же задачи на нескольких телефонах. Я заметил, что на HTC ONE X он становится намного медленнее, если я выключаю экран, в то время как он не меняется, когда я делаю то же самое на другом телефоне. В программе я помещаю задачу в службу и запускаю ее в отдельном потоке с приоритетом, равным максимальному значению 10.

Я попытался использовать частичную блокировку пробуждения, чтобы процессор работал, когда экран выключен. Но на скорость это никак не влияет.

Я понимаю, что разные ОС/интерфейсы (например, HTC sense) имеют свою собственную стратегию управления питанием. Но мне интересно, есть ли способ преодолеть это, не рутируя телефон, то есть поддерживать работу процессора на 100% тактовой частоте?

Обновления: недавние эксперименты показывают, что при выключенном экране One X (с ICS) снижает частоту процессора и отключает многоядерную функциональность, Galaxy Nexus (с ICS) снижает производительность примерно на 25%, Nexus 7 снижает примерно на 25%. % большую часть времени (иногда он может работать на максимальной скорости при выключенном экране).


person Bach    schedule 26.09.2012    source источник


Ответы (1)


  1. Почему блокировка вейклока не сработала?

Для устройств Qualcomm горячее включение и выключение процессоров осуществляется с помощью программы под названием mpdecision. Файл mpdecision работает в нашей системе как исполняемый файл поставщика, и он управляет регулятором процессора. mpdecision определяет производительность вашего процессора 1, файл запускается каждый раз, когда ваш экран гаснет, поэтому сценарии процессора 1 бесполезны, поскольку файл mpdecision перезаписывает настройки регулятора процессора 1 на userspace ondemand, userspace является регулятором, когда процессор 1 подключен к сети, а ondemand — когда он отключен. Справочник

  1. Что я могу сделать, чтобы ЦП не снижал свою частоту?

Вам нужно остановить mpdecision, тогда вы можете сохранить частоту процессора. Однако для остановки mpdecision нужны привилегии root. Поэтому я думаю, что вы не можете поддерживать частоту процессора без привилегий root.

Вы можете записать значение в /sys/devices/system/cpu/cpu0/online, чтобы открыть или закрыть ядро ​​процессора, и записать значение в /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed, чтобы установить частоту каждого ядра. Я попробовал этот метод в Nexus 4, и он отлично работает.

Подробнее см. это.

person PageNotFound    schedule 18.09.2014
comment
Спасибо за ответ! Но мой вопрос в том, почему wakelock не сработал, и без рутирования устройства могу ли я что-нибудь сделать, чтобы ЦП не снижал свою частоту? - person Bach; 23.09.2014
comment
Спасибо! Это очень полезная информация. Я нашел больше описаний mpdecision и добавлю их в ваш ответ. - person Bach; 25.09.2014