Решение проблемы с ENERGY_PERF_BIAS: Set to ‘normal’, was ‘performance’ в Linux.
Примечание: Опробовано на i7 6800K.
Дистрибутив: Linux Mint 19.3.
Проблема проявляется тем, что процессор работает на пониженных частотах, что может быть весьма вредным в рабочих задачах и играх.
Проверка наличия проблемы.
Производится следующей командой:
dmesg --level=warn | grep -i energy
Если в выводе есть запись ENERGY_PERF_BIAS: Set to ‘normal’, was ‘performance’, то это означает наличие конфликта параметра ядра и настройки энергопотребления в UEFI/BIOS. Проявляется только у платформы на базе Intel.
Так же можно «диагностировать» по частоте работы потоков процессора. Если при загрузке процессора ресурсоёмкой задачей частота меньше номинальной, значит проблема присутствует. Вывести значение тактовой частоты процессора по каждому потоку с обновлением данных раз в секунду:
watch -n1 "cat /proc/cpuinfo | grep -i mhz"
Подготовка к изменению режима энергопотребления.
Вывести доступные режимы энергопотребления для каждого потока:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors
powersave — режим энергосбережения.
ondemand — сбалансированный режим (устарел, вместо него теперь powersave).
performance — режим производительности.
Вывести активный режим энергопотребления для каждого потока (энергосберегающий или производительность):
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
В выводе окажется powersave.
Переключение режима энергопотребления.
Переключить режим энергопотребления на performance для всех потоков процессора:
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Примечание: При использовании встроенной графики Intel изменение режима энергопотребления на performance может привести к падению производительности графики. Это связано с общим бюджетом питания CPU и графического ядра. В режиме performance приоритет будет отдан CPU.
В Linux Mint для того, чтобы установленный режим сохранился после перезагрузки, нужно отключить сервис ondemand:
sudo systemctl disable ondemand
Теперь процессор будет работать в режиме производительности.
Бонус.
Режим максимальной производительности можно активировать через параметр ядра epb=0. Посредством Grub это выглядит так:
GRUB_CMDLINE_LINUX_DEFAULT="epb=0"
0 — максимальная производительность.
15 — максимальное энергосбережение (минимальная производительность).
Для применения значения параметра нужно перезагрузить систему.
Помимо энергосберегающего режима, много производительности теряется из-за патчей безопасности, которыми были закрыты многочисленные критические уязвимости процессоров Intel. Если риск оправдан, то их воздействие можно отключить. Начиная с ядра Linux 5.1.x, отключение производится передачей ядру параметра mitigations=off. Сделать это можно через Grub:
GRUB_CMDLINE_LINUX_DEFAULT="mitigations=off"
После перезагрузки системы значение параметра будет применено.