Текущее состояние cpufreq на сервере смотрится одной командой:

cpupower frequency-info

В выводе — используемый драйвер (intel_pstate, acpi-cpufreq или другой), список доступных governor’ов, аппаратные границы частоты и transition latency — время, за которое ядро способно переключить частоту. Governor по умолчанию на современных серверах с intel_pstate — обычно powersave, и здесь важная тонкость: это не то же самое, что powersave на старом acpi-cpufreq. Там powersave жёстко фиксирует минимальную частоту и не отпускает её без смены governor. Под intel_pstate powersave — динамический режим, близкий по поведению к ondemand: частота сама поднимается под нагрузкой через аппаратный P-state алгоритм (HWP) и опускается в простое.

Проблема не в том, что CPU «застревает» на минимуме — а в задержке самого перехода из простоя в разгон. Для латенси-чувствительной нагрузки (СУБД под синхронной репликацией, HFT-подобные вещи, обработка в реальном времени) даже миллисекунды на раскрутку частоты после короткого простоя между запросами — это дрожание отклика, которое видно на графиках p99. Лечится фиксацией на максимальной частоте:

cpupower frequency-set -g performance

Governor performance держит частоту на максимально разрешённой аппаратно весь время, независимо от загрузки — ценой более высокого энергопотребления и нагрева в простое. Посмотреть список governor’ов, доступных именно на этом драйвере, можно так:

cpupower frequency-info --governors

Важно: cpupower frequency-set меняет состояние только до следующей перезагрузки. Чтобы governor сохранялся, на Debian/Ubuntu правится /etc/default/cpupower (там же задаются минимальная и максимальная частота) и включается cpupower.service:

systemctl enable --now cpupower.service

#linux #perf