Давно известно что продолжительность работы ноутбука от батареи заметно увеличивается при снижении частоты процессора. Автор этих строк недавно задумался над решением этой проблемы на eeePC 701.
Сначала были подключены дополнительные репозитории с ПО. Как это сделать подробно описано в этой статье. Далее установлен пакет cpufrequtils. Однако, как показало дальнейшее исследование конфигов - установка этого пакета не нужна. Ну разве что для мониторинга текущей частоты процессора. Всё остальное же уже встроено в систему. Хотя по умолчанию и отключено.
Совершенно случайно была обнаружена утилита /usr/sbin/cpuspeed, принадлежащая пакету asus-eeepc-core. Тому же пакету принадлежит скрипт /usr/sbin/services.sh, в котором кроме всего прочего есть следующие строки:
#echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor #/sbin/cpuspeed
После раскомментирования этих строк (т.е. был убран символ "#" из начала) и перезапуска системы (или ручного выполнения этих команд в консоли) частота процессора стала меняться динамически.
Чтобы проверить это нам как раз и понадобиться пакет cpufreutils. А точнее утилита cpufreq-info, входящая в этот пакет. Выполним в терминале следующую команду:
while true; do clear; date; cpufreq-info; sleep 1; done
И посмотрим как в ходе работы меняется последняя строчка, как раз и показывающая текущую частоту процессора.
Если же мы просто хотим понизить частоту процессора до какой-то определённой величины (экспериментально проверено что для набора текстов в OpenOffice Writer достаточно частоты 225MHz), то тут уже без cpufrequtils не обойтись никак.
Итак. Во-первых надо обратно закомментировать раскомментированые строчки в /usr/sbin/services.sh. Далее привести файл /etc/default/cpufrequtils к следующему виду:
ENABLE="true" GOVERNOR="ondemand" MAX_SPEED=225000 MIN_SPEED=225000
Параметры MAX_SPEED и MIN_SPEED задают диапазон, в котором динамически будет изменяться частота процессора. Теперь самое интересное: система init-скриптов на eeePC отличается от оной в Debian, и потому команда:
update-rc.d cpufrequtils defaults
Действия не возымеет. Вместо этого нужно перечислить запускаемые сервисы в файле /etc/fastservices. Примерно вот так:
ssh cpufrequtils
Далее запускаем cpufrequtils командой:
invoke-rc.d cpufrequtils start
И наслаждаемся работой:) Однако всё-таки в некоторые моменты частоты в 225MHz бывает недостаточно, потому верхний предел частоты всё-таки стоит сделать чуть выше чем 225MHz. Автор этих строк остановился на вот таком конфиге:
ENABLE="true" GOVERNOR="ondemand" MAX_SPEED=675000 MIN_SPEED=225000
Приятной работы!
2008-07-15 15:33:40 (#)
не проверял на сколько увеличилось время работы?