UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

192 lines (121 loc) 16.2 kB
Ссылки по теме * [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)