arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
192 lines (121 loc) • 16.2 kB
Markdown
Ссылки по теме
* [Laptop (Русский)](/index.php/Laptop_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Laptop (Русский)")
* [Pm-utils (Русский)](/index.php/Pm-utils_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Pm-utils (Русский)")
* [CPU Frequency Scaling (Русский)](/index.php/CPU_Frequency_Scaling_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "CPU Frequency Scaling (Русский)")
* [Laptop Mode Tools (Русский)](/index.php/Laptop_Mode_Tools_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Laptop Mode Tools (Русский)")
Статья поможет дополнительно снизить энергопотребление и нагрев вашего компьютера с помощью Processor Hardware Control.
## Contents
* [1 Введение](#.D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5)
* [1.1 Поддерживаемые процессоры](#.D0.9F.D0.BE.D0.B4.D0.B4.D0.B5.D1.80.D0.B6.D0.B8.D0.B2.D0.B0.D0.B5.D0.BC.D1.8B.D0.B5_.D0.BF.D1.80.D0.BE.D1.86.D0.B5.D1.81.D1.81.D0.BE.D1.80.D1.8B)
* [1.1.1 Intel](#Intel)
* [1.1.2 AMD](#AMD)
* [2 Установка необходимого](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.BD.D0.B5.D0.BE.D0.B1.D1.85.D0.BE.D0.B4.D0.B8.D0.BC.D0.BE.D0.B3.D0.BE)
* [2.1 Работа с драйвером](#.D0.A0.D0.B0.D0.B1.D0.BE.D1.82.D0.B0_.D1.81_.D0.B4.D1.80.D0.B0.D0.B9.D0.B2.D0.B5.D1.80.D0.BE.D0.BC)
* [3 Выбор напряжения](#.D0.92.D1.8B.D0.B1.D0.BE.D1.80_.D0.BD.D0.B0.D0.BF.D1.80.D1.8F.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F)
* [4 Окончательная настройка](#.D0.9E.D0.BA.D0.BE.D0.BD.D1.87.D0.B0.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D0.B0.D1.8F_.D0.BD.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0)
* [5 Автоматическая регуляция для процессоров AMD](#.D0.90.D0.B2.D1.82.D0.BE.D0.BC.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B0.D1.8F_.D1.80.D0.B5.D0.B3.D1.83.D0.BB.D1.8F.D1.86.D0.B8.D1.8F_.D0.B4.D0.BB.D1.8F_.D0.BF.D1.80.D0.BE.D1.86.D0.B5.D1.81.D1.81.D0.BE.D1.80.D0.BE.D0.B2_AMD)
* [6 Ссылки](#.D0.A1.D1.81.D1.8B.D0.BB.D0.BA.D0.B8)
## Введение
**Примечание:** Английская версия этой статьи немного отличается: в ней не учтены некоторые детали касательно драйвера управлением частотой процессора.
PHC (Processor Hardware Control) - это патч для драйвера управления частотой процессора (например для таких как *acpi-cpufreq* или *powernow-k8*). Он добавляет функцию произвольного изменения напряжения питания процессора, если процессор, конечно, такую функцию поддерживает. В контексте данной статьи существует термин *андервольтинг* (undervolting) - он описывает разумное понижение напряжения питания процессора на низких частотах с целью экономии энергии. Понижение питающего напряжения снижает энергопотребление и тепловыделение, но может снизить также и стабильность системы, так что данная тема должна быть интересна в первую очередь отчаянным владельцам ноутбуков.
Гики могут также вспомнить [закон Джоуля-Ленца](https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%94%D0%B6%D0%BE%D1%83%D0%BB%D1%8F_%E2%80%94_%D0%9B%D0%B5%D0%BD%D1%86%D0%B0). Q=(U/R)•Rt, где Q - тепловыделение, U - напряжение. Из формулы видно, что незначительное уменьшение U позволяет значительно (в геометрической прогрессии за счет квадрата U/R) уменьшить Q.
Если вы не сталкивались с таким понятием как [масштабирование частоты](/index.php/CPU_frequency_scaling_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "CPU frequency scaling (Русский)") и пакетом [Cpufrequtils](https://www.archlinux.org/packages/?name=Cpufrequtils), то самое время это сделать - это более простые, распространенные и эффективные методы, которые следует применять в первую очередь. Данная статья описывает хорошее дополнение к этим методам, но отнюдь не замену.
### Поддерживаемые процессоры
PHC поддерживает два наиболее распространённых процессорных семейства: Intel и AMD. Информацию об имеющемся процессоре вы можете получить выполнив `$ cat /proc/cpuinfo`.
#### Intel
Свежая информация из официальной Wiki: [Intel Processors](http://www.linux-phc.org/wiki/doku.php?id=intel_processors)
* Mobile Centrino
* Atom (N2xx)
* Core / Core2 (T and P Series)
* Core i (tested on Core i3 550)
#### AMD
Свежая информация из официальной Wiki: [AMD K8 Processors](http://www.linux-phc.org/wiki/doku.php?id=amd_k8_processors)
**Примечание:** Существует пакет [cpupowerd](https://aur.archlinux.org/packages/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](https://aur.archlinux.org/packages/phc-intel/) или [phc-k8](https://aur.archlinux.org/packages/phc-k8/) AMD-K8 из пользовательского репозитория [AUR](/index.php/AUR "AUR"). Теперь, после установки потребуется пропатчить модуль. После серьёзного обновления ядра (модуля), его придется патчить заново.
Также установите пакет [linux-headers](https://www.archlinux.org/packages/?name=linux-headers) и/или [linux-lts-headers](https://www.archlinux.org/packages/?name=linux-lts-headers), чтобы патч и компиляция нового модуля стали возможными. После этого запустите:
```
# /etc/rc.d/phc-intel setup
или
# /etc/rc.d/phc-k8 setup
```
После чего добавьте "acpi-cpufreq" (для Intel) или "powernow-k8" (для процессоров AMD-K8) в секцию модулей вашего [rc.conf](/index.php/Rc.conf "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](/index.php/Rc.conf "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](https://aur.archlinux.org/packages/linux-phc-optimize/). В процессе работы процессор будет максимально загружен, а напряжение питания будет понижаться, что приведет к краху системы ("замораживание"). Скрипт определит критические значения и прибавит к ним два (`x+2=stable`) для стабильности. Запустите его несколько раз для получения всех напряжений. Результаты будут записаны в файл `~/phc_tweaked_vids`.
## Окончательная настройка
После компиляции модуля (см. выше) и определения минимального достаточного для стабильной работы напряжения, добавьте его в файл /etc/conf.d/phc-intel или /etc/conf.d/phc-k8\. В примере приведены экспериментально определённые напряжения для процессора [AMD Turion 64 X2 Mobile Tecnology TL-58](http://www.cpu-world.com/CPUs/K8/AMD-Turion%2064%20X2%20Mobile%20technology%20TL-58%20-%20TMDTL58HAX5DC.html).
```
VIDS="21 23 24 34"
```
Существует также инструмент для настройки [phctool-svn](https://aur.archlinux.org/packages/phctool-svn/), имеющий графический интерфейс.
Теперь, после загрузки модуля, будет выставляться указанный набор напряжений, соответствующих разным частотам работы процессора. Если у вас установлен и настроен [Cpufrequtils](https://www.archlinux.org/packages/?name=Cpufrequtils) (а лучше в связке с [LMT](/index.php/Laptop_Mode_Tools_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Laptop Mode Tools (Русский)")), то никакой дополнительной настройки не потребуется: частота будет меняться, как и раньше, в то время как энергопотребление и тепловыделение уменьшатся за счет пониженного напряжения питания.
Самое время перезагрузится и проверить работу драйвера. Выполните, чтобы узнать текущие напряжения:
```
$ cat /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
```
Проверьте работу демона Cpufrequtils, если таковой имеется. Команда, кроме всего прочего выведет действющий гувернер и текущую частоту работы процессора.
```
$ cpufreq-info
```
## Автоматическая регуляция для процессоров AMD
Как было сказано выше, владельцы процессоров AMD могут использовать альтернативный (замена [Cpufrequtils](https://www.archlinux.org/packages/?name=Cpufrequtils)) демон [cpupowerd](https://aur.archlinux.org/packages/cpupowerd/) для автоматического контроля частоты и напряжением процессора. Если вы уверены, что не хотите использовать [Cpufrequtils](https://www.archlinux.org/packages/?name=Cpufrequtils), то выполните следующие шаги. Для начала любым удобным способом установите [cpupowerd](https://aur.archlinux.org/packages/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](/index.php/Rc.conf "Rc.conf"), а также необходимые модули:
`/etc/rc.conf`
```
MODULES=(msr powernow-k8 cpufreq_userspace)
DAEMONS=(cpupowerd)
```
Чтобы посмотреть текущее состояние процессора, выполните `# cpupowerd -s`.
## Ссылки
* [Домашняя страница проекта PHC](http://www.linux-phc.org/)
* [PHC wiki](http://www.linux-phc.org/wiki/doku.php)