PHC (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Tango-dialog-warning.pngИнформация в этой статье или разделе устарелаTango-dialog-warning.png

Причина: rc.d references. Need update to be compatible with Systemd. (Обсудить)

Статья поможет дополнительно снизить энергопотребление и нагрев вашего компьютера с помощью Processor Hardware Control.

Введение

Примечание: Английская версия этой статьи немного отличается: в ней не учтены некоторые детали касательно драйвера управлением частотой процессора.

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

Примечание: Существует пакет cpupowerdAUR[ссылка недействительна: сохранено в aur-mirror], который может автоматически управлять частотой и питанием процессоров AMD-K8

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.

Примечание: Для процессоров AMD вы можете использовать модуль phc-k8 вместо powernow-k8, но тогда, после загрузки модуля не будет изменятся напряжение по умолчанию, на указанное в файле /etc/conf.d/phc-k8. Для того, чтобы система подхватила напряжение из этого файла вам придется дополнительно запускать демон phc-k8.
# 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.

Ссылки