PHC (Русский) - ArchWiki

# PHC (Русский)

Ссылки по теме

- Laptop (Русский)
- Pm-utils (Русский)
- CPU Frequency Scaling (Русский)
- Laptop Mode Tools (Русский)

Эта страница нуждается в сопроводителе

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

Информация в этой статье или разделе устарела

Причина: 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[broken link: 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

Обратите внимание: В AUR есть пакет cpupowerd, который может автоматически управлять частотой и питанием процессоров AMD-K8.

K8 series:

- AMD X2 processors
- AMD Turion64 processors
- Family 15 Turion64 X2 processors
- Opterons that support C'nQ?
- AMD Neo processors

## Установка необходимого

В зависимости от процессора на борту, установите phc-intel или phc-k8 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-optimize из AUR. В процессе работы, процессор будет максимально загружен, а напряжение питания будет понижаться, что приведет к краху системы ("замораживание"). Скрипт определит критические значения и прибавит к ним два (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-svn, имеющий графический интерфейс.

Теперь, после загрузки модуля, будет выставлятся указанный набор напряжений, соответствующих разным частотам работы процессора. Если у вас установлен и настроен Cpufrequtils[broken link: replaced by cpupower] (а лучше в связке с LMT), то никакой дополнительной настройки не потребуется: частота будет менятся как и раньше, в то время как энергопотребление и тепловыделение уменьшатся за счет пониженного напряжения питания.

Самое время перезагрузится и проверить работу драйвера. Выполните, чтобы узнать текущие напряжения:

    $ cat /sys/devices/system/cpu/cpu0/cpufreq/phc_vids

Проверьте работу демона Cpufrequtils, если таковой имеется. Команда, кроме всего прочего выведет действющий гувернер и текущую частоту работы процессора.

    $ cpufreq-info

## Автоматическая регуляция для процессоров AMD

Как было сказано выше, владельцы процессоров AMD могут использовать альтернативный (замена Cpufrequtils[broken link: replaced by cpupower]) демон cpupowerd для автоматического контроля за частотой и напряжением процессора. Если вы уверены, что не хотите использовать Cpufrequtils[broken link: replaced by cpupower], то выполните следующие шаги. Для начала любым удобный способом установите cpupowerd. После установки вы можете обратиться к документации на английском, например выполнив `$ 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`.

## Ссылки

- Домашняя страница проекта PHC
- PHC wiki

Categories:

- Русский
- CPU (Русский)
- Power management (Русский)