Управление питанием процессора linux
Для компьютеров или серверов энергопотребление операционной системы не имеет особого значения, но когда дело доходит до ноутбуков и других портативных устройств дело меняется кардинальным образом. Мы хотим чтобы наше устройство работало как можно дольше от батареи и потребляло как можно меньше её заряда.
На это очень сильно влияет операционная система, насколько будет загружен процессор, жесткий диск, будут ли включены Bluetooth и WiFi адаптеры. Все это потребляет энергию и все можно настроить. В этой статье мы рассмотрим как настроить энергосбережение Linux и заставить ваш ноутбук работать как можно дольше.
Выводы
В этой статье мы рассмотрели как выполнить разгон процессора bios в linux, до максимальной производительности. Но вы должны знать, что разработчики намеренно уменьшают частоту не из жадности. Это делается потому что при увеличении частоты компьютер может начать работать нестабильно, а во-вторых процессор будет намного быстрее изнашиваться. Все очень сильно зависит даже не от конкретной модели, а именно от определенного изделия. Все процессоры разные, и имеют разный потенциал. Возможности своего устройства вы сможете узнать только экспериментально.
Уже давно стал замечать, что если смотреть видеоролики в интернете на нетбуке с процессором Intel Atom, они немного подтормаживают. Покопавшись в логах понял, что в это самое время загрузка процессора идет на 100%, а состояние процессора почему-то остается в режиме «энергосбережение». То ли всему виной операционная система Linux, то ли сам Atom так себя ведет, непонятно.
Единственным решением, которое я увидел, это самостоятельно управлять режимами работы процессора, благо cpufrequtils – это позволяет делать.
- performance – максимальное быстродействие;
- powersave – режим энергосбережения;
- ondemand – автоматический режим, при котором происходит изменение частоты процессора в зависимости от нагрузки (этот режим стоит по умолчанию);
- conservative – тоже самое как и ondemand, но менее агрессивно.
Возможно, есть где-нибудь в закоулках сайта Intel специальный модуль для ядра Linux, чтобы мой процессор умно переключал эти режимы, но искать мне его лень. Если кто-нибудь это уже делал, то было бы неплохо об этом рассказать в комментариях. Лично я просто вручную переключаю эти режимы консольными командами.
Вот, к примеру, если нужно переключить процессор в максимальное быстродействие: Если в режим энергосбережения, то эта команда:
6. Отключите другие ненужные устройства
Веб-камеры, GSM модемы и другие устройства тоже потребляют энергию и их лучше выключить. Например, чтобы отключить веб-камеру нужно добавить ее драйвер в черный список:
sudo vi /etc/modprobe.d/no-webcam.conf
Вы можете увидеть все активные устройства с помощью такой команды:
Отключите все неиспользуемые устройства, только будьте осторожны и не выключите чего-нибудь лишнего.
Управление частотой в Linux
Для управления частотой в операционной системе Linux используются политики CPU Governor. Они определяют как быстро будет изменятся частота при изменении нагрузки. Существует четыре политики:
- powersave - процессор работает на минимальной частоте;
- performance - процессор работает на максимальной частоте;
- ondemand - динамическое изменение частоты, при появлении нагрузки резко устанавливается самая высокая частота, а при снижении нагрузки частота медленно снижается;
- conservative - аналогично ondemand, только частота меняется более плавно;
- userspace - использовать частоту заданную пользователем;
- schedutil - изменение частоты на основе планировщика.
Самый выгодный в данном случае режим - это ondemand, частота повышается при необходимости и опускается если она не нужна. Чтобы посмотреть текущую политику управления частотой вам понадобится утилита cpupower, которую можно установить, установив этот пакет:
sudo apt install linux-tools-generic
Затем посмотрите информацию о процессоре:
Как видите, сейчас для управления частотой используется политика 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
Для установки самой последней версии выполните такие команды:
После завершения установки вы сможете найти программу в главном меню. Её окно выглядит вот так:
Утилита позволяет настроить максимальную и минимальную частоту, а также политику для каждого ядра по отдельности или для всех ядер вместе. Просто выберите нужные значения и нажмите кнопку Apply.
В отличие от консольных команд утилита позволяет устанавливать необходимые вам значения профиля и частоты при старте программы. Для этого в программе есть два профиля Balanced и Performance. Первый использует политику Powersave, а второй - Performance. Для того чтобы выбрать профиль по умолчанию надо отредактировать конфигурационный файл /etc/cpupower_gui.conf:
sudo vi /etc/cpupower_gui.conf
Измените значение параметра Profile на нужное и этот профиль будет выбираться по умолчанию при старте программы, останется только добавить её в автозагрузку. Кроме этих двух профилей можно создавать свои в папке /etc/cpupower_gui.d/. В этой папке уже лежит пример профиля, но рассматривать этот процесс подробнее мы не будем.
Этап пятый - финальное тестирование
Теперь, когда разгон процессора amd или intel завершен, вам нужно его протестировать. Во первых, проведите еще раз тестирование, которое мы делали перед тем, как перейти к разгону. Вам нужно увидеть как хорошо процессор справляется со своей задачей при максимальной нагрузке и не нужно ли улучшить охлаждение. Посмотреть текущую частоту, до которой вам удалось разогнать процессор можно с помощью утилиты hwinfo:
hwinfo --cpu | grep Clock
Для процессоров Intel вы можете применять программу от производителя - i7z, которая позволяет просмотреть текущую частоту и температуру.
Этот пакет есть в официальных репозиториях. Также понаблюдайте за работой компьютера в течение одного двух-дней. Присмотрите как меняется температура и не наблюдается ли лагов в работе компьютера. Только после всего этого вы можете наслаждаться максимально раскрытым потенциалом вашей машины.
1. Используйте встроенные возможности
Вам не всегда нужна максимальная мощность и производительность. Это нужно в играх или при использовании тяжелых программ, но ненужно при просмотре фильмов или серфинге в интернете, а тем более не нужно, когда вас нет рядом с компьютером. В настройках Ubuntu есть несколько опций управления питанием, которые помогут улучшить энергосбережение.
Откройте Параметры системы, затем пункт Электропитание:
Здесь вы можете установить через сколько времени простоя нужно перевести компьютер в режим ожидания, через сколько времени бездействия тушить экран, а также действия при закрытии крышки ноутбука.
Энергосбережение в Linux
Этап четвертый - повышение напряжения
Если ваш компьютер перестал включаться после повышения частоты до определенного предела или вы получаете Kernel Panic, то пришло время повысить напряжение. Увеличивайте напряжение на 0,1 или на 0,05 пока компьютер не будет нормально загружаться и стабильно работать. Вам нужно быть очень аккуратными с напряжением Vcore. Если вы примените слишком высокое напряжение, то можете сжечь свой процессор. Но делать это обязательно, если вы хотите разогнать компьютер, иначе вы никак не сможете понять как процессор реагирует на то или иное напряжение.
Дальше вы снова можете продолжать повышение множителя частоты. Но рано или поздно вы достигните момента, когда не сможете получить желаемую частоту даже после увеличения напряжения. Тогда верните множитель на предыдущее значение и уменьшите напряжение до предыдущего пункта. Это и будет ваш разгон процессора Linux.
7. Отключите дискретную видеокарту
Если в вашем ноутбуке есть возможность переключения видеокарт с интегрированной в процессор на более мощную дискретную, то вторую желательно выключить. Это очень сильно уменьшит потребление энергии Linux.
Обычно для этого можно использовать модуль vgaswitcheroo. Для отключения второй GPU выполните:
sudo -i
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
4. Яркость экрана
Очевидно, что чем ярче работает экран, тем больше энергии он потребляет. Самый надежный и самый эффективный способ снизить энергопотребление Linux - это снизить яркость.
Нам не всегда нужна максимальная яркость, просто сделайте её такой чтобы вам было удобно. Для изменения яркости можно использовать горячие клавиши на клавиатуре или же настройки системы.
В настройках системы откройте пункт Яркость и блокировка. Затем отрегулируйте ползунок настройки яркости, также можно установить флажок тусклый экран для экономии энергии.
Также разработчики из команды развития ядра Ubuntu заметили, что жидкокристаллические экраны потребляют меньше энергии со светлыми обоями. На отрисовку темных цветов уходит на 1-2% большое тока.
Если яркость не меняется, попробуйте добавить к параметрам ядра в Grub такую строчку - acpi_backlight=vendor. После обновления конфигурации и перезагрузки все должно заработать.
Также вы можете менять яркость прямо через терминал, для этого используйте утилиту xbacklight:
sudo apt install xbacklight
xbacklight -set 15
9. Не используйте Flash Player
Программа для потокового воспроизведения видео и другого флеш контента - Flash Player потребляет очень много энергии. Поэтому отказ от его использования еще больше продлит время работы Linux на вашей батареи.
Используйте браузер в котором можно включить флеш по требованию. Например, в Firefox можно настроить включение Flash только когда это очень нужно, а для Chrome есть плагин PowerSaver, который позволяет сделать тоже самое.
Чтобы смотреть фильмы и видео используйте аппаратное ускорение. Это передает обработку видео на GPU, тем самым уменьшая нагрузку на процессор и расход энергии. Эту технологию поддерживают VLC и MPV. Также нужно включить аппаратное ускорение в браузерах.
Комментарии
И че, видать результат?! А как это понять?! Если включен режим энергосбережения тогда CPU почему до 100%? Мне кажется это все такое самовнушение. Прошу вас ответить увидели ли вы положительный результат от вкл выкл данного режима?!
Конечно есть. Производительность, как и шум вентилятора стали максимальны ;)
Посмотреть текущую работу процессора можно командой cpufreq-info
Балин, тоже счастливый обладатель подобного недоноута, в настоящее время использую его как роутер :-) Статья полезная попробуем применить на практике.
Чтобы получать уведомления о всех исторических IT-событиях -
- bash: lsb_release: команда не найдена0
- Как создать ISO образ диска в Linux или как виртуалить в Ubuntu11
- Как слушать интернет-радио в Ubuntu?2
- Как установить Sublime Text 2 в Ubuntu быстро и просто?0
- Русификация Hotot в Linux2
- Angry IP Scanner - сетевой сканер для Linux и Windows0
- Как установить Oracle Java в Ubuntu0
- Удобный RDP-клиент для Linux3
- Как конвертировать видео формата OGV в AVI или MP4?4
- ClipIt - буфер обмена для Ubuntu или замена Pastie3
Если Вы используете материал моего блога, то будьте добры поставьте ссылку.
11. Используйте TLP
TLP - это очень популярный инструмент, который улучшает энергосбережение Linux путем настройки различных параметров ядра и потребляемой мощности для различных устройств компьютера.
Вы можете настроить такие параметры:
- Разим ноутбука и таймаут перед сбросом данных на жесткий диск.
- Изменение частоты процессора.
- Распределение питания для ядер в многоядерных системах.
- Управление питанием жесткого диска.
- Управление питанием PCI устройств.
- Режим энергосбережения для Wifi.
- Отключение дисковода.
- Режим экономии энергии звуковой карты.
Утилита по умолчанию содержит настройки, которые сильно повысят автономность ноутбука и подойдут для большинства пользователей. Для установки утилиты используйте команду:
sudo apt install tlp
Затем добавьте ее в автозагрузку:
sudo systemctl enable tlp
Если вы хотите немного настроить tlp, можно воспользоваться для этого графическим интерфейсом TLPUI. Он написан на Python3, поэтому для его установки достаточно склонировать репозиторий:
Затем для запуска утилиты перейдите в папку TLPUI и выполните команду в терминале:
cd TLPUI
python3 -m tlpui
Здесь AC означает питание от сети, а BAT - питание от батареи. Далее все параметры настраиваются для этих двух режимов работы.
Как делаю это я?
Из этих двух команд я создал 2 скрипта и «повешал» на сочетание клавиш Ctrl+F8 и Ctrl+F9. Теперь в зависимости от потребностей я могу легко менять частоту процессора.
P.S. Для того, чтобы при переключении не выскакивала консоль (терминал) необходимо вместо sudo использовать gksudo. Это графический интерфейс для ввода пароля.
8. Закройте ненужные приложения
Чем больше программ вы используете, тем больше энергии потребляет процессор, и больше активность оперативной памяти, а также жесткого диска. У нас всегда открыто множество программ, например, VLC, Chrome, Terminal, Rhythmbox и так далее. Но мы используем далеко не все из них.
Посмотрите какие приложения открыты на боковой панели и завершите те, которые вам не нужны. Чтобы закрыть программу достаточно щелкнуть по ее значку правой кнопкой и нажать закрыть.
5. Отключите внешние USB устройства
Вы можете подключать различные USB устройства к своему ноутбуку, например флешки, веб-камеры, телефоны и т д. Но все они потребляют энергию. Отключите устройства, которые сейчас не нужны, также безопасно извлеките флешки, MTP камеры и внешние диски.
3. Отключите Wifi
Если вы пользуетесь беспроводной технологией Wifi, то должны знать, что она тоже потребляет много энергии, поэтому ее лучше заменить на более энергоэффективный проводной интернет. Даже в фоновом режиме, когда вы не подключены ни какой сети ваша wifi карта будет сканировать эфир для поиска доступных сетей.
Отключить wifi тоже очень просто. Для этого достаточно нажать на индикатор управления сетями и выбрать пункт Сети Wifi, а затем Выключить:
Чтобы автоматически отключать WiFi при старте системы добавьте в автозагрузку команду:
sudo rfkill block wifi
Выводы
Мы рассмотрели достаточно способов, с помощью которых вы можете улучшить энергоэффективность Ubuntu 16.04 и продлить время работы своего ноутбука без сети. Если вы знаете другие методы, обязательно поделитесь ими в комментариях!
Если вы уже пытались настраивать частоту Linux, то, наверное уже заметили, что частота процессора сама меняется в зависимости от нагрузки на систему. Операционная система устанавливает лимит минимальной и максимальной частоты, и когда нагрузки нет частота автоматически опускается до минимальной, а при появлении нагрузки подымается назад.
Конечно, в интерфейсе BIOS можно зафиксировать частоту на одном уровне, но в этом нет смысла. С точки зрения баланса производительности и энергопотребления лучше оставить всё как есть. Но правила изменения частоты можно настроить. Для этого используются политики CPU Governor. В этой статье мы рассмотрим как узнать частоту процессора Linux, а также как настроить её изменение.
Этап первый - проверка системы
Перед тем как переходить к настройке BIOS и реальному разгону процессора нужно убедиться, что ваша система имеет хорошее охлаждение и работает достаточно стабильно. Для этого нам нужно протестировать температуру процессора при максимальной нагрузке. В Linux используется набор программ lm_sensors для просмотра текущей температуры.
Сначала нужно установить этот пакет утилит, если он еще не установлен в вашей системе. В Ubuntu для этого используйте команду:
sudo apt install lm_sensors
Затем используйте утилиту sensors для просмотра текущей температуры оборудования. Обычно, кроме процессора, отображается температура видеокарты, оперативной памяти и так далее. Но в нашем случае отображается только температура для обоих ядер:
Как видите, тут кроме текущей температуры, показана максимальная температура и критическая. Но сейчас мы смотрим температуру в обычном режиме, теперь нужно проверить ее при максимальной нагрузке. Для этого будем использовать утилиту stress. Ее можно установить в Ubuntu с помощью команды:
sudo apt install stress
Затем создаем нагрузку на процессор, например, в 16 потоков:
И снова смотрим температуру:
Только теперь вы можете оценить насколько хорошо справляется ваше охлаждение и действительно ли есть возможность разгонять процессор. Если система уже достигла максимальной температуры и приближается к критической, то понятно, что перед разгоном нужно позаботиться про охлаждение. В противном случае вы можете переходить к дальнейшем действиям.
2. Отключите Bluetooth
Модуль Bluetooth потребляет энергию и очень много, надеюсь вы помните насколько быстро разряжались батареи телефона, когда вы забывали выключить bluetooth. А здесь он включен постоянно и постоянно расходует энергию даже если он не нужен в данный момент.
Отключить Bluetooth можно отключить с помощью значка на панели, просто переключите ползунок в значение Выкл или нажмите Отключить Bluetooth в более старых версиях.
Чтобы полностью отключить Bluetooth, удалите его службу из автозагрузки системы, а также добавьте в автозагрузку команду:
sudo rfkill block bluetooth
Также, если вы планируете полностью отключить bluetooth желательно добавить его драйвера в черный список:
sudo vi /etc/modprobe.d/no-bluetooth.conf
blacklist btusb
blacklist bluetooth
Выводы
В этой небольшой статье мы рассмотрели как меняется частота процессора Linux, как её настроить и зачем это необходимо.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
В статье описываются используемые в Linux методы получения информации об используемом процессоре и его состоянии (температура, частота, задушенность), управление частотой процессора, загрузка микрокода, модули msr и cpuid, привязка процесса и обработчика прерывания к конкретному процессору (ядру), особенности работы NUMA.
Начальную информацию о процессоре можно получить с помощью команды dmesg:
Далее необходимо заглянуть в /proc/cpuinfo:
Более подробную (400 строк) информацию можно получить с помощью команды x86info (ключи: -a -v).
- type (всегда 0?)
- family (15 - NetBirst, 6 - Core)
- model
- stepping
А также через DMI интерфейс: "dmidecode -t 4" (собственно процессор) и "dmidecode -t 7" (кеш).
- type - Data, Instruction, Unified
- level - L1, L2, L3
- size
- ways_of_associativity
- shared_cpu_map - битовая карта ЦП, которые разделяют данный кеш
- coherency_line_size - ?
- number_of_sets - ?
- physical_line_partition - ?
- physical_package_id - номер чипа
- core_id - номер ядра в чипе
- core_siblings - битовая карта соседних по чипу ЦП
- thread_siblings - битовая карта соседних по SMT (HT) ЦП
Модуль acpi-cpufreq конфликтует со встроенной в ядро обработкой Intel P-state и не загружается, так что /proc/acpi в CentOS 7 пуст.
Информация о возможностях по управлению питанием и throttling от ACPI:
И "lshal -t -l" (устарело).
Предельно допустимая температура процессора (материнской платы, системы):
Утилита lscpu выдаёт информацию об архитектуре, битности, порядке байт, количестве ядер, количестве потоков на ядро, сокетов, узлов NUMA, модель и ревизия (официальная частота), текущая частота, виртуализация, размеры кешей, распределение ЦП по узлам NUMA; ключ "-e" вызывает выдачу в виде таблицы
- G0 - всё работает
- G1 - ожидание или гибернация
- G2 - требуется загрузка, дежурное питание подаётся
- G3 - нет даже дежурного питания, есть батарейки для RTC и RAID
- S0 - всё работает
- S1 - выключен монитор, ЦП остановлен
- S2 - выключен кеш ЦП
- S3 - Standby, Suspend-to-RAM
- S4 - Hibernate, Suspend-to-disk
- S5 - G2
- C0 (ACPI C0) - всё работает
- C1 (ACPI C1) - ядро остановлено
- C1E - все ядра в C1 или ниже, минимальная частота и напряжение
- C3 (ACPI C2 для Xeon E5-2600) - ядро остановлено, L1 сброшен, частота 0; все ядра в C3 или ниже, L3 недоступен, память в самообновлении
- C6 (ACPI C3 для Xeon E5-2600 или ACPI C2 для Xeon Scalable) - питание ядра выключено; все ядра в C6
- P0 - самая большая частота (может быть выше номинальной), Turbo Limit
- P1 - базовая частота
- .
- Pn - самая маленькая частота
- LFM - Low Frequency Mode (борьба с перегревом)
- 0 Гц (HLT, Idle)
- D0 - всё работает на максимальной скорости
- D1 - устройство экономит энергию
- D2 - ещё экономней
- D3 hot (ACPI D2) - питание подаётся, но устройство не работает
- D3 cold (ACPI D3)- питание не подаётся
- M0 - всё работает на максимальной скорости
- M1 - пониженное потребление, rank выключен (?)
- M2 - самообновление
Модуль acpi-cpufreq конфликтует со встроенной в ядро обработкой Intel P-state и не загружается,
Получение информации о текущей температуре процессора (материнской платы):
Получение информации о питании процессора (текущее состояние, список возможных состояний, граф переходов и число переходов по каждой ветви; C1 - состояние после команды HLT; C1E - улучшенный вариант, сбрасывает множитель частоты процессора до минимально возможного значения (2.8GHz для P4 660)):
Управление частотой процессора позволяет регулировать энергопотребление компьютера. Подсистема управления частотой процессора в ядре Linux позволяет подключать управляющие модули для различных архитектур и извещать подсистемы ядра, которые зависят от частоты процессора, при изменении частоты или политики управления частотой. Некоторые системы могут изменять частоту самостоятельно без вмешательства программы. Для таких систем устанавливается политика изменения частоты, а также верхний и нижний пределы частоты. Для других систем требуется вмешательство программы при каждом изменении частоты. Для них устанавливается специальный управляющий модуль - регулятор (гувернёр, governor) и параметры для него.
- affected_cpus
- cpuinfo_cur_freq (текущая частота процессора, в КГц)
- cpuinfo_max_freq (максимально возможная частота процессора, в КГц)
- cpuinfo_min_freq (минимально возможная частота процессора, в КГц)
- scaling_available_frequencies (перечень допустимых частот процессора, в КГц)
- scaling_available_governors (перечень допустимых регуляторов)
- scaling_cur_freq ()
- scaling_driver (используемый архитектурнозависимый модуль управления частотой)
- scaling_governor (используемый регулятор; для смены регулятора записать сюда его имя)
- scaling_max_freq (максимальная частота процессора, которую будет устанавливать регулятор или обработчик политики)
- scaling_min_freq (минимальная частота процессора, которую будет устанавливать регулятор или обработчик политики)
- scaling_setspeed (для установки частоты записать сюда значение, в КГц)
- userspace (модуль cpufreq_userspace, частота устанавливается прикладной программой или просто командой echo)
- powersave (модуль cpufreq_powersave, устанавливает наименьшую разрешённую частоту)
- performance (модуль cpufreq_performance, устанавливает наибольшую разрешённую частоту)
- ondemand (модуль cpufreq_ondemand, частота процессора устанавливается в зависимости от нагрузки), управляющие параметры в подкаталоге ondemand:
- ignore_nice_load (0; игнорировать нагрузку, создаваемую низкоприоритетными процессами)
- sampling_rate (1000000 микросекунд; позволяет установить частоту опроса нагрузки)
- sampling_rate_max (500000000; максимально возможное значение sampling_rate)
- sampling_rate_min (500000; минимально возможное значение sampling_rate)
- up_threshold (80%; при какой нагрузке в интервале между опросами увеличивать частоту процессора)
- sampling_down_factor (1; сколько интервалов пониженной нагрузки выжидать перед понижением частоты процессора)
- freq_step (5% от максимально возможной частоты процессора; шаг изменения частоты процессора; значение 100 даёт поведение эквивалентное поведению регулятора ondemand)
- down_threshold (20%; при какой нагрузке в интервале между опросами уменьшать частоту процессора)
- time_in_state (для каждой возможной частоты процессора выводится общее время, когда процессор работал на этой частоте, единица - 10 мс)
- total_trans (количество изменений частоты процессора)
- trans_table (матрица числа переходов от одной частоты процессора к другой; требуется CONFIG_CPU_FREQ_STAT_DETAILS при генерации ядра)
Устанавливать регуляторы и частоты можно записывая желаемые значения в /sys/devices/system/cpu/cpu0/cpufreq/ (требуются прва суперпользователя) или используя аплет cpufreq-selector из пакета gnome-applets (позволяет устанавливать тип регулятора и частоту для регулятора userspace; права доступа устанавливаются обычным механизмом consolehelper и PAM).
- --cpu номер-процессора
- --min минимальная-частота-для-регулятора
- --max максимальная-частота-для-регулятора
- --governor регулятор
- --freq частота (только для регулятора userspace)
- USR1 - установить максимальную скорость
- USR2 - установить минимальную скорость
gkrellm имеет встраиваемый модуль gkrellm-freq, позволяющий узнать текущее значение текущее значение частоты процессора.
- /sys/devices/system/cpu/intel_pstate/max_perf_pct
- /sys/devices/system/cpu/intel_pstate/min_perf_pct
- /sys/devices/system/cpu/intel_pstate/no_turbo
- /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor (из /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_governors - performance и powersave)
Утилита "cpupower frequency-info" выдаёт информацию о ЦП, драйвере управления частотой, частоты, гувернёрам, турбо-режимам. "cpupower monitor -m Mperf" - текущая частота каждого ядра.
Утилита x86_energy_perf_policy позволяет задать предпочтительный режим работы ЦП (performance, normal, powersave, смещение от 0 (performance) до 15 (powersave)).
Запрет понижать частоту процессора достигается использованием параметров ядра processor.max_cstate=1, intel_idle.max_cstate=0 [и idle=poll] (увеличивается потребление электричества).
TM1 (Thermal Monitoring 1) - понижение нагрева процессора вставлением пустых циклов. Вызывает проблемы у других частей компьютера.
TM2 - понижение напряжения и частоты.
Получение информации о текущем состоянии
Enhanced Intel SpeedStep Technology (EIST, Pentium M, 2005) позволяет ОС напрямую управлять P-состояниями ЦП.
- ЦП с поддержкой Turbo Boost
- включение Turbo Boost в BIOS
- включение EIST (Enable Enhanced Intel SpeedStep Technology) в BIOS
- адекватное охлаждение
- достаточно новое ядро (RHEL 4.7, RHEL 5.3)
- modprobe acpi-cpufreq
- echo performance > /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor
- потребляемый ток и мощность при текущей загрузке не превышают определённых изготовителем
acpi-cpufreq для обозначения турборежима использует фиктивную частоту (3501000 вместо 3500000), (/sys/devices/system/cpu/cpuX/cpufreq).
Универсальная ручка управления включением режимов Turbo Boost и Turbo-Core - /sys/devices/system/cpu/cpufreq/boost (/sys/devices/system/cpu/intel_pstate/no_turbo?). Не поддерживается модулем intel_pstate.
Утилита turbostat позволяет собрать статистику при выполнении указанной программы (возможности процессора по частоте при различном количестве активных ядер, частота, температура, мощность ЦП и ОП, режим).
Hardware-Controlled Performance States (HWP, Skylake - 2015, Cascade Lake - 2019, Intel Speed Select, ISS) - указания ОС воспринимаются лишь как рекомендации (hints), напряжением и частотой управляет Power Control Unit (PCU). SST-PP (performance profile, configuration level) v1 определяет базовую частоту в зависимости от TDP, количества активных ядер (или заданных в BIOS Setup), SSE и Tjmax (?). SST-PP v2 позволяет менять профиль динамически (число ядер может меняться!). SST-CP позволяет назначать приоритеты ядрам (Class of Service) от CLOS0 до CLOS3, типы приоритетов - Ordered (CLOS0 - наивысший, ядру с данным приоритетом частота увеличивается в первую очередь) и Proportional (частота увеличивается в соответствии с весом CLOSx). SST-BF позволяет менять базовую частоту (P1 расслаивается между ядрами на P1 Hi и P1 Lo). SST-TF позволяет задавать турбо частоту выделенным ядрам (High Priority, HP). Для настройки режимов предоставляется утилита intel-speed-select.
Утилита microcode_ctl загружает микрокод (исправленная прошивка) для процессоров Intel (требуется поддержка модуля ядра microcode, при загрузке создаётся символьное устройство /dev/cpu/microcode, 10:184). Собственно микрокод лежит в файле /etc/firmware/microcode.dat. Имеет ли смысл его обновлять при каждой загрузке?
При загрузке модуля msr создаётся символьное устройство (/dev/cpu/0/msr, 202:0). Используется centrino-decode (декодирует информацию о напряжении питания процессора и соотношении частот процессора и системной шины).
- ошибки памяти (ECC)
- перегрев
- ошибки системной шины
- ошибки кеша ЦП
Получить отчет (/etc/mcelog/mcelog.conf): mcelog --client.
При загрузке модуля cpuid создаётся символьное устройство (/dev/cpu/0/cpuid, 203:0). Используется в правилах udev. Зачем это?
- --pid [маска-процессоров] номер-процесса
- --cpu-list список-процессоров (через запятую, интервалы через '-')
- маска-процессоров -- запускаемая-команда аргументы
Привязка обработки прерывания к процессору: узнать номер прерывания (lspci -v), записать битовую маску допустимых процессоров в /proc/irq/номер-прерывания/smp_affinity.
CC-NUMA (Cache Coherent Non Uniform Memory Access) - система с неоднородным (в т.ч. по длительности; в 1.5 раза для Nehalem и Barcelona) доступом процессоров к узлам общей памяти с обеспечением когерентности кешей процессоров.
Ядро Linux 2.6 имеет поддержку CC-NUMA в виде политики выделения памяти относительно узлов памяти (mempolicy.h: set_mempolicy(2), get_mempolicy(2), mbind(2)). По умолчанию, используется системная политика выделения памяти В качестве системной политики при загрузке используется политика поочерёдного выделения из узлов памяти с достаточным количеством свободной памяти, а при работе - политика локального выделения. Процесс может запросить использование другой политики для всех последующих своих запросов (и запросов своих наследников) или отдельную политику для запросов в отдельной области виртуальной памяти (только анонимные области, не наследуется). Отдельные политики могут быть установлены для разделяемых объектов. Политика состоит из режима работы (MPOL_DEFAULT - использовать политику исходя из области; MPOL_BIND - выделять память из ближайшего узла только из указанного списка узлов; MPOL_PREFERRED - выделять память из указанного узла, при недостатке памяти из ближайшего узла, при пустом списке узлов выбирается локальный узел (на котором запустилась первая нить); MPOL_INTERLEAVED - поочерёдное выделение из списка узлов). При свопировании страницы информация об узле страницы теряется. Для области памяти (определяется начальным адресом и длиной) можно задать политику выделения (VMA policy); задаются модификаторы режима (MPOL_MF_STRICT - все страницы д.б. на заданном узле; MPOL_MF_MOVE - попытаться переместить неправильно распределённые эксклюзивные страницы; MPOL_MF_MOVEALL - попытаться переместить все неправильно распределённые страницы; MPOL_F_STATIC_NODES - не перемещать страницы после смены списка узлов; MPOL_F_RELATIVE_NODES) и список допустимых узлов.
- numa=off (считать всю память одним узлом)
- numa=noacpi (не учитывать таблицу SRAT)
- numa=fake=параметры (имитировать требуемую конфигурацию NUMA, см. fake-numa-for-cpusets)
- numa=hotadd=процент (что такое hotadd память?)
- cpumap - битовая карта ЦП узла
- distance - список (по числу узлов) относительной "стоимости" обращения ЦП данного узла к памяти каждого узла
- meminfo - разнообразная статистика наличия и использования памяти
- numastat - количество попаданий и промахов запросов к памяти в свой узел
- cpuX/ - ссылка на описание каждого процессора узла
- cpus - список номеров ЦП и интервалов
- mems - список узлов памяти и интервалов
- memory_migrate - перемещать страницы памяти в разрешённые узлы при изменении настроек и перемещении процессов
- cpu_exclusive - список ЦП является исключительным
- mem_exclusive - список узлов памяти является исключительным
- mem_hardwall - ядро не будет размещать здесь общие данные (с 2.6.26, ранее функциональность включалась при mem_exclusive=1)
- memory_pressure - уровень обмена страниц внутри набора (paging pressure rate), может учитываться пакетным планировщиком, выражается в запросах в секунду за последние 10 секунд на 1000
- memory_pressure_enabled - включает вычисление memory_pressure, представлен только для корневого набора
- memory_spread_page - разрешить размещать буфера файловой системы (page cache) для процессов из набора по всем допустимым узлам вместо узла, на котором процесс выполняется
- memory_spread_slab - разрешить размещать буфера slab (каталоги и inode) для процессов из набора по всем допустимым узлам вместо узла, на котором процесс выполняется
- notify_on_release - запуск программы /sbin/cpuset_release_agent при завершении последнего процесса набора
- sched_load_balance - планировщик будет использовать алгоритм балансировки нагрузки; включён по умолчанию, все ЦП должны быть в едином домене балансировки у планировщика заданий (с 2.6.24)
- sched_relax_domain_level - интервал поиска перегруженного ЦП для миграции процесса на себя, если наша очередь задач пуста (-1: использовать системные установки, 0: не искать, 1: внутри HT, 2: ядра внутри пакета, 3: внутри узла, 4 - ?, 5 - по всей системе )(с 2.6.26, но в RHEL 5.3 есть)
- tasks - список процессов, привязанных к набору (по одному на строке), сюда надо вписать номер процесса (по одному на строке), который нужно привязать к данному набору; для удаления процесса впишите его номер в верхний набор
После переноса задачи tasks включающего набора вся информация меняется (/dev/cpuset/. /tasks, /proc/. /cpuset), но планировщик продолжает придерживать процесс на старом наборе ЦП (RHEL 5.4) .
/proc/номер-процесса/status содержит новые строки о допустимых ЦП и узлах памяти.
/proc/номер-процесса/cpuset содержит имя набора cpuset.
/proc/номер-процесса/numa_maps рассказывает о каждом сегменте памяти: начальный адрес (конечный в maps), политику выделения памяти, тип (anon, heap, stack, file=имя), сколько страниц выделено из каждого узла NUMA-памяти.
Пакеты numactl и numactrl-devel содержат утилиты и библиотеки более высокого уровня, чем системные вызовы. Утилита numastat выдаёт для каждого узла памяти статистику о использовании её для "своих" и "чужих" ЦП. Утилита memhog предназначена для тестирования производительности различных режимов использования памяти. Утилита migratepages плозволяет переместить содержимое страниц памяти с одного узла на другой. Утилита numademo позволяет протестировать производительность сочетаний свой/чужой для различных узлов памяти; демонстрирует расхождение в пропускной способности памяти в 1.5 раза для систем с использованием QPI/HT при правильном и неправильном распределении процессов по ЦП и узлам памяти (перепутаны Min и Max?):
Всем нам хотелось, чтобы наш компьютер работал как можно быстрее и в то же время мы не хотим тратить деньги на покупку новых компонентов. Производители заложили определенный запас для всех комплектующих компьютера, в том числе для процессора. Это означает, что ваш процессор работает не с максимальной мощностью, с которой он мог бы работать.
Именно этим пользуются во время разгона процессора, когда пользователи получают намного большую частоту, чем установленная по умолчанию. В этой статье мы рассмотрим как выполняется разгон процессора компьютера, а также поговорим про особенности этой задачи в операционной системе Linux.
12. Отслеживание энергопотребления
Нужно не только уметь улучшить энергосбережение Linux но и отслеживать потребление энергии, чтобы вовремя понять что именно расходует батарею. Для этих целей можно использовать утилиту powertop. Установите ее с помощью команды:
sudo apt install powertop
Затем создайте отчет за нужное вам время, например, за 60 секунд:
sudo powertop --time=60 --html=power_report.html
Дальше вы можете открыть этот файл в вашем браузере и посмотреть что еще нужно оптимизировать.
Как узнать частоту процессора Linux
Узнать текущую частоту процессора можно вместе с другой информацией о нём с помощью утилиты lscpu:
Здесь же выводится максимальная и минимальная частота. Текущую частоту для каждого ядра по отдельности вы можете посмотреть в файле /proc/cpuinfo:
Так можно вывести информацию обо всех ядрах на одном экране:
cat /proc/cpuinfo | grep "cpu MHz"
Утилита lshw тоже выводит текущую и максимальную частоту в секции cpu:
Ну и hwinfo выводит нужную нам информацию. Правда, прежде надо её установить:
sudo apt install hwinfo
hwinfo --short --cpu
Если вы хотите отслеживать как меняется частота со временем используйте hwinfo в сочетании с утилитой watch:
watch hwinfo --short --cpu
Теперь вы знаете как посмотреть частоту процессора Linux, перейдём к управлению.
Этап второй - настройка BIOS
Этот шаг отвечает непосредственно за разгон процессора. Перезагрузите ваш компьютер и войдите в BIOS. Настройка разгона отличается от версии BIOS, процессора и производителя. Мы рассмотрим разгон процессора AMD Athlon в BIOS от ASUS.
Во множестве материнских плат, в том числе и в этой есть возможность автоматического разгона процессора на определенный, безопасный процент. Так вы можете дать материнской плате сделать большинство работы за себя. Мой процессор работает по умолчанию с частотой 3.0 ГГц, На вкладке "Andvanced" есть раздел "Config JumperFree" здесь вы можете настроить вручную частоту и напряжение, а также задать профиль разгона.
Например, для пункта "AI Overclock Tuner" задайте значение "Overclock profile", если хотите использовать один из настроенных по умолчанию профилей. Затем для параметра Overclock Options нужно выбрать профиль разгона. Для у этой материнской платы доступен максимальный разгона на 10%:
Таким образом, для процессора на 3.0 ГГц мы получим частоту 3.3 ГГц.
Если же вы хотите настраивать напряжение вручную, вам придется обратиться к документации процессора. Установите значение Overclock profile в manual, изменять множители частоты. Для применения изменений нужно перезагрузить компьютер. В материнских платах в UEFI все может немного отличаться, но суть будет одна и та же, там будет пункт, позволяющий разогнать процессор.
Этап третий - повышение множителя частоты
Допустим, вы уже включили нужный профиль разгона или настроили вручную множитель для напряжения или частоты. Но нельзя сразу выставлять слишком высокий параметр, нужно сначала посмотреть как будет работать система с тем, что имеется. Перезагрузите компьютер и загрузитесь в операционную систему.
В Linux есть такая неприятная для разгона особенность, как cpufreq, эта технология меняет частоту в зависимости от нагрузки на систему поэтому вы не сможете получить максимальную частоту пока установлен профиль энергосбережения. Прежде всего, нам нужно установить профиль максимальной производительности - perfomance. Сначала устанавливает утилиту cpufrequtils если она еще не установлена:
sudo apt install cpufrequtils
Затем, с помощью конфигурационного файла, меняем профиль регулировки частоты по умолчанию на максимальную производительность. Это можно сделать с помощью команды:
sudo cpupower frequency-set -g performance
sudo vi /usr/lib/systemd/system/cpupower.service
ExecStart=/usr/bin/cpupower -c all frequency-set -g performance
Дальше вы можете проверить результат своих действий с помощью команды:
Вы должны увидеть, что активный профиль - perfomance. Посмотреть текущую частоту вы можете с помощью утилиты hwinfo:
hwinfo --cpu | grep Clock
Дальше нам нужно повторить тест температуры процессора при максимальной нагрузке. Как это делается смотрите выше. Если все хорошо и система стабильно работает на протяжении 5 минут, вы можете попытаться еще увеличить множитель.
Возможно, вы захотите контролировать изменение частоты во время теста stress, тогда можно использовать утилиту watch с интервалом в полсекунды:
watch -n 0,5 "hwinfo --cpu | grep Clock"
Чтобы обнаружить придел, увеличивайте множитель на единицу и повторяйте тестирование. Повторяйте такой процесс пока ваш компьютер либо совсем не загрузится, либо температура будет превышать максимальную. Но разгон процессора Linux еще незавершен.
Разгон процессора в Linux
Перед тем, как приступить к разгону процессора, вам нужно узнать несколько очень важных моментов. Первый из них - это тепло. Естественно, что чем большее напряжение вы будете подавать на тот или иной компонент, тем больше тепла он будет производить. А чем большую частоту вы хотите получить, тем большее напряжение придется подать, но делать это нужно в рамках здравого смысла.
Есть предел напряжения, которое может выдержать ваш процессор, перед тем, как появится угроза его разрушения. При слишком большом напряжении компьютер может вовсе не загрузиться. Это напряжение и есть пределом разгона. Здесь подходит видоизмененная пословица: "Все чипы выпускаются равными, но некоторые большее равны чем другие". Каждый процессор уникален, вам может повести и именно ваш компонент будет поддерживать большую частоту работы. Потенциал процессора может варьироваться от 0,2 ГГц до 1 ГГц.
Допустим, что у вас есть хороший куллер для охлаждения вашего процессора, процессор поддерживает разгон, а к таким относятся серия K и X от Intel и все процессоры от AMD, а также вы знаете как попасть в меню настройки BIOS.
10. Используйте легкое окружение рабочего стола
Такие окружения рабочего стола как KDE, Cinnamon, Unity, Gnome потребляют гораздо большое энергии чем легкие окружения, поскольку тут есть множество фоновых служб и приложений, которые запущены и выполняются по умолчанию. Поэтому лучше выбрать более легкое окружение, например LXDE, LXQt или XFCE.
Читайте также: