Gentoo Linux сборник статей



Pdf просмотр
страница48/79
Дата14.11.2016
Размер5.55 Mb.
Просмотров11434
Скачиваний1
1   ...   44   45   46   47   48   49   50   51   ...   79
3. Управление питанием ЦПУ
Мобильные процессоры могут работать на нескольких частотах, а некоторые позволяют даже менять напряжение. Максимальная производительность нужна далеко не всегда, и меняя её можно сохранить немало энергии, причём зачастую без какого-либо понижения производительности
569

Управление питанием компьютера
Техническая часть
Частота процессора связана с некоторыми техническими терминами, который могут быть вам незнакомы, поэтому ниже будет дано краткое введение.
Для начала, ядро должно "уметь" менять частоту процессора. Драйвер
процессора CPUfreq (CPUfreq processor driver) знает как сделать это на вашем
ЦП, поэтому важно указать его правильно в вашем ядре. Скорее всего, вы это уже сделали выше. Также ядро должно знать, какую частоту устанавливать. Это достигается посредством политик (policy), которые состоят из политики CPUfreq
(CPUfreq policy) и властелина (governor). Первое - это пара из двух чисел, обозначающих максимальную и минимальную допустимую частоту ЦП, а второе отвечает за то, какую конкретно частоту выбрать. Так, властелин сохранения энергии (powersave governor) всегда выбирает минимальную допустимую частоту, а властелин максимальной производительностью (performance governor), наоборот, максимальную; властелин пользователя (userspace governor) использует необходимую пользователю (или его приложениям) частоту, читая её из /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed.
Всё это не очень похоже на динамическое изменение частоты (и действительно не является таковым). Однако динамика может быть получена несколькими способами. Например, "требовательный" властелин (ondemand governor) принимает решение, основываясь на текущей загрузке ЦП. Это же может быть реализовано посредством различных пользовательских инструментов таких, как
cpudn, cpufreqd, powernowd и многих других. События ACPI можно использовать для включения или выключения динамического изменения частоты в зависимости от источника питания.
Установка частоты вручную
Уменьшение скорости и напряжение на ЦП даёт двойной выигрыш: с одной стороны, потребляется меньше энергии, а с другой - ваша система греется не так сильно, как на полной мощности. Главный недостаток - очевидная потеря производительности. Уменьшение скорости процессора - обмен производительности на сохранение энергии.
Примечание: Не все ноутбуки поддерживают изменение частоты. Если вы не уверены, посмотрите список поддерживаемых процессоров в секции
Устранение неполадок
Самое время проверить, работает ли изменение частоты процессора. Давайте установим ещё один очень полезный при отладке инструмент: sys-
power/cpufrequtils
Листинг 3.1: Проверка частоты ЦП
# emerge cpufrequtils # cpufreq-info
Вывод будет примерно таким:
Листинг 3.2: Пример вывода cpufreq-info cpufrequtils 0.3: cpufreq-info (C) Dominik Brodowski 2004
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
driver: centrino
CPUs which need to switch frequency at the same time: 0
hardware limits: 600 MHz - 1.40 GHz available frequency steps: 600 MHz, 800 MHz, 1000 MHz, 1.20 GHz, 1.40 GHz
570

Управление питанием компьютера
Листинг 3.2: Пример вывода cpufreq-info available cpufreq governors: conservative, ondemand, powersave, userspace, performance current policy: frequency should be within 924 MHz and 1.40 GHz.
The governor "performance" may decide which speed to use within this range.
current CPU frequency is 1.40 GHz. governor "conservative" may decide which speed to use within this range. current CPU frequency is 1.60 GHz.
Теперь, поиграйтесь с cpufreq-set, чтобы убедиться в работоспособности переключение частоты. Например, выполните cpufreq-set -g ondemand, чтобы активировать "требовательного" властелина, и проверьте изменение с помощью
cpufreq-info. Если не работает как надо, вы можете попробовать найти причину в
Устранении неполадок в конце этого руководства.
Автоматическая настройка частоты
Сказанное, конечно, прекрасно, но не очень применимо в реальной жизни. Лучше поручить вашей системе автоматически подбирать подходящую частоту. Есть много способов сделать это. Следующая таблица даёт общее представление о них и поможет вам выбрать необходимый. Их можно не совсем точно разделить на три типа: ядро - для методов нуждающихся только в поддержке ядра, демон - для запускающихся в фоне программ и графический - для программ, которые предоставляют графический интерфейс для простой настройки.
Имя
Тип
Причины
для
переключ
ения
(Switch
decision)
Используемы
е властелины
ядра(Kernel
governors)
Предоставляе
мые режимы
(Further
governors)
Комментарии
требователь ный властелин
('ondemand' governor)
Ядро
Загрузка
ЦП
-
-
Выставляет максимальную частоту при загрузке ЦП и медленно шагает вниз во время простоя ЦП.
Дальнейшая настройка через /
sys/devices/system/cpu/cpu0/cpu freq/ondemand/. По-прежнему требует пользовательских программ (скриптов), если переключение властелинов или подобное необходимо. консерватив ный властелин
('conservativ e' governor)
Ядро
Загрузка
ЦП
-
-
В отличие от требовательного властелина, консервативный не прыгает до максимальной частоты во время высокой загрузки ЦП, а увеличивает частоту постепенно.
Дальнейшая настройка через /
sys/devices/system/cpu/cpu0/cpu freq/conservative/. По-прежнему требует пользовательских программ (скриптов), если
571

Управление питанием компьютера
Имя
Тип
Причины
для
переключ
ения
(Switch
decision)
Используемы
е властелины
ядра(Kernel
governors)
Предоставляе
мые режимы
(Further
governors)
Комментарии
переключение властелинов или подобное необходимо. cpudyn
Демон
Загрузка
ЦП
Производитель ность, сохранение энергии
Динамические
Также поддерживает disk standby. Однако стоит заметить, что laptop-mode в большинстве случаев работает лучше. cpufreqd
Демон
Состояние батареи, загрузка
ЦП, температу ра, запущенн ые программ ы и др.
Все возможные
Нет
Тонкая (и местами сложная) установка. Расширяем посредством плагинов, таких как отслеживание показаний сенсоров (sensor monitoring)
(lm_sensors). Может управлять памятью и ядром некоторых построенных на NVidia графических карт. Cpufreqd не поддерживает SMP, и при желании им можно управлять вручную во время выполнения. powernowd
Демон
Загрузка процессор а
Нет
Пассивный, синусоидальный
(sine), агрессивный
Поддерживает SMP. ncpufreqd
Демон
Температу ра
Нет
Производительн ость, сохранение энергии
Переключает властителинов производительности и сохранения энергии. Очень полезен на ноутбуках, страдающих перегревом. speedfreq
Демон
Загрузка
ЦП
Нет
Динамический, сохранения энергия, производительно сть, фиксированной скорости
Легко настраивается с помощью приятного клиент- серверного интерфейса.
Требуется ядро 2.6. Не поддерживается, сломан и поэтому удален из портежей.
Пожалуйста, перейдите на cpufreqd, если вы всё ещё используете эту программу. gtk- cpuspeedy
Графи ческий
Нет
Нет
Нет
Gnome-приложение, графический инструмент для ручной установки частоты процессора. Не предоставляет никакой автоматизации. klaptopdaem on
Графи ческий
Состояние батареи
Все возможные
Нет
Только для КДЕ, властелин требований для динамического изменения частоты.
Хотя изменение частоты в зависимости от нагрузки выглядит просто на первый взгляд, это не такая уж и тривиальная задача. Плохой алгоритм может привести к постоянному переключению между двумя частотами или бессмысленному
572

Управление питанием компьютера перерасходу энергии из-за неоправданно большой частоты.
Что выбрать? Если вы не можете решить, попробуйте cpufreqd.
Листинг 3.3: Установка cpufreqd
# emerge cpufreqd
cpufreqd настраивается редактированием /etc/cpufreqd.conf. Конфиг, предоставляемый по умолчанию, может вас несколько смутить. Рекомендуется заменить его на конфигурационный файл, который создал бывший разработчик
Gentoo - Henrik Brix Andersen. Учтите, что вам необходим cpufreqd-2.0.0 или более новая версия. Ранние версии используют другой синтаксис конфигурационного файла.
Листинг 3.4: /etc/cpufreqd.conf (cpufreqd-2.0.0 или более новый)
[General]
pidfile=/var/run/cpufreqd.pid poll_interval=3
enable_plugins=acpi_ac, acpi_battery enable_remote=1
remote_group=wheel verbosity=5
[/General]
[Profile]
name=ondemand minfreq=0%
maxfreq=100%
policy=ondemand
[/Profile]
[Profile]
name=conservative minfreq=0%
maxfreq=100%
policy=conservative
[/Profile]
[Profile]
name=powersave minfreq=0%
maxfreq=100%
policy=powersave
[/Profile]
[Profile]
name=performance minfreq=0%
maxfreq=100%
policy=performance
[/Profile]
[Rule]
name=battery ac=off profile=conservative
[/Rule]
[Rule]
573

Управление питанием компьютера
Листинг 3.4: /etc/cpufreqd.conf (cpufreqd-2.0.0 или более новый)
name=battery_low ac=off battery_interval=0-10
profile=powersave
[/Rule]
[Rule]
name=ac ac=on profile=ondemand
[/Rule]
Теперь вы можете запустить демон cpufreqd. Добавьте его в уровни запуска
default и battery.
Листинг 3.5: Запуск cpufreqd
# rc-update add cpufreqd default battery # rc
Иногда желательно установить политику отличную от той, что выбрал демон.
Например, если заряд батареи низок, но вы знаете, что скоро появится питание от сети. В этом случае вы можете перевести cpufreqd в ручной режим с помощью команды cpufreqd-set manual и далее выбрать одну из сконфигурированных политик (они перечислены в cpufreqd-get). Выйти из ручного режима вы можете командой cpufreqd-set dynamic
Предупреждение: Не запускайте одновременно более одной программы, перечисленной выше. Это может привести к конфликтах таких, как постоянное переключение между двумя частотами.
Проверка результата
Осталось только проверить, что ваши новые политики работают правильно.
Простой способ сделать это - следить за скоростью ЦП во время работы:
Листинг 3.6: Отслеживание скорости ЦП
# watch grep \"cpu MHz\" /proc/cpuinfo
Если /proc/cpuinfo не обновляется (см.
Устранение неполадок
), попробуйте sys-
apps/x86info:
Листинг 3.7: Альтернативное отслеживание скорочти ЦП
# watch x86info -mhz
В зависимости от ваших настроек, частота должна возрастать при нагрузке, падать в спокойном состоянии, или оставаться на том же уровне. Если вы используете cpufreqd и уровень подробности (verbosity) равен 5 или больше в cpufreqd.conf, то вы можете найти дополнительную информацию о происходящем в syslog.
4. LCD Power Management
Как вы видели в графике распределения энергии
, LCD экран потребляет наибольшую часть энергии (по крайней мере для мобильных ПК). Таким образом, важно не только выключать экран, когда он не нужен, но и уменьшать его яркость, если это возможно. Большинство ноутбуков предоставляют возможность контролировать яркость экрана
574

Управление питанием компьютера
Настройки засыпания (standby)
В первую очередь необходимо проверить настройки засыпания(standby), остановки(suspend), выключения дисплея. Так как это сильно зависит от вашего оконного менеджера, то вам предстоит делать это самим. Только два замечания: погасить терминал можно командой setterm -blank <количество минут>, setterm -
powersave on и setterm -powerdown <количество минут>. Для X.org, необходимо исправить в /etc/X11/xorg.conf следующее (или в /etc/X11/XF86Config для XFree86):
Листинг 4.1: Настройка засыпания дисплея в X.org и XFree86
Section "ServerLayout"
Identifier [...]
[...]
Option "BlankTime" "5" # Blank the screen after 5 minutes (Fake)
Option "StandbyTime" "10" # Turn off screen after 10 minutes (DPMS)
Option "SuspendTime" "20" # Full suspend after 20 minutes
Option "OffTime" "30" # Turn off after half an hour
[...]
EndSection
[...]
Section "Monitor"
Identifier [...]
Option "DPMS" "true"
[...]
EndSection
Уменьшение подсветки
Если вы можете управлять яркостью с помощью программы, напишите маленький скрипт, который уменьшает подсветку и поместите его в ваш уровень запуска
batery. Следующий скрипт должен работать на большинстве ноутбуков IBM
Thinkpad и Toshiba. Для ноутбуков IBM необходимо включить соответствующий пункт в ядре, а владельцы Toshiba могут поставить sys-power/acpitool и пропустить настройку ibm_acpi, описанную ниже.
Предупреждение: Поддержка изменения яркости является экспериментальной для ibm-acpi, так как работает с оборудованием напрямую и может серьёзно поредить его. Обратитесь к сайту ibm-acpi за подробностями.
Для поддержки изменения уровня яркости, модуль ibm_acpi должен быть запущен с параметром experimental.
Листинг 4.2: Настройка засыпания дисплея в X.org и XFree86
(Прочтите предупреждение выше, прежде чем делать это)
# echo "options ibm_acpi experimental=1" >> /etc/modules.d/ibm_acpi
# /sbin/update-modules
# echo ibm_acpi >> /etc/modules.autoload.d/kernel-2.6
# modprobe ibm_acpi
Это должно выполниться без ошибок, а также должен появится файл
/proc/acpi/ibm/brightness. Скрипт инициализации будет принимать решение об уровне подсветки в зависимости от источника питания.
575

Управление питанием компьютера
Листинг 4.3: /etc/conf.d/lcd-brightness
# См. допустимые значения в /proc/acpi/ibm/brightness
# Пожалуйста, прочтите /usr/src/linux/Documentation/ibm-acpi.txt
# Уровень яркости при питании от сети. По умолчанию - 7. BRIGHTNESS_AC=7
# Уровень яркости при питании от батареи. По умолчанию - 4. BRIGHTNESS_BATTERY=4
Листинг 4.4: /etc/init.d/lcd-brightness
#!/sbin/runscript set_brightness() {
if on_ac_power then
LEVEL=${BRIGHTNESS_AC:-7}
else
LEVEL=${BRIGHTNESS_BATTERY:-4}
fi if [ -f /proc/acpi/ibm/brightness ]
then ebegin "Setting LCD brightness"
echo "level ${LEVEL}" > /proc/acpi/ibm/brightness eend $?
elif [[ -e /usr/bin/acpitool && -n $(acpitool -T | grep "LCD brightness")
]]
then ebegin "Setting LCD brightness"
acpitool -l $LEVEL >/dev/null || ewarn "Unable to set lcd brightness"
eend $?
else ewarn "Setting LCD brightness is not supported."
ewarn "For IBM Thinkpads, check that ibm_acpi is loaded into the kernel"
ewarn "For Toshiba laptops, you've got to install sys-power/acpitool"
fi
}
start() {
set_brightness
}
stop () {
set_brightness
}
Далее, убедитесь, что уровень яркости меняется автоматически, добавив скрипт в уровень запуска battery.
Листинг 4.5: Включаем автоматическое изменение яркости
# chmod +x /etc/init.d/lcd-brightness
# rc-update add lcd-brightness battery
# rc
Управление питанием диска
Жёсткий диск потребляет меньше энергии во время спящего режима (sleep mode).
Поэтому разумно активировать возможности сохранения энергии, когда жёсткий диск не используется некоторое время. Есть два различных способа сделать это.
Первый, (laptop-mode) будет сберегать больше всего энергии за счёт
576

Управление питанием компьютера предотвращения или, по крайней мере, задержки записи на диск. Обратной стороной медали является повышенный риск потери данных при сбое питания или аварии ядра; чтобы уменьшить масштабы возможной аварии, убедитесь, что не запущенно часто пишущих на диск процессов. В качестве альтернативного, второго способа вы можете включить сохранение энергии на диске с помощью
hdparm.
Увеличение времени покоя (idle time) - laptop-mode
Последние 2.6-ядра включают одноимённый laptop-mode. Когда он активирован,
"грязные" буферы (dirty buffers) пишутся на диск при вызовах чтения (read calls) или после 10 минут (вместо 30 секунд). Это минимизирует время, которое тратится на раскручивание диска.
Листинг 5.1: Автоматический старт laptop-mode
# emerge laptop-mode-tools
Настройки пакета laptop-mode-tools хранятся в файле /etc/laptop-mode/laptop- mode.conf. Отредактируйте его на свой вкус - он отлично документирован.
Выполните rc-update add laptop_mode battery, чтобы он запускался автоматически.
Последние версии (1.11 и позже) этого пакета включают полезный инструмент lm-
profiler. Он следит за использованием диска и запущенными сетевыми сервисами и предлагает отключить ненужные. Вы можете отключить их как используя встроенную в laptop-mode-tools поддержку уровней запуска (которая будет переопределена /sbin/rc), так и через созданные вами уровни запуска
default/battery (рекомендуется).
Листинг 5.2: Пример вывода lm-profiler
# lm-profiler
Profiling session started.
Time remaining: 600 seconds
[4296896.602000] amarokapp
Time remaining: 599 seconds
[4296897.714000] sort
[4296897.970000] mv
Time remaining: 598 seconds
Time remaining: 597 seconds
[4296900.482000] reiserfs/0
После наблюдения за вашей системой в течении 10 минут, lm-profiler выведет список сервисов, которые могли вызвать обращения к диску за этот промежуток времени.
Листинг 5.3: lm-profiler предлагает отключить некоторые сервисы
Program: "atd"
Reason: standard recommendation (program may not be running)
Init script: /etc/init.d/atd (GUESSED)
Do you want to disable this service in battery mode? [y/N]: n
Чтобы отключить atd, как предлагается в примере выше, выполните rc-update del
atd battery. Будьте осторожны, не отключите жизенноважные сервисы - lm-profiler частенько выдает не совсем правильные данные. Не отключайте что-либо, если вы полностью не уверены в ненужности сервиса.
577

Управление питанием компьютера
Ограничение доступа на запись
Если вы не хотите использовать laptop-mode, вы должны отключить часто пишущие на диск сервисы вручную - syslogd кандидат на выбывание, например.
Возможно, вы не хотите выключать его полностью, тогда можно подправить конфиг так, чтобы писались только "необходимые вещи". Cups пишет на диск лишь время о времени, поэтому можно выключить его и включать вручную, когда необходимо.
Листинг 5.4: Выключение cups из уровня запуска battery
# rc-update del cupsd battery
Вы также может использовать lm-profiler из laptop-mode-tools (см. выше), чтобы найти неугодные сервисы. Если вы истребили их всех, то можно переходить к настройке hdparm.
hdparm
Вторая возможность - использование hdparm. Пропустите этот шаг, если вы используете laptop-mode. Иначе, откройте /etc/conf.d/hdparm и добавьте следующие строки для ваших жёстких дисков. Этот пример предполагает, что ваш диск именуется hda:
Листинг 5.5: Использование /etc/conf.d/hdparm для засыпания диска hda_args="-q -S12"
Это включит управление питанием для вашего жесткого диска. Если вы когда- нибудь решите отключить управление питанием, то просто измените значение в
/etc/conf.d/hdparm на -q -S0 или выполните hdparm -q -S0 /dev/hda.
Обратитесь к man hdparm за другими опциями. Хотя вы всегда можете запускать hdparm вручную командой
/etc/init.d/hdparm start, намного проще автоматизировать её запуск и остановку. Чтобы сделать это, добавить hdparm в уровень запуска battery.
Листинг 5.6: Автоматизация засыпания диска
#rc-update add hdparm battery
Внимание: Будьте осторожны с настройками засыпания/остановки (sleep/spin down) вашего жёсткого диска. Установление слишком низких значений может быстро "износить" ваш диск, что приведёт к потере гарантии. (Прим. пер.: вспомните историю про Ubuntu
)
Другие "типы и трюки"
Ещё один способ достижения светлой цели снижения энергопотребления состоит в отключении свопа (swap) в режиме питания от батареи. Перед тем, как писать переключатель swapon/swapoff, убедитесь, что у вас достаточно оперативной памяти и своп существенно не используется, иначе вы рискуете приобрести большие проблемы.
Если вы не хотите использовать laptop-mode, то можно уменьшить обращение к диску, монтируя некоторые директории как tmpfs - запись на такие разделы хранится не на диске, а в ОЗУ, и поэтому пропадает после отмонтирования.
Зачастую удобно примонтировать /tmp таким образом, так как она в любом случае очищается при каждой перезагрузке. Правда, стоит убедиться, что у вас достаточно памяти и что нет программ (таких, как менеджеры закачек и
578

Управление питанием компьютера архиваторы), которым требуется экстремально много места в /tmp. Чтобы сделать это, включите поддержку tmpfs в ядре и добавьте подобную следующей строку в /
etc/fstab:
Листинг 5.7: Редактирование /etc/fstab, чтобы сделать /tmp более отрешённым от диска (volatile)
none /tmp tmpfs size=32m 0 0
Предупреждение: Обратите внимание на параметр (32 m), и подстройте его под вашу систему. Если вы не уверены, не пробуйте это вообще - это может сильно уменьшить производительность. Если вы хотите подмонтировать /var/log таким же образом, убедитесь, что файлы сохраняются на диск перед размонтированием.
Они необходимы. Не пытайтесь примонтировать /var/tmp таким образом - он используется Portage при сборке пакетов.
6. Управление питанием других устройств
Графические карты
Если у вас стоит карточка ATI с поддержкой PowerPlay (динамическое изменение частоты графического процессора), вы можете активировать эту возможность в
X.org. Откройте /etc/X11/xorg.conf и добавьте (или включите) опцию DynamicClocks
в секции Устройство (device). Учтите, что это может привести к падению на некоторых системах.
Листинг 6.1: Включение поддержки ATI PowerPlay в X.org
Section "Device" [...] Option "DynamicClocks" "on" EndSection
Управление питанием беспроводных соединений
Карточка беспроводного соединения потребляет немалую часть энергии.
Переведите их в режим сохранения энергии так, как вы сделали это с жёсткими дисками.
Примечание: В скрипте предполагается, что ваш беспроводной интерфейс -
wlan0. Если в вашей системе это не так, что просто замените его на своё.
Добавьте следующую строку в /etc/conf.d/net для автоматического включения управления питанием беспроводной карты:
Листинг 6.2: Автоматизированное управления питанием WLAN
iwconfig_wlan0="power on"
Обратитесь к man iwconfig за деталями и другими опциями такими, как интервалы между пробуждениями или настройки тайм аута. Если ваш драйвер и точка доступа поддерживает изменение частоты сигналов, то из этого можно извлечь ещё больше сохранённой энергии.
Управление питанием USB
Есть две проблемы с потреблением энергии USB-устройствами. Во-первых, устройства такие, как USB мыши, цифровые камеры или флэшки потребляют энергию всё время, пока подключены, вы не можете избежать этого (кроме как отключая их, когда в них нет необходимости). Во-вторых, когда USD устройство подключено, контроллер USB хоста время от времени опрашивает шину, что не даёт CPU уйти в спящий режим. Ядро предоставляет экспериментальную опцию для включение приостановления (suspend) для USB устройств посредством
579
1   ...   44   45   46   47   48   49   50   51   ...   79


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал