PHC (Русский)
Ссылки по теме
Статья поможет дополнительно снизить энергопотребление и нагрев вашего компьютера с помощью Processor Hardware Control.
Contents
Введение
PHC (Processor Hardware Control) - это патч для драйвера управления частотой процессора (например для таких как acpi-cpufreq или powernow-k8). Он добавляет функцию произвольного изменения напряжения питания процессора, если процессор, конечно, такую функцию поддерживает. В контексте данной статьи существует термин андервольтинг (undervolting) - он описывает разумное понижение напряжения питания процессора на низких частотах с целью экономии энергии. Понижение питающего напряжения снижает энергопотребление и тепловыделение, но может снизить также и стабильность системы, так что данная тема должна быть интересна в первую очередь отчаянным владельцам ноутбуков.
Гики могут также вспомнить закон Джоуля-Ленца. Q=(U/R)2•Rt, где Q - тепловыделение, U - напряжение. Из формулы видно, что незначительное уменьшение U позволяет значительно (в геометрической прогрессии за счет квадрата U/R) уменьшить Q.
Если вы не сталкивались с таким понятием как масштабирование частоты и пакетом Cpufrequtils[ссылка недействительна: replaced by cpupower], то самое время это сделать - это более простые, распространенные и эффективные методы, которые следует применять в первую очередь. Данная статья описывает хорошее дополнение к этим методам, но отнюдь не замену.
Поддерживаемые процессоры
PHC поддерживает два наиболее распространённых процессорных семейства: Intel и AMD. Информацию об имеющемся процессоре вы можете получить выполнив $ cat /proc/cpuinfo
.
Intel
Свежая информация из официальной Wiki: Intel Processors
- Mobile Centrino
- Atom (N2xx)
- Core / Core2 (T and P Series)
- Core i (tested on Core i3 550)
AMD
Свежая информация из официальной Wiki: AMD K8 Processors
K8 series:
- AMD X2 processors
- AMD Turion64 processors
- Family 15 Turion64 X2 processors
- Opterons that support C'nQ?
- AMD Neo processors
Установка необходимого
В зависимости от процессора на борту, установите phc-intelAUR или phc-k8AUR AMD-K8 из пользовательского репозитория AUR. Теперь, после установки потребуется пропатчить модуль. После серьёзного обновления ядра (модуля), его придется патчить заново.
Также установите пакет linux-headers и/или linux-lts-headers, чтобы патч и компиляция нового модуля стали возможными. После этого запустите:
# /etc/rc.d/phc-intel setup или # /etc/rc.d/phc-k8 setup
После чего добавьте "acpi-cpufreq" (для Intel) или "powernow-k8" (для процессоров AMD-K8) в секцию модулей вашего rc.conf.
# nano /etc/rc.conf
# HARDWARE # -------- MODULES=(powernow-k8 fuse vboxdrv)
Работа с драйвером
Перезагрузите компьютер (если уже добавили его в rc.conf) или загрузите модуль вручную: # modprobe acpi-cpufreq
или # modprobe powernow-k8
. После этого можно понаблюдать за работой драйвера, отфильтровав его сообщения:
$ dmesg | grep k8
Ошибки могут свидетельствовать о несовместимости с вашим процессором, неверным драйвером или ошибками в компиляции. Неверно установленные напряжения могут давать ошибки уже при загрузке модуля во время старта системы.
В /sys/devices/system/cpu/cpu0/cpufreq/
должны появится новые файлы, начивающиеся с "phc_".
Проверим, работает PHC или нет. Команда должна возвратить пары значений FID:VID, в противном случае, ваш процессор видимо не поддерживается. Вы должны увидеть пары множителей, где FID соответствует определённой частоте, а VID (число после двоеточия) напряжению питания. Подразумевается именно соответствие, а не совпадение - современные процессоры работают от напряжений менее пяти вольт.
$ cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls 11:18 10:19 8:20 0:30
Попробуйте установить напряжения вручную, например:
# echo 18 19 20 33 > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
Теперь здесь должны быть ваши значения VID:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls 11:18 10:19 8:20 0:33
Выбор напряжения
Существует не вполне здоровый способ для определения лучших значений. Это скрипт linux-phc-optimizeAUR[ссылка недействительна: сохранено в aur-mirror]. В процессе работы процессор будет максимально загружен, а напряжение питания будет понижаться, что приведет к краху системы ("замораживание"). Скрипт определит критические значения и прибавит к ним два (x+2=stable
) для стабильности. Запустите его несколько раз для получения всех напряжений. Результаты будут записаны в файл ~/phc_tweaked_vids
.
Окончательная настройка
После компиляции модуля (см. выше) и определения минимального достаточного для стабильной работы напряжения, добавьте его в файл /etc/conf.d/phc-intel или /etc/conf.d/phc-k8. В примере приведены экспериментально определённые напряжения для процессора AMD Turion 64 X2 Mobile Tecnology TL-58.
VIDS="21 23 24 34"
Существует также инструмент для настройки phctool-svnAUR[ссылка недействительна: сохранено в aur-mirror], имеющий графический интерфейс.
Теперь, после загрузки модуля, будет выставляться указанный набор напряжений, соответствующих разным частотам работы процессора. Если у вас установлен и настроен Cpufrequtils[ссылка недействительна: replaced by cpupower] (а лучше в связке с LMT), то никакой дополнительной настройки не потребуется: частота будет меняться, как и раньше, в то время как энергопотребление и тепловыделение уменьшатся за счет пониженного напряжения питания.
Самое время перезагрузится и проверить работу драйвера. Выполните, чтобы узнать текущие напряжения:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
Проверьте работу демона Cpufrequtils, если таковой имеется. Команда, кроме всего прочего выведет действющий гувернер и текущую частоту работы процессора.
$ cpufreq-info
Автоматическая регуляция для процессоров AMD
Как было сказано выше, владельцы процессоров AMD могут использовать альтернативный (замена Cpufrequtils[ссылка недействительна: replaced by cpupower]) демон cpupowerdAUR[ссылка недействительна: сохранено в aur-mirror] для автоматического контроля частоты и напряжением процессора. Если вы уверены, что не хотите использовать Cpufrequtils[ссылка недействительна: replaced by cpupower], то выполните следующие шаги. Для начала любым удобным способом установите cpupowerdAUR[ссылка недействительна: сохранено в aur-mirror]. После установки вы можете обратиться к документации на английском, например, выполнив less /usr/share/cpupowerd/README
.
Теперь потребуется сгенерировать конфигурационный файл. Вы должны заранее загрузить драйвер управления питанием и частотой процессора. Кроме того, возможно, потребуется дополнительно загрузить модуль msr.
# modprobe powernow-k8 # modprobe msr
Если описанное выше верно, самое время приступить к генерации конфигурационного файла.
# cpupowerd -a /etc/cpupowerd.conf
После чего появится файл /etc/cpupowerd.conf с примерно таким содержанием:
800 1.1500 1600 1.1500 1800 1.1500 1900 1.1500
Слева указаны доступные частоты в МГц, а справа, соответственно, подаваемое на процессор напряжение питания, при работе на такой частоте. Вы можете закомментировать (добавить знак #
перед) ненужные строки, тогда эти частоты использоваться демоном в процессе работы не будут.
Не забудте добавить демон cpupowerd в секцию DAEMONS файла rc.conf, а также необходимые модули:
/etc/rc.conf
MODULES=(msr powernow-k8 cpufreq_userspace) DAEMONS=(cpupowerd)
Чтобы посмотреть текущее состояние процессора, выполните # cpupowerd -s
.