LINUX.ORG.RU

Изменение частоты процессора


0

2

Люди.У меня такая проблема.Работаю со встроенной Linux системой,основанной на ARM. И мне нужно иногда менять(програмно) частоту процессора. В сети нашёл кучу инфы на эту тему и она вся сводится к тому,что надо работать с интерфейсом: /sys/devices/system/cpu/cpu#/cpufreq. Там есть файл scaling_setspeed и с помощью(например): echo 1000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed можно менять частоту процессора на 1GHz. Так же можно скомпилить пакет cpufregutils,включающий в себя cpufreq-info,cpufreq-set и ещё 1 или 2 утилиты(зависит от версии),которые мне не нужны и я их убрал. Фактически этот пакет работает с тем же интерфейсом.

Теперь,что у меня происходит на деле.

1. После echo 1000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed либо cpufreq-set -f 1000MHz нет никакого сообщения об ошибке, т.е. операция закончилась успешно.

2. Время модификации файла scaling_setspeed изменилось,т.е. произведено изменение файла.

3. cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed выдаёт 800000,т.е. 800МHz,как и было.

4. cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq выдаёт 800000,т.е. 800МHz,как и было.

5. cat /proc/cpuinfo выдаёт Processor : ARMv7 Processor rev 2 (v7l)

BogoMIPS : 799.29

Features : swp half thumb fastmult vfp edsp neon vfpv3

CPU implementer : 0x41

CPU architecture: 7

CPU variant : 0x3

CPU part : 0xc08

CPU revision : 2

Hardware : IdentyTech IDT-SOM-OM3730

Revision : 0020

Serial : 0000000000000000

т.е. BogoMIPS : 799.29 не изменилось.

6. cpufreq-info выдаёт,что частота не изменилась.

Кто-нить сталкивался с этой темой,может кто-то подсказать,почему измение не происходит фактичски,плз?

Заранее спасибо.


Ответ на: комментарий от TERRANZ

А есть,другой путь? У меня нет systrace в системе.Что бы его поставить слишком много для меня гемороя и плюс не весь код сконцентрирован у меня,так что мне для этого надо привлекать ещё людей.

Я видел код cpufreq-set. Он делает то же самое,что и: echo 1000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed либо cpufreq-set -f 1000MHz, только через функцию write.

rapa ()
Ответ на: комментарий от andreyu

Вроде нет.Бежит одна единственная основная апликация(которую я запускаю) и то,я её валю сразу же,что не мешaлась.

Блин...всё обыскал.

rapa ()
Ответ на: комментарий от rapa

>Я видел код cpufreq-set. Он делает то же самое,что и: echo 1000 > >/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed либо >cpufreq-set -f 1000MHz, только через функцию write.

echo -n 1000 >>
echo -n 1000 >

смотри флаги write
смотри драйвер, который обрабатывает запись в этот sysfs объект

anonymous ()
Ответ на: комментарий от rapa

Ну, во-первых, там обычно частоты в герцах, так что надо писать 1000000. А вообще, cat scaling_available_frequencies

Во-вторых, проверь, чтобы scaling_governor не стоял в powersave или performance. И, в-третьих, оно может быть ограничено через scaling_max_freq.

anonymous ()
Ответ на: комментарий от anonymous

В том то и проблема,что я не понимаю в чём проблема. Ты прав и я на самом деле пишу не 1000,а 1000000.Я ошибся,когда постил. Сори. Теперь по остальному. cat scaling_available_frequencies даёт мне 1000000,800000,600000,300000 Как Default governor я определил userspace. Power save НИКОГДА не делал.А когда было performance, то мнене давало менять.И я изменял на userspace. A cat scaling_max_freq мне выдаёт 1000000. Т.е. всё это я же проверил. Может есть ещё какие-то идеи?

rapa ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.