Если вы уже пытались настраивать частоту Linux, то, наверное уже заметили, что частота процессора сама меняется в зависимости от нагрузки на систему. Операционная система устанавливает лимит минимальной и максимальной частоты, и когда нагрузки нет частота автоматически опускается до минимальной, а при появлении нагрузки подымается назад.
Конечно, в интерфейсе BIOS можно зафиксировать частоту на одном уровне, но в этом нет смысла. С точки зрения баланса производительности и энергопотребления лучше оставить всё как есть. Но правила изменения частоты можно настроить. Для этого используются политики CPU Governor. В этой статье мы рассмотрим как узнать частоту процессора Linux, а также как настроить её изменение.
Содержание статьи
Как узнать частоту процессора Linux
Узнать текущую частоту процессора можно вместе с другой информацией о нём с помощью утилиты lscpu:
lscpu
Здесь же выводится максимальная и минимальная частота. Текущую частоту для каждого ядра по отдельности вы можете посмотреть в файле /proc/cpuinfo:
cat /proc/cpuinfo
Так можно вывести информацию обо всех ядрах на одном экране:
cat /proc/cpuinfo | grep "cpu MHz"
Утилита lshw тоже выводит текущую и максимальную частоту в секции cpu:
lshw
Ну и hwinfo выводит нужную нам информацию. Правда, прежде надо её установить:
sudo apt install hwinfo
hwinfo --short --cpu
Если вы хотите отслеживать как меняется частота со временем используйте hwinfo в сочетании с утилитой watch:
watch hwinfo --short --cpu
Теперь вы знаете как посмотреть частоту процессора Linux, перейдём к управлению.
Управление частотой в Linux
Для управления частотой в операционной системе Linux используются политики CPU Governor. Они определяют как быстро будет изменятся частота при изменении нагрузки. Существует четыре политики:
- powersave - процессор работает на минимальной частоте;
- performance - процессор работает на максимальной частоте;
- ondemand - динамическое изменение частоты, при появлении нагрузки резко устанавливается самая высокая частота, а при снижении нагрузки частота медленно снижается;
- conservative - аналогично ondemand, только частота меняется более плавно;
- userspace - использовать частоту заданную пользователем;
- schedutil - изменение частоты на основе планировщика.
Самый выгодный в данном случае режим - это ondemand, частота повышается при необходимости и опускается если она не нужна. Чтобы посмотреть текущую политику управления частотой вам понадобится утилита cpupower, которую можно установить, установив этот пакет:
sudo apt install linux-tools-generic
Затем посмотрите информацию о процессоре:
cpupower frequency-info
Как видите, сейчас для управления частотой используется политика ondemand. Для установки политики используйте команду frequency-set и опцию -g. Например, для performance:
sudo cpupower frequency-set -g performance
Теперь частота гораздо выше, а используемая политика performance. Для того чтобы вручную менять частоту установите политику userspace:
sudo cpupower frequency-set -g userspace
Для установки максимальной частоты используйте опцию -u:
sudo cpupower frequency-set -u 3600Mhz
Для установки минимальной частоты - опцию -d:
sudo cpupower frequency-set -d 2300Mhz
А для изменения текущей частоты процессора - опцию -f:
sudo cpupower frequency-set -f 3500Mhz
Частота всё-равно будет немного колебаться, но эти колебания будут в пределах выбранного диапазона.
Все эти изменения сбрасываются после перезагрузки, поэтому если вы хотите чтобы всё сохранялось, придется создать скрипт с нужными командами и добавить его в автозагрузку.
Если вы любите пользоваться графическим интерфейсом вместо команд, вам понравится утилита cpupower-gui. Она позволяет настроить все необходимые параметры в графическом интерфейсе. Для её установки выполните:
sudo apt install cpupower-gui
Для установки самой последней версии выполните такие команды:
echo 'deb http://download.opensuse.org/repositories/home:/erigas:/cpupower-gui/xUbuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/home:erigas:cpupower-gui.list
curl -fsSL https://download.opensuse.org/repositories/home:erigas:cpupower-gui/xUbuntu_20.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home:erigas:cpupower-gui.gpg > /dev/null
sudo apt update
sudo apt install cpupower-gui
После завершения установки вы сможете найти программу в главном меню. Её окно выглядит вот так:
Утилита позволяет настроить максимальную и минимальную частоту, а также политику для каждого ядра по отдельности или для всех ядер вместе. Просто выберите нужные значения и нажмите кнопку Apply.
В отличие от консольных команд утилита позволяет устанавливать необходимые вам значения профиля и частоты при старте программы. Для этого в программе есть два профиля Balanced и Performance. Первый использует политику Powersave, а второй - Performance. Для того чтобы выбрать профиль по умолчанию надо отредактировать конфигурационный файл /etc/cpupower_gui.conf:
sudo vi /etc/cpupower_gui.conf
Измените значение параметра Profile на нужное и этот профиль будет выбираться по умолчанию при старте программы, останется только добавить её в автозагрузку. Кроме этих двух профилей можно создавать свои в папке /etc/cpupower_gui.d/. В этой папке уже лежит пример профиля, но рассматривать этот процесс подробнее мы не будем.
Выводы
В этой небольшой статье мы рассмотрели как меняется частота процессора Linux, как её настроить и зачем это необходимо.
Отлично! Мне как раз нужно было выставить значение по умолчанию, а то после старта системы приходилось менять вручную.
Главное не перестараться с Performance
а то проц будет греться, а вентиляторы шуметь как Боинг на взлете ....
Инфа мне пригодится для тестирования разрабатываемого сайта.
практически тоже самое управление есть в моём биосе: ~$ cat /proc/cpuinfo | grep "cpu MHz"
cpu MHz : 800.016
cpu MHz : 800.012
cpu MHz : 800.051
cpu MHz : 800.019
cpu MHz : 800.004
cpu MHz : 800.015
cpu MHz : 800.003
cpu MHz : 800.032
Ставишь галочку напротив зелёного листика, у вуаля.
А так да, когда то пользовался на старой материнке. Полезно.
Спасибо за статью! Файрфокс грузит иногда ноут по полной, ноут жрет батарейку как не в себя. Выставил сегодня 400Мгц, было тихо и спокойнее за оставшееся время работыт)
Отличная статья! Спасибо!!!
у меня какое-то приложение разгоняло до максимума 1 из 16 ядер, а остальные 15 на каких-то очень низких частотах, отчего проц грелся и шумел кулером, установил лимит до половины от максимума, и теперь все ядра примерно поровну на четверти от максимальной частоты колеблются, т.е. каким-то образом это ограничение частоты активировало супер-эффективное распараллеливание!