UNPKG

arch-wiki-md-repo

Version:

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

351 lines (221 loc) 23.4 kB
`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 и звуковых карт могут вызвать заикание звука во время переключения частот регулятором. Пока это можно решить только отключением регулятора масшабирования.