arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
351 lines (221 loc) • 23.4 kB
Markdown
`Cpufrequtils` — это набор утилит разработанных для поддержки функции масштабирования частоты процессора, технологии, преимущественно применяемой в ноутбуках, которая позволяет операционной системе увеличивать или уменьшать тактовую частоту процессора в зависимости от нагрузки на систему и/или схемы энергопотребления. Например, масштабирование частоты процессора может сократить частоту 2 ГГц процессора до 1 ГГц когда ноутбук работает от батарей, увеличивая таким образом время работы, снижая нагрев и уменьшая шум вентилятора.
При использовании совместно с [Laptop Mode Tools](/index.php/Laptop_Mode_Tools "Laptop Mode Tools"), владельцы обеспечены полным набором утилит для управления энергопотреблением.
## Contents
* [1 Установка cpufrequtils](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_cpufrequtils)
* [2 Настройка](#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0)
* [2.1 Драйвер управления частотой процессора](#.D0.94.D1.80.D0.B0.D0.B9.D0.B2.D0.B5.D1.80_.D1.83.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F_.D1.87.D0.B0.D1.81.D1.82.D0.BE.D1.82.D0.BE.D0.B9_.D0.BF.D1.80.D0.BE.D1.86.D0.B5.D1.81.D1.81.D0.BE.D1.80.D0.B0)
* [2.1.1 Intel](#Intel)
* [2.1.2 AMD](#AMD)
* [2.2 Загрузка при старте системы](#.D0.97.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B0_.D0.BF.D1.80.D0.B8_.D1.81.D1.82.D0.B0.D1.80.D1.82.D0.B5_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B)
* [2.3 Преимущества использования в GNOME](#.D0.9F.D1.80.D0.B5.D0.B8.D0.BC.D1.83.D1.89.D0.B5.D1.81.D1.82.D0.B2.D0.B0_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.D0.B2_GNOME)
* [2.4 Laptop Mode Tools](#Laptop_Mode_Tools)
* [2.5 Регуляторы масштабирования (схемы энергопотребления)](#.D0.A0.D0.B5.D0.B3.D1.83.D0.BB.D1.8F.D1.82.D0.BE.D1.80.D1.8B_.D0.BC.D0.B0.D1.81.D1.88.D1.82.D0.B0.D0.B1.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F_.28.D1.81.D1.85.D0.B5.D0.BC.D1.8B_.D1.8D.D0.BD.D0.B5.D1.80.D0.B3.D0.BE.D0.BF.D0.BE.D1.82.D1.80.D0.B5.D0.B1.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F.29)
* [2.5.1 Изменение параметров работы регулятора ondemand](#.D0.98.D0.B7.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D0.BE.D0.B2_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_.D1.80.D0.B5.D0.B3.D1.83.D0.BB.D1.8F.D1.82.D0.BE.D1.80.D0.B0_ondemand)
* [2.5.2 Взаимодействие с событиями ACPI](#.D0.92.D0.B7.D0.B0.D0.B8.D0.BC.D0.BE.D0.B4.D0.B5.D0.B9.D1.81.D1.82.D0.B2.D0.B8.D0.B5_.D1.81_.D1.81.D0.BE.D0.B1.D1.8B.D1.82.D0.B8.D1.8F.D0.BC.D0.B8_ACPI)
* [2.6 Демон](#.D0.94.D0.B5.D0.BC.D0.BE.D0.BD)
* [3 Устранение неисправностей](#.D0.A3.D1.81.D1.82.D1.80.D0.B0.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BD.D0.B5.D0.B8.D1.81.D0.BF.D1.80.D0.B0.D0.B2.D0.BD.D0.BE.D1.81.D1.82.D0.B5.D0.B9)
## Установка cpufrequtils
[cpufrequtils](https://www.archlinux.org/packages/?name=cpufrequtils) - это набор утилит для *масштабирования частоты процессора*. Установка этого пакета необязательна, но крайне рекомендуется, так как предоставляет полезные наборы команд для консоли и демона для запуска масштабирования при старте системы.
[powertop](https://www.archlinux.org/packages/?name=powertop) предоставляет ту же информацию, что и команда cpufreq-info, однако уступает ей в детальности.
Пакет [cpufrequtils](https://www.archlinux.org/packages/?name=cpufrequtils) доступен в репозитории [extra]:
```
# pacman -S cpufrequtils
```
## Настройка
Настройка масштабирования частоты производится в три этапа:
1. загрузка соответствующего драйвера управления частотой процессора.
2. загрузка желаемого регулятора масштабирования.
3. настройка метода управления регуляторами: ручной (через /sys или cpufreq-set), через cpufrequtils [daemon](#.D0.94.D0.B5.D0.BC.D0.BE.D0.BD), laptop-mode-tools, acpid или при помощи апплета окружения рабочего стола.
4. (опционально) настройка масштабирования частоты.
### Драйвер управления частотой процессора
Для корректного управления масштабированием частотой, ОС прежде всего должна знать параметры вашего процессора(ов). Для этого нужно загрузить модуль ядра, который может считывать и управлять параметрами вашего процессора(ов).
Для большинства современных ноутбуков и настольных компьютеров можно использовать драйвер **`acpi-cpufreq`**, однако есть ещё такие варианты как *p4-clockmod, powernow-k6, powernow-k7, powernow-k8,* и *speedstep-centrino*. Чтобы увидеть полный список, запустите:
```
$ ls /lib/modules/$(uname -r)/kernel/arch/x86/kernel/cpu/cpufreq/
```
**Tip:** Для AMD "K10" используйте драйвер `powernow-k8`.
Для загрузки драйвера вручную:
#### Intel
```
# modprobe acpi-cpufreq
```
Для более старых процессоров Intel, система может выдать:
```
FATAL: Error inserting acpi_cpufreq ([...]/acpi-cpufreq.ko): No such device
```
В этой ситуации, замените модуль ядра `acpi_cpufreq` на `speedstep-centrino`, `p4-clockmod` или `speedstep-ich`.
**Tip:** Учтите, что модуль speedstep-centrino устарел, а модуль p4-clockmod поддерживает только performance и powersave регуляторов.)
#### AMD
```
# modprobe powernow-k8
```
### Загрузка при старте системы
Для автоматической загрузки драйвера во время старта системы, добавьте соответствующий драйвер в массив MODULES в файле `/etc/rc.conf`. Например:
```
MODULES=( **acpi-cpufreq** vboxdrv fuse fglrx iwl3945 ... )
```
Как только загружен правильный драйвер cpufreq, вы можете посмотреть детальную информацию о вашем процессоре(ах), выполнив:
```
$ cpufreq-info
```
Вот пример вывода `cpufreq-info`:
```
$ cpufreq-info
```
```
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which need to switch frequency at the same time: 0 1
hardware limits: 1000 MHz - 2.00 GHz
available frequency steps: 2.00 GHz, 1.67 GHz, 1.33 GHz, 1000 MHz
available cpufreq governors: ondemand, performance
current policy: frequency should be within 1000 MHz and 2.00 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 2.00 GHz.
analyzing CPU 1:
driver: acpi-cpufreq
CPUs which need to switch frequency at the same time: 0 1
hardware limits: 1000 MHz - 2.00 GHz
available frequency steps: 2.00 GHz, 1.67 GHz, 1.33 GHz, 1000 MHz
available cpufreq governors: ondemand, performance
current policy: frequency should be within 1000 MHz and 2.00 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 2.00 GHz.
```
Для просмотра списка доступных регуляторов:
```
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
```
Наблюдать за частотой процессора в режиме реального времени можно, выполнив команду:
```
watch grep \"cpu MHz\" /proc/cpuinfo
```
### Преимущества использования в GNOME
У среды рабочего стола GNOME есть апплет для управления регуляторами "на лету". Чтобы каждый раз не вводить пароль при переключении, просто создайте `/var/lib/polkit-1/localauthority/50-local.d/org.gnome.cpufreqselector.pkla` и отредактируйте файл:
```
[org.gnome.cpufreqselector]
Identity=unix-user:USER
Action=org.gnome.cpufreqselector
ResultAny=no
ResultInactive=no
ResultActive=yes
```
Слово USER замените на ваше имя пользователя.
Пакет [desktop-privileges](https://aur.archlinux.org/packages/desktop-privileges/) в [AUR](/index.php/Arch_User_Repository_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Arch User Repository (Русский)") содержит файл .pkla для авторизованного использования апплета всей группой пользователей power.
### Laptop Mode Tools
Если Вы используете или планируете использовать [Laptop Mode Tools](/index.php/Laptop_Mode_Tools "Laptop Mode Tools") для других возможностей энергосбережения, Вы можете также дать этой программе возможность управлять частотой Вашего процессора. Просто добавьте модуль `acpi-cpufreq` в массив MODULES в файле `/etc/rc.conf`:
```
MODULES=(**acpi-cpufreq**)
```
Затем просмотрите файл `/etc/laptop-mode/conf.d/cpufreq.conf` для определения регуляторов, частот и политик использования.
### Регуляторы масштабирования (схемы энергопотребления)
Регуляторы можно рассматривать как заранее сконфигурированые схемы энергопотребления процессора. Регуляторы должны быть загружены как модули ядра, чтобы их могли видеть такие программы как kpowersave и gnome-power-manager. Вы можете загрузить столько гувернёров, сколько вам угодно, однако в любой момент времени активным будет только один.
Доступные регуляторы:
`cpufreq_performance` *(по-умолчанию)*
регулятор *performance(производительность)* встроен в ядро и поддерживает процессор(ы) на максимальной тактовой частоте
`cpufreq_ondemand` *(рекомендуется)*
динамически увеличивает/уменьшает тактовую частоту процессора в зависимости от загруженности системы
`cpufreq_conservative`
похож на ondemand, но более экономный (предпочтение отдаётся меньшим тактовым частотам)
`cpufreq_powersave`
процессор работает на минимально возможной тактовой частоте
`cpufreq_userspace`
тактовая частота задаётся пользователем вручную
Добавьте необходимый регулятор в массив MODULES в `/etc/rc.conf` (обязательно после модуля acpi-cpufreq) :
```
MODULES=(acpi-cpufreq ***cpufreq_ondemand cpufreq_powersave*** vboxdrv fuse fglrx iwl3945 ... )
```
Вы можете вручную установить регулятора при помощи команды `cpufreq-set` (как root), однако, эта настройка не сохранится после перезагрузки/выключения. Например:
```
# cpufreq-set -g ondemand
```
Заметьте, что предыдущие команды задавали регулятора только для первого процессора. Если у Вас многоядерный процессор или многопроцессорная система, используйте флаг -c, чтобы задать регулятор для определенного процессора. Например, чтобы задать регулятор для четвертого процессора (нумерация начинается с нуля):
```
# cpufreq-set -c 3 -g ondemand
```
Чтобы задать регулятор для всех ядер многоядерного процессора, введите (пример для 6-ядерного процессора):
```
# for i in 0 1 2 3 4 5; do cpufreq-set -c $i -g ondemand; done
```
Чтобы задать максимальный и минимальный пределы частоты для регулятора используйте опции -u и -d. Например, зададим максимальный предел 2.20GHz и минимальный предел 1.50GHz для регулятора ondemand и всех ядер 6-ядерного процессора:
```
# for i in 0 1 2 3 4 5; do cpufreq-set -c $i -g ondemand -u 2.20Ghz -d 1.50Ghz; done
```
Для дополнительной информации запустите `cpufreq-set --help` или `man cpufreq-set`.
Если Вам нужен графический интерфейс для настройки регуляторов или частоты, есть пакет [trayfreq](/index.php/Trayfreq "Trayfreq"), который при запуске появляется в трее.
#### Изменение параметров работы регулятора ondemand
Чтобы изменить значение загрузки процессора, при котором регулятор повышает частоту, нужно изменять значение в файле `/sys/devices/system/cpu/cpufreq/ondemand/up_threshold`. Текущее значение можно посмотреть, выполнив:
```
# cat /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
```
Значение по-умолчанию равно `95`, в версии ядра 2.6.37\. Это значит, что частота повысится, как только загрузка процессора достигнет 95%. Можете изменить это значение, запустив:
```
echo "15" > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
```
**Note:** Минимальное допустимое значение, которое Вы вводите, должно быть не ниже значение в файле down_threshold; если Вы попробуете внести меньшее значение, bash вернет ошибку: "bash: echo: write error: Invalid argument"
**Note:** Добавление строки с помощью команды echo в файл `/etc/rc.local` позволит настройке "пережить" перезагрузку. Однако, должен быть выставлен гувернер `ondemand`.
Если Вы не хотите дожидаться загрузки демона cpufreq при старте системы (например, чтобы уменьшить время загрузки), добавьте это в файл `/etc/rc.local`:
```
(sleep 30 && sh -c "echo -n 75 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold")&
```
#### Взаимодействие с событиями ACPI
Пользователи могут сконфигурировать автоматическое масштабирование при различных событиях ACPI, таких как подключение устройства питания или закрытия крышки ноутбука. Эти события определяются в `/etc/acpi/handler.sh`. Если пакет [acpid](https://www.archlinux.org/packages/?name=acpid) установлен, этот файл уже должен существовать по указанному пути. Например, чтобы изменить регулятор с `performance` на `conservative` при отключении устройства питания и вернуть его на место при подключении:
```
/etc/acpi/handler.sh
```
```
[...]
ac_adapter)
case "$2" in
AC*)
case "$4" in
00000000)
echo "conservative" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo -n $minspeed >$setspeed
#/etc/laptop-mode/laptop-mode start
;;
00000001)
echo "performance" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo -n $maxspeed >$setspeed
#/etc/laptop-mode/laptop-mode stop
;;
esac
;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
[...]
```
### Демон
`cpufrequtils` также включает в себя демона, который позволяет установить регулятор масштабирования и частоту процессора при старте системы, без использования дополнительных пакетов, таких как *kpowersave*.
Перед тем, как запустить демона, отредактируйте `/etc/conf.d/cpufreq`. Выберите нужный Вам регулятор, выставите минимальную/максимальную частоту процессора, к примеру:
```
/etc/conf.d/cpufreq
```
```
#configuration for cpufreq control
# valid governors:
# ondemand, performance, powersave,
# conservative, userspace
governor="ondemand"
# valid suffixes: Hz, kHz (default), MHz, GHz, THz
min_freq="1GHz"
max_freq="2GHz"
```
**Note:** Точные значения минимальной и максимальной частоты процессора можно узнать, запустив `cpufreq-info` после загрузки драйвера ЦП (`modprobe acpi-cpufreq`). Эти значения задавать необязательно. Вы можете закомментировать строки min/max_freq. Масштабирование будет работать автоматически.
После настройки можете запустить демона:
```
# /etc/rc.d/cpufreq start
```
Для автоматического запуска демона при старте системы, добавьте `cpufreq` в массив DAEMONS в файле `/etc/rc.conf`. К примеру:
```
DAEMONS=(syslog-ng networkmanager @alsa @crond @cupsd **@cpufreq**)
```
## Устранение неисправностей
* Некоторые приложения, например, [ntop](/index.php/Ntop "Ntop"), могут некорректно работать при масштабировании частоты. В случае с ntop может произойти сегментация или Вы можете потерять информацию, так как регулятор `ondemand` не может достаточно быстро среагировать на повышение нагрузки на процессор и повысить частоту, а текущей частоты не хватит для обработки всех пакетов, пришедших на сетевой интерфейс.
* Некоторые модели процессоров могут не очень хорошо работать на стандартных настройках регулятора `ondemand` (например, видео воспроизводится с рывками или тормозит анимация окон). Это можно решить, не только отключив полностью масштабирование частоты. Также можно увеличить "агрессивность" переключения частоты. Просто снизьте значение переменной *up_threshold* для каждого процессора. См. [изменение параметров работы регулятора ondemand](#.D0.98.D0.B7.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D0.BE.D0.B2_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B_.D1.80.D0.B5.D0.B3.D1.83.D0.BB.D1.8F.D1.82.D0.BE.D1.80.D0.B0_ondemand).
* Иногда демон задает не максимальную частоту процессора, а частоту немного меньше (2.99МГц вместо 3МГц). В этой ситуации задайте значение максимальной частоты немного больше максимальной. Например, если максимальная частота процесстора 3МГц, задайте переменной max_freq значение 3.01МГц.
* Некоторые модели BIOS испытывают трудности с масштабированием частот, да и с переключением на повышенные частоты. Правда, это можно обойти. Добавьте строку "processor.ignore_ppc=1" в загрузку ядра или установите значение /sys/module/processor/parameters/ignore_ppc равное 1.
* Некоторые комбинации драйверов ALSA и звуковых карт могут вызвать заикание звука во время переключения частот регулятором. Пока это можно решить только отключением регулятора масшабирования.