Большинство дистрибутивов Linux, в частности ubuntu, Debian, archlinux – собирают ядро с поддержкой модуля cpufreq, который снижает частоту процессора до минимально допустимой в угоду снижения энергопотребления.
Это значит что в любой момент времени процессор сбрасывает частоты, что может негативно сказаться на рендринге, либо играх.\
▶Выглядит это вот так:
[svetozar@Jarvis ~]$ cat /proc/cpuinfo | grep MHz cpu MHz : 1408.428 cpu MHz : 3666.192 cpu MHz : 4000.953 cpu MHz : 1371.611 cpu MHz : 3250.362 cpu MHz : 4189.559 cpu MHz : 3866.385 cpu MHz : 4317.367 [svetozar@Jarvis ~]$ cat /proc/cpuinfo | grep MHz cpu MHz : 800.053 cpu MHz : 800.051 cpu MHz : 800.067 cpu MHz : 800.006 cpu MHz : 800.012 cpu MHz : 800.004 cpu MHz : 800.034 cpu MHz : 799.976 [svetozar@Jarvis ~]$ cat /proc/cpuinfo | grep MHz cpu MHz : 800.020 cpu MHz : 800.029 cpu MHz : 800.028 cpu MHz : 800.023 cpu MHz : 800.044 cpu MHz : 800.017 cpu MHz : 800.020 cpu MHz : 800.023
Вдруг, посреди работы, или потной катки, у нас падает производительность. Это не есть хорошо. Основная проблема в том, что cpufreq выставлен в режим powersave. Проверить это можно командой:
cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor powersave
Мы можем безболезненно выставить режим perfomance и убрать нежелательные сбросы частот процессора.
Как заставить процессор не сбрасывать частоту в linux?
Данный простой bash-скрипт отключает все режимы энергосбережения процессора и заставляет его работать на максимальной рабочей частоте (разгона не происходит):
#!/bin/sh for cf in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo performance > $cf; #echo powersave > $cf; done
Нет, все равно, сброс будет, но не такой жесткий.
Для запуска скрипта в системе создадим в /opt/ файл antidropcpu.sh (с содержимом выше), дадим права на запуск и запустим от пользователя – root
cd /opt touch antidropcpu.sh chmod +x antidropcpu.sh
▶Для запуска скрипта выполните в терминале (только после того, как выдадите право на запуск):
sudo ./antidropcpu.sh
Производительность процессора увеличится немедленно. Действие будет выполнено сразу для всех доступных ядер CPU.
Проверить также можно командой:
cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor perfomance
Ну и посмотрев частоты процессора можно будет заменить какая у них частота:
[svetozar@Jarvis ~]$ cat /proc/cpuinfo | grep MHz cpu MHz : 4290.454 cpu MHz : 4023.150 cpu MHz : 4360.156 cpu MHz : 4323.625 cpu MHz : 4314.861 cpu MHz : 4354.561 cpu MHz : 4290.469 cpu MHz : 4425.866
▶Важно: После рестарта рабочей машины система cpufreq все равно будет работать в режиме powersave. Так что лучше наш скрипт прописать в автозапуск.
▶ Почему powersave по умолчанию?
Линукс не знает куда его ставят и поэтому всегда экономно распоряжается ресурсами.
▶ Когда и где актуально использование увеличение производительности через cpufreq?
Да везде, если у Вас старый ноут, или 2-х ядерный Сeleron(как у меня на работе), убрав сбросы частот вы получите не плохой прирост производительности. Да, он будет заметен глазу даже на Celeron. Что уж говорить, когда у вас I7-7700k или 6-ти ядерный, 12-ти поточный xeon .
У вас в статье ошибка. Вместо chmod +x antdropcpu.sh, надо написать chmod +x antidropcpu.sh. Букву i забыли!
Спасибо)
Это всё хорошо, но только проц может перегрется.
Смотря какой процессор и смотря какое охлаждение.
а чем вам штатный демон для этих нужд не устраивает ?
cpufrequtils
Не всегда поставлялся в дистрибутиве по умолчанию. Да и проще так)