Установка на Высокую Производительность

Вопрос или проблема

Когда у меня была Windows 8.1, существовала опция питания “Максимальная производительность”, которая позволяла увеличить производительность за счет энергопотребления.

Есть ли способ установить опцию питания “Максимальная производительность” на Linux?

Чтобы просмотреть доступные режимы управления частотой, используйте эту команду:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 
performance powersave

Если у вас есть более одного режима, вы можете проверить, какой из них сейчас используется, с помощью этой команды:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave

Чтобы изменить режим вашего процессора на производительность, используйте:

$ echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
performance

Вы заметите, что использование процессора (CPU%) упадет примерно на 5%, но также увидите, что скорость увеличится с примерно 1000 МГц до 3000 МГц, а температура вырастет примерно на 10 градусов в зависимости от вашего процессора:

CPU Performance mode.gif


Я заметил, что даже когда установлен режим powersave (как я всегда использую), при первом загрузке Ubuntu он работает в режиме производительности в течение 90 секунд, прежде чем в конечном итоге переключиться на режим powersave.

Тем не менее, после ручной установки режима управления на режим производительности с использованием соответствующей команды выше. Он оставался в режиме производительности в течение 10 минут, что подтверждено с помощью соответствующей команды выше и дополнительно подтверждено отображением conky выше.


Я оставил режим управления установленным на performance в течение 30 минут, и он работал прекрасно. Это может заинтересовать некоторых читателей, как выглядит дисплей conky при переключении с режима производительности обратно на режим по умолчанию powersave:

CPU powersave.gif

Использование процессора (CPU%) увеличилось на 5%, но частота процессора упала на 1500 МГц, а температура снизилась примерно на 10 градусов. В общем, я думаю, что режим powersave является лучшим для большинства конфигураций.


Код Conky

12 апреля 2019 года – Кто-то запросил код conky, поэтому я включаю сегодняшнюю версию. Скорость обновления установлена на 2,5 секунды, в то время как в .gifs это, вероятно, 1 секунда или 0,75 секунды. Я немного отредактировал код здесь, потому что мой настроен для трех мониторов, а у большинства людей будет один монитор.

Секция хранения немного запутанная. Вам нужно изменить имена устройств на свои, и есть if тесты, если раздел не смонтирован, показываются системная информация, такая как кэш и буферы.

override_utf8_locale yes
use_xft yes
xftfont ubuntu:size=10.5
xftalpha 0.5
uppercase no
no_buffers yes              # Вычесть кэшированную и буферизированную РАМ из использования памяти.
short_units yes             # Используйте "G" вместо "GiB"

text_buffer_size 2048
update_interval 2.5          # измените на .001 для стресстеста в 1000 раз в секунду
own_window_class Conky
own_window yes
own_window_type dock
own_window_transparent no
own_window_argb_visual yes
own_window_argb_value 145  # полупрозрачный
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
minimum_size 400
maximum_width 400
alignment top_right

draw_shades yes
# белый
default_color ECEAE4
# синий
color1 1EB5FF
# светло-синий
color2 30DDFB
# темно-синий
color3 0090ff
# лайм
color4 98FF76
default_shade_color 000000

draw_outline no
draw_borders no
stippled_borders 0

TEXT
#------------+
# Дистрибутив |
#------------+
${color}Сегодня:${color green}$alignr${time %A,}$alignr ${time %e %B %G}
${color}Дистрибуция:${color green}$alignr ${execi 6300 cat /etc/issue.net} $machine
${color}Ядро:$alignr${color green} $kernel
${color orange}${voffset 2}${hr 1}
#------------+
# i7-6700 CPU|
#------------+
${color2}${voffset 5}Intel® i-7 6700HQ 3.5 GHz: ${color1}@  ${color green}${freq} MHz
${color}${goto 13}CPU 0 ${goto 81}${color green}${cpu cpu1}% ${goto 131}${color3}${cpubar cpu1 18}
#${cpugauge cpu1 20,40}
#${cpugraph 1 15,200 555555 AAAAAA -l}
${color}${goto 13}CPU 1 ${goto 81}${color green}${cpu cpu2}% ${goto 131}${color3}${cpubar cpu2 18}
${color}${goto 13}CPU 2 ${goto 81}${color green}${cpu cpu3}% ${goto 131}${color3}${cpubar cpu3 18}
${color}${goto 13}CPU 3 ${goto 81}${color green}${cpu cpu4}% ${goto 131}${color3}${cpubar cpu4 18}
${color}${goto 13}CPU 4 ${goto 81}${color green}${cpu cpu5}% ${goto 131}${color3}${cpubar cpu5 18}
${color}${goto 13}CPU 5 ${goto 81}${color green}${cpu cpu6}% ${goto 131}${color3}${cpubar cpu6 18}
${color}${goto 13}CPU 6 ${goto 81}${color green}${cpu cpu7}% ${goto 131}${color3}${cpubar cpu7 18}
${color}${goto 13}CPU 7 ${goto 81}${color green}${cpu cpu8}% ${goto 131}${color3}${cpubar cpu8 18}
#------------+
# Температура|
#------------+
#${color1}Все ЦП ${color green}${cpu}% ${goto 131}${color1}Темп: ${color green}${execpi .001 cat /sys/class/thermal/thermal_zone7/temp | cut -c1-2}°C ${alignr}${color1}Аптайм: ${color green}$uptime
# Следующая строка для ядра >= 4.13.0-36-generic
${color1}Все ЦП ${color green}${cpu}% ${goto 131}${color1}Темп: ${color green}${hwmon 1 temp 1}°C ${alignr}${color1}Аптайм: ${color green}$uptime
# Следующая строка для температуры с введением 4.4
#${color1}Все ЦП ${color green}${cpu}% ${goto 131}${color1}Темп: ${color green}${hwmon 0 temp 1}°C ${alignr}${color1}Аптайм: ${color green}$uptime
${color green}$running_processes ${color1}активен из ${color green}$processes ${color1}загруженных процессов.
${color1}Средняя загрузка за 1-5-15 минут: ${alignr}${color green}${execpi .001 (awk '{printf "%s/", $1}' /proc/loadavg; grep -c processor /proc/cpuinfo;) | bc -l | cut -c1-4} ${execpi .001 (awk '{printf "%s/", $2}' /proc/loadavg; grep -c processor /proc/cpuinfo;) | bc -l | cut -c1-4} ${execpi .001 (awk '{printf "%s/", $3}' /proc/loadavg; grep -c processor /proc/cpuinfo;) | bc -l | cut -c1-4}
#------------+
# Intel iGPU |
#------------+
${color orange}${hr 1}${if_match "intel" == "${execpi 99999 prime-select query}"}
${color2}${voffset 5}Intel® Skylake GT2 HD 530 iGPU @${alignr}${color green}${execpi .001 (cat /sys/class/drm/card1/gt_cur_freq_mhz)} MHz
${color}${goto 13}Мин. Частота:${goto 120}${color green}${execpi .001 (cat /sys/class/drm/card1/gt_min_freq_mhz)} MHz${color}${goto 210}Макс. Частота:${alignr}${color green}${execpi .001 (cat /sys/class/drm/card1/gt_max_freq_mhz)} MHz
${color orange}${hr 1}${else}
#------------+
# Nvidia GPU |
#------------+
${color2}${voffset 5}${execpi .001 (nvidia-smi --query-gpu=gpu_name --format=csv,noheader)} ${color1}@ ${color green}${execpi .001 (nvidia-smi --query-gpu=clocks.sm --format=csv,noheader)} ${alignr}${color1}Темп: ${color green}${execpi .001 (nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader)}°C
${color1}${voffset 5}Версия: ${color green}${execpi .001 (nvidia-smi --query-gpu=driver_version --format=csv,noheader)} ${color1} P-State: ${color green}${execpi .001 (nvidia-smi --query-gpu=pstate --format=csv,noheader)} ${alignr}${color1}BIOS: ${color green}${execpi .001 (nvidia-smi --query-gpu=vbios_version --format=csv,noheader)}
${color1}${voffset 5}GPU:${color green}${execpi .001 (nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader)} ${color1}Оперативная память:${color green}${execpi .001 (nvidia-smi --query-gpu=utilization.memory --format=csv,noheader)} ${color1}Пит.:${color green}${execpi .001 (nvidia-smi --query-gpu=power.draw --format=csv,noheader)} ${alignr}${color1}Частота: ${color green}${execpi .001 (nvidia-smi --query-gpu=clocks.mem --format=csv,noheader)}
${color orange}${hr 1}${endif}
#------------+
# Процессы  |
#------------+
${color1}${voffset 5}Имя процесса: ${goto 200}PID ${goto 265}CPU% ${alignr}Память%
${color}${goto 13}${top name 1} ${goto 190}${top pid 1} ${goto 270}${color green}${top cpu 1} ${alignr}${top mem 1}
${color}${goto 13}${top name 2} ${goto 190}${top pid 2} ${goto 270}${color green}${top cpu 2} ${alignr}${top mem 2}
${color}${goto 13}${top name 3} ${goto 190}${top pid 3} ${goto 270}${color green}${top cpu 3} ${alignr}${top mem 3}
${color}${goto 13}${top name 4} ${goto 190}${top pid 4} ${goto 270}${color green}${top cpu 4} ${alignr}${top mem 4}
${color}${goto 13}${top name 5} ${goto 190}${top pid 5} ${goto 270}${color green}${top cpu 5} ${alignr}${top mem 5}
${color}${goto 13}${top name 6} ${goto 190}${top pid 6} ${goto 270}${color green}${top cpu 6} ${alignr}${top mem 6}
${color}${goto 13}${top name 7} ${goto 190}${top pid 7} ${goto 270}${color green}${top cpu 7} ${alignr}${top mem 7}
${color}${goto 13}${top name 8} ${goto 190}${top pid 8} ${goto 270}${color green}${top cpu 8} ${alignr}${top mem 8}
${color}${goto 13}${top name 9} ${goto 190}${top pid 9} ${goto 270}${color green}${top cpu 9} ${alignr}${top mem 9}
${color orange}${voffset 2}${hr 1}
#------------+
# Хранение    |
#------------+
${color1}Использование/Свободная RAM:${goto 148}${color red}$mem ${color red} ${goto 220}${membar 15,100} $alignr${color}${memeasyfree}
${color1}Linux Root:${goto 148}${color red}${fs_used /} ${color red} ${goto 220}${fs_bar 15,100 /} $alignr${color}${fs_free /}
${color1}Ubuntu 18.04:${goto 148}${if_mounted /mnt/clone}${color red} ${fs_used /mnt/clone} ${color red} ${goto 220}${fs_bar 15,100 /mnt/clone} $alignr${color}${fs_free /mnt/clone}${else} ${color yellow} /mnt/clone ${endif}
${color1}${if_mounted /mnt/old}Сломанный 16.04:${goto 148}${color red} ${fs_used /mnt/old} ${color red} ${goto 220}${fs_bar 15,100 /mnt/old} $alignr${color}${fs_free /mnt/old}${else}Кэшированная RAM:${goto 148}${color green}${cached} ${color1} ${alignr}Буферы: ${color green} ${buffers}${endif}
${color1}${if_mounted /mnt/e}WSL+Linux:${goto 148}${color red}${fs_used /mnt/e} ${color red} ${goto 220}${fs_bar 15,100 /mnt/e} $alignr${color}${fs_free /mnt/e}${else}Swap:${goto 148}${color green}${swap} / ${swapmax} $alignr${color green}${swapperc}%${endif}
#${color}NVMe Win 10:${goto 148}${if_mounted /mnt/c}${color green} ${fs_used /mnt/c} / ${fs_size /mnt/c} $alignr${color green}${fs_used_perc /mnt/c}%${else}${color yellow}/mnt/c${endif}
#${color}${if_mounted /mnt/d}HGST_Win10:${goto 148}${color red} ${fs_used /mnt/d} / ${fs_size /mnt/d} $alignr${color green}${fs_used_perc /mnt/d}%${else}Кэшированная RAM:${goto 148}${color green}${cached} ${color} Буферы: ${color green} ${buffers}${endif}
#${color}${if_mounted /mnt/e}WSL+Linux:${goto 148}${color red}${fs_used /mnt/e} / ${fs_size /mnt/e} $alignr${color red}${fs_used_perc /mnt/e}%${else}Swap:${goto 148}${color green}${swap} / ${swapmax} $alignr${color green}${swapperc}%${endif}
${color orange}${voffset 2}${hr 1}
#------------+
# Сеть    |
#------------+
#${color1}Сеть использует vnStat "-i", "-w" и "-m"
${color}${goto 5}Сегодня ${goto 100}Вчера ${goto 225}Неделя ${goto 325}Месяц ${color green}
# vnstatd обновляет базу данных каждые пять минут
${execi 300 vnstat -i enp59s0 | grep "today" | awk '{print $8" "substr ($9, 1, 1)}'} ${goto 110}${execi 300 vnstat -i enp59s0 | grep "yesterday" | awk '{print $8" "substr ($9, 1, 1)}'} ${goto 220}${execi 300 vnstat -i enp59s0 -w | grep "current week" | awk '{print $9" "substr ($10, 1, 1)}'} ${goto 315}${execi 300 vnstat -i enp59s0 -m | grep "`date +"%b '%y"`" | awk '{print $9" "substr ($10, 1, 1)}'}
${color}Скачивание: ${color green}${downspeed enp59s0}/с ${color}${goto 220}Выдача: ${color green}${upspeed enp59s0}/с
${downspeedgraph enp59s0 25,190 000000 ff0000} ${alignr}${upspeedgraph enp59s0 25,190 000000 00ff00}$color
Всего: ${color green}${totaldown enp59s0} $color${alignr}Всего: ${color green}${totalup enp59s0}
#Скорость передачи:$color ${wireless_bitrate wlp60s0}
#------------+
# Яркость |
#------------+
${color orange}${voffset 2}${hr 1}
${color1}${goto 5}Подъем: ${color green}${execpi 300 cat /usr/local/bin/.eyesome-sunrise} ${goto 155}${color1}Установить: ${color green}${execpi 300 cat /usr/local/bin/.eyesome-sunset} ${alignr}${color1}Уровень: ${color green}${execpi 10 cat /sys/class/backlight/intel_backlight/brightness}

Нижняя половина скриншота conky

Только что заметил, что изображения conky выше только верхняя половина. Нижняя половина включена ниже, чтобы код был более понятен. Также обратите внимание, что Intel iGPU появился раньше, потому что была использована команда prime-select intel. Здесь появляется графика nVidia, потому что использовалась команда prime-select nvidia:

введите описание изображения здесь

Вы можете установить контроллер частоты CPU с помощью этой команды:

    sudo apt-get install indicator-cpufreq

Затем перезагрузите, перейдите в область уведомлений (правая сторона верхней панели), нажмите на индикатор частоты CPU и выберите Производительность.

Держите его под рукой в вашем ~/.bashrc или ~/.zshrc

alias cpugetavail="cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors"
alias cpushowcurrent="cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor"
alias cpusethigh="echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor"

Настройки > Режим питания

В настройках Ubuntu 22.04 и 24.04 я заметил настройку, которая может быть интересна, у вас есть выбор для “Режим питания”:

  • Производительность
  • Сбалансированное питание
  • Энергосбережение

введите описание изображения здесь

Начиная с 24.04, также есть ярлык для этого в правом верхнем углу:

введите описание изображения здесь

TODO как они реализованы более точно? Как Ubuntu 22.04 обрабатывает режимы питания? кажется, что это спрашивает. Эта опция не влияла:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

которые все еще были установлены на powersave.

Похоже, что его источник находится по адресу: https://github.com/GNOME/gnome-control-center/blob/bb89fc1d0ef1d30ebc804c064f7813f76b473106/panels/power/cc-power-profile-row.c#L131, но, быстро пробежав по нему, я не смог легко увидеть, что он делает.

Известные проблемы с режимами BIOS

https://www.phoronix.com/review/thinkpad-p14s-gen4 упоминает связанную ошибку BIOS, которая принудила режим низкого энергопотребления на Lenovo ThinkPad P14s:

Я столкнулся с одной заметной проблемой в своем первоначальном тестировании, и это было связано с поддержкой платформенных профилей ACPI. По умолчанию система работала в профиле “low_power”. При попытке изменить используемый платформенный профиль через интерфейс GNOME или запись другого платформенного профиля в sysfs изменений не происходило. Lenovo в конце концов смогла воспроизвести эту проблему.

К сожалению, он не рассказывает о дальнейших подробностях воспроизведения, и я не могу найти явного упоминания low_power в исходном коде ядра.

На самом деле, я позже купил P14s, он был слишком хорош, чтобы устоять перед соблазном. В Ubuntu 23.10 поведение “Режима питания” в GUI “Настройки” было следующим:

  • начинается с “Энергосбережение”
  • если я пытаюсь нажать другой режим, такой как “Производительность”, переключатель радиостанции выбирается на секунду, но затем сразу отменяется на “Энергосбережение” без ясного объяснения

Пытаясь найти свою версию прошивки согласно: Как узнать версию BIOS материнской платы, используя командную строку

sudo dmidecode -t bios

содержит:

BIOS Information     
        Производитель: LENOVO
        Версия: R2FET33W (1.13 )    
        Дата выпуска: 09/08/2023

На самом деле это было исправлено следующим обновлением прошивки!

Производитель: LENOVO
Версия: R2FET36W (1.16 )
Дата выпуска: 10/24/2023

Теперь я могу переключаться между режимами! TODO найти тест, который различает их. Это не было:

stress-ng --cpu 4 --cpu-method matrixprod --metrics-brief --perf -t 4

Бенчмаркинг

Из утилиты бенчмаркинга CPU для Linux я нашел простой бенчмарк, который явно различает, включен ли кабель питания на моем Lenovo ThinkPad P51:

sudo apt install stress-ng
stress-ng --cpu 4 --cpu-method matrixprod --metrics-brief --perf -t 4

что, кажется, выполняет матричное умножение на нескольких ядрах.

С подключенным кабелем питания и в режиме “Производительность” я всегда получаю около 275 ops/s:

info:  [177895] stressor       bogo ops real time  usr time  sys time   bogo ops/s     bogo ops/s
stress-ng: info:  [177895]                           (secs)    (secs)    (secs)   (real time) (usr+sys time)
stress-ng: info:  [177895] cpu                4417      4.00     15.98      0.00      1103.41         276.41

и как только я отключаю и перезапускаю, это падает до примерно 68 ops/s.

Выбрав режим энергосбережения:

  • включен: немного упало до 268 и кажется более переменным, например, если я переключаю окна, оно немного ниже
  • выключен: немного увеличивается до 75 ops/s!

Теперь после:

echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Включен Режим питания scaling_governor Ops/s
y Производительность powersave 275
n Производительность powersave 68
y Энергосбережение powersave 268
n Энергосбережение powersave 75
y Производительность performance 278
n Производительность performance 68

Заключение

Ничто не имело большого значения, кроме подключения или отключения кабеля питания. Я пока не смог найти программное решение, которое заставит мой компьютер игнорировать состояние кабеля питания и поддерживать высокую производительность.

Связанные темы:

indicator-cpufreq, похоже, является самым простым вариантом, но мне действительно не понравилась интеграция в панель задач. Просто хотел предложить совет для более приятного интерфейса для indicator-cpufreq, если вы используете gnome. “Управление питанием CPU”, это позволяет вам задавать минимальную и максимальную частоту прямо из панели задач gnome.

Управление питанием CPU: https://extensions.gnome.org/extension/945/cpu-power-manager/#

Спасибо всем предыдущим авторам!

Контроллер частоты CPU помог мне

Чтобы установить контроллер частоты CPU sudo apt-get install indicator-cpufreq

Перезагрузите компьютер

Вы увидите значок в области уведомлений

Нажмите на значок и измените его на Производительность

Так я увеличил свою производительность в linux независимо от питания

Вы можете проверить текущие настройки питания с помощью команды:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference

и проверить доступные параметры питания с помощью

$ cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences

если вы хотите изменить на, скажем, производительность настройки, просто выполните:

$ echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference

Это то, что Ubuntu 22.04 изменяет, когда вы изменяете “Режимы питания” в “Настройках питания”. (но, возможно, оно изменяет и другие настройки, это нужно проверить)

Ответ или решение

Высокая производительность в Linux: установка и настройка

Введение

Настройка параметров электропитания в операционной системе Linux может значительно повысить производительность вашего устройства. Многие пользователи Windows 8.1 уже знакомы с опцией "Высокая производительность", которая обеспечивает улучшенную работу системы за счет большего потребления энергии. Linux также предлагает множество способов достижения аналогичного результата, включая изменение частоты процессора и выбор адаптивных правителей (governors). В этой статье мы рассмотрим, как включить режим высокой производительности в Linux и какие шаги необходимо предпринять.

Проверка доступных режимов работы процессора

Для начала, нужно узнать, какие правители (governors) доступны на системе. Это можно сделать с помощью следующей команды:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

Вы должны увидеть список доступных режимов. Если между ними есть режим performance, это означает, что вы можете переключиться на него для увеличения производительности.

Чтобы проверить, какой режим сейчас используется, выполните следующую команду:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Если вы увидите режим powersave, это сигнализирует о том, что процессор работает в режиме экономии энергии.

Установка режима высокой производительности

Чтобы изменить режим процессора на performance, выполните следующую команду:

echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

При использовании данного режима вы можете заметить, что частота процессора возрастает, например, с 1000 МГц до 3000 МГц, а потребление энергии увеличивается, что может также привести к повышению температуры процессора на 10 градусов Цельсия.

Установка инструмента для управления частотой процессора

Для упрощения управления частотой процессора можно установить специальный инструмент, например, indicator-cpufreq:

sudo apt-get install indicator-cpufreq

После перезагрузки системы в области уведомлений появится иконка. Кликнув на неё, вы сможете выбрать режим Performance.

Настройки в графическом интерфейсе Ubuntu 22.04 и 24.04

В последних версиях Ubuntu, таких как 22.04 и 24.04, добавлены удобные настройки для управления режимами работы от батареи. Чтобы изменить режим, перейдите в Настройки > Питание и выберите режим, который вам подходит:

  • Высокая производительность
  • Сбалансированное питание
  • Экономия энергии

Обратите внимание, что изменение этого параметра не всегда может влиять на настройки частоты процессора. Убедитесь в том, что после смены режима частота процессора также переключилась на желаемую.

Использование алиасов для удобства

Для упрощения работы с командами вы можете добавить в ваш файл конфигурации оболочки (например, .bashrc или .zshrc) следующие алиасы:

alias cpugetavail="cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors"
alias cpushowcurrent="cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor"
alias cpusethigh="echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor"

Это позволит вам легко проверять доступные режимы и устанавливать нужный режим с помощью простых команд.

Заключение

Выбор режима высокой производительности в Linux — это простой процесс, который может значительно улучшить работу вашей системы. Используя правильные инструменты и параметры, вы сможете адаптировать свою систему под любые задачи, будь то игровые, вычислительные или дизайнерские. Мы настоятельно рекомендуем регулярно проверять обновления системы и настройки BIOS, так как они могут влиять на работу режимов электропитания и производительности вашего устройства.

Оцените материал
Добавить комментарий

Капча загружается...