Перейти к содержимому

Режим энергопотребления CPU

Astra отправляет пакеты по строгому расписанию. Если процессор работает не на полной частоте, пакеты уходят с опозданием, и под нагрузкой выходной поток идёт неровно. На серверах переводите процессор в режим производительности.

Веб-дашборд показывает такое предупреждение, когда политика энергосбережения на хосте удерживает частоту процессора ниже возможной:

The power saving policy holds the CPU on <host> below the clock it is capable of. This could impact application performance

От чего оно появляется, зависит от драйвера процессора:

  • intel_pstate и amd-pstate-epp: предупреждение появляется, только если energy_performance_preference равен power или balance_power. Параметр governor в значении powersave здесь не мешает: частоту выбирает само железо, и turbo продолжает работать.
  • Остальные драйверы (acpi-cpufreq, cppc_cpufreq, intel_cpufreq): предупреждение появляется при любом значении параметра governor, кроме performance. При значениях ondemand, schedutil и conservative частота следует за нагрузкой: при рваной нагрузке от стриминга она остаётся на самом низком уровне и растёт только под длительной нагрузкой.

Выключенный turbo предупреждение не вызывает. Чтобы его убрать, переключитесь в режим performance. Ссылка “Read more” в предупреждении открывает страницу Tune.

“Do not show again” скрывает предупреждение для вашего пользователя на этом хосте. Чтобы увидеть его снова, снимите галочку “Hide CPU power save warning” в Settings → Interface.

Утилита cpupower показывает драйвер, список доступных значений параметра governor и текущую политику. В Debian она входит в пакет linux-cpupower:

sudo apt-get update
sudo apt-get install linux-cpupower

В Ubuntu она входит в linux-tools-common плюс пакет для запущенного ядра:

sudo apt-get update
sudo apt-get install linux-tools-common linux-tools-$(uname -r)
cpupower frequency-info

Эти же значения можно прочитать прямо из sysfs. Достаточно проверить один процессор - на практике параметр governor одинаковый для всех процессоров машины:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference
ДрайверЧто смотретьВсё в порядке, если
intel_pstate, amd-pstate-eppenergy_performance_preferencedefault, performance или balance_performance
acpi-cpufreq, cppc_cpufreq, intel_cpufreq, другиеscaling_governorperformance
нет каталога cpufreq (обычно виртуальные машины)проверять нечегогостевая система не управляет частотой

Tune ставит performance во все scaling_governor и применяет это при каждой загрузке. Для серверов это рекомендуемое решение. То же самое вручную:

cpupower frequency-set -g performance

На intel_pstate и amd-pstate-epp эта команда заодно ставит energy_performance_preference в performance.

На настольном компьютере или ноутбуке этим параметром обычно управляет среда рабочего стола: power-profiles-daemon (за ним стоит настройка “Power Mode” в GNOME и KDE) или TLP. Профиль Power Saver ставит energy_performance_preference в power, а TLP дополнительно понижает его при работе от батареи. Переключите профиль на performance или balanced:

powerprofilesctl set performance

Значение energy_performance_preference можно задать и напрямую, не меняя параметр governor:

echo balance_performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference

Допустимые значения: default, performance, balance_performance, balance_power и power.

Настройки, сделанные через cpupower или tee, не сохраняются после перезагрузки. Чтобы они стали постоянными, добавьте команду в /etc/rc.local - тогда она выполнится при каждой загрузке. Для параметра governor скрипт Tune уже делает это автоматически.