Как увеличить производительность процессоров в Linux?
Большинство дистрибутивов 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
▶Для запуска скрипта выполните в терминале (только после того, как выдадите право на запуск):
Производительность процессора увеличится немедленно. Действие будет выполнено сразу для всех доступных ядер 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 .
Управление частотой процессора ноутбука в Linux
Уже давно стал замечать, что если смотреть видеоролики в интернете на нетбуке с процессором Intel Atom, они немного подтормаживают. Покопавшись в логах понял, что в это самое время загрузка процессора идет на 100%, а состояние процессора почему-то остается в режиме «энергосбережение». То ли всему виной операционная система Linux, то ли сам Atom так себя ведет, непонятно.
Единственным решением, которое я увидел, это самостоятельно управлять режимами работы процессора, благо cpufrequtils – это позволяет делать.
В большинстве случаев у Вас уже должна стоять утилита cpufrequtils, но на всякий случай исполняем команду установки этого дела:
sudo apt-get install cpufrequtils
- performance – максимальное быстродействие;
- powersave – режим энергосбережения;
- ondemand – автоматический режим, при котором происходит изменение частоты процессора в зависимости от нагрузки (этот режим стоит по умолчанию);
- conservative – тоже самое как и ondemand, но менее агрессивно.
Возможно, есть где-нибудь в закоулках сайта Intel специальный модуль для ядра Linux, чтобы мой процессор умно переключал эти режимы, но искать мне его лень. Если кто-нибудь это уже делал, то было бы неплохо об этом рассказать в комментариях. Лично я просто вручную переключаю эти режимы консольными командами.
Вот, к примеру, если нужно переключить процессор в максимальное быстродействие:
sudo cpufreq-set -g performance
sudo cpufreq-set -g powersave
Как делаю это я?
sudo cpufreq-set -c 0 -g performance & sudo cpufreq-set -c 1 -g performance & sudo cpufreq-set -c 2 -g performance & sudo cpufreq-set -c 3 -g performance
sudo cpufreq-set -c 0 -g powersave & sudo cpufreq-set -c 1 -g powersave & sudo cpufreq-set -c 2 -g powersave & sudo cpufreq-set -c 3 -g powersave
Из этих двух команд я создал 2 скрипта и «повешал» на сочетание клавиш Ctrl+F8 и Ctrl+F9. Теперь в зависимости от потребностей я могу легко менять частоту процессора.
P.S. Для того, чтобы при переключении не выскакивала консоль (терминал) необходимо вместо sudo использовать gksudo. Это графический интерфейс для ввода пароля.
Комментарии
И че, видать результат?! А как это понять?! Если включен режим энергосбережения тогда CPU почему до 100%? Мне кажется это все такое самовнушение. Прошу вас ответить увидели ли вы положительный результат от вкл выкл данного режима?!
Конечно есть. Производительность, как и шум вентилятора стали максимальны 😉
Посмотреть текущую работу процессора можно командой cpufreq-info
Балин, тоже счастливый обладатель подобного недоноута, в настоящее время использую его как роутер 🙂 Статья полезная попробуем применить на практике.
Чтобы получать уведомления о всех исторических IT-событиях —
Если Вы используете материал моего блога, то будьте добры поставьте ссылку.