Благодаря «Scaling Governor», можно выбрать оптимальную схему управления частотой процессора, что влияет на потребление электроэнергии и производительность.
На высоко нагруженных серверах доступа у знакомых были случаи зависания сервера при «ondemand», хотя у меня таких случаев не было, но все же рекомендую изменить на «performance».
На ноутбуках и слабо нагруженных серверах можно оставить «ondemand» для экономии электроэнергии.
На серверах HPE в BIOS обязательно нужно включить Collaborative Power Control (CPC) иначе из операционной системы нельзя будет управлять производительностью процессора и не будет этих файлов:
find / -name scaling_governor
find / -name scaling_max_freq
Посмотрим текущее значение всех ядер процессора:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
ls /sys/devices/system/cpu/
В моем случает, для всех восьми ядер отобразилось значение по умолчанию — «ondemand».
Посмотрим возможные схемы:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Переключимся на root пользователя:
sudo -i
И укажем для всех ядер «performance»:
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu5/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
echo performance > /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor
Либо так:
apt install cpufrequtils
for i in 0 1 2 3 4 5 6 7 8 9 10 11; do cpufreq-set -c $i -g performance; done
Проверим:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
egrep '(MHz)' /proc/cpuinfo
Если предыдущие способы не помогли, то для Intel CPU можно также указать «intel_idle.max_cstate» в grub:
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="... intel_idle.max_cstate=1"
update-grub
reboot
dmesg -T | grep intel_idle
Либо можно полностью отключить энергосберегающие функции CPU и PCIe:
intel_idle.max_cstate=0 processor.max_cstate=1 pcie_aspm=off quiet mitigations=off
В крайнем случае с idle=poll:
intel_idle.max_cstate=0 processor.max_cstate=1 pcie_aspm=off quiet mitigations=off idle=poll
Замечу, что если указать idle=poll, то в BIOS или iLo например, может отображаться что CPU используется на 100%, хотя это не так.
Также отключим уже ненужную службу энергосбережения:
systemctl is-enabled ondemand
systemctl disable ondemand
Смотрите также мои статьи:
Управление мощностью ядер процессора в Linux
PCI Express ASPM