хуйу нас не матерятся
К сожаления до сих пор(2023) ubuntu-based дистрибудивы очень не оптимизированы по энергопотреблению. И сразу после установки требуют допиливания напильником. Самое интересное, что все необходимые инструменты для оптимального управления ресурсами уже давно есть.
Для примера расскажу, что я делал на своей Linux Mint 21.1 на ноуте lenovo 82YM Yoga 7 14ARP8.
У меня были 3 главных проблемы:
Если вы живёте на ubutu-based дистрибутивах, как я, в первую очередь нужно убедиться, что установлены ubuntu-restricted-extras в комплекте которых есть драйвера и кодеки для поддержки апаратного декодирования:
sudo apt install ubuntu-restricted-extras
Далее заходим на страницу конфига firefox about:config и изменяем следующие переменные:
media.ffmpeg.vaapi.enabled = true
media.ffvpx.enabled = false
media.rdd-vpx.enabled = false
Немного больше пояснений на ангельском тут.
После этого рестартуем firefox, заходим на страницу about:support, проматываем до раздела "Media" и убеждаемся, что на некоторых кодеках появилось апаратное декодирование:
Далее ставим плагин enchanced-h264ify в котором отключаем кодеки, которые не умеют декодиться на GPU:
C google chrome получилось чуть проще, после установки ubuntu-restricted-extras (а возможно даже до) апаратное декодрование автоматом включилось, проверить это можно на странице chrome://gpu:
На удиваление, мир GUI приложений не обошел стороной линупсы и для любителей тыкать мышкой доступны не только консольные утилиты. Действительно полезными я нашел 2: cpupower-gui и CoreCtrl
Эта программа позволяет управлять частотами процессора, и что самое главное из userspace, без рутовых полномочий. Но к сожалению на версии 1.0.0 не сохраняет настройки профилей. Считай можно только задать частоту в текущем активном профиле, ну и переключить профиль.
На моём AMD ryzen 7735u доступны только графики с нагрузкой и частотой, ни менять частоту ни профили CPU она не умеет.
За то с видеокартой она дружит олично, показывает всё что можно: использование памяти, загрузку GPU, потребляемую мощность, напрежение, температуру, частоту памяти и GPU. И самое главное позволяет управлять профилем видеокарты и частотой GPU.
Но лично мне постоянно тыкать мышкой не нравится, я люблю, когда всё работает "само", автоматически. По этому сделал небольшой скриптик, для которого потребуется набор утилит cpufreq:
sudo apt-get install cpufrequtils
После установки выясним лимиты на частоту:
cpufreq-info -l
В моём случае, минимальный лимит определился правильно: 1.6Ghz, а максимальный неправильно: 4.8Ghz- это частота турбобуста. По этому максимальную частоту я подглядел в cpupower-gui она составила 2.7Ghz.
Теперь можем написать скриптик по автоматическому применению профилей и заданию частоты процессора:
#!/bin/bash
if on_ac_power; then
echo "Set performance"
echo "ваш_судо_пароль" | sudo -S cpufreq-set -r -g performance -d 1.60 GHz -u 2.70GHz
else
echo "Set powersave"
echo "ваш_судо_пароль" | sudo -S cpufreq-set -r -g powersave -d 1.60 GHz -u 1.60GHz
fi
В linux доступна глобальная переменная "on_ac_power" - которая сигнализирует подключено питание, или нет.
cpufreq-set нужно запускать с правами рута, по этому у нас есть конструкция
echo "ваш_судо_пароль" | sudo -S
Не забудьте зменить пароль на Ваш, либо позвольте вызывать Вашему юзеру судо без пароля.
Так же измените минималные и максимальные частоты под Ваши нужны.
Дайте скрипту права на выполнение:
chmod 777 название_скрипта.sh
И добавьте его в крон с расписанием- каждая минута:
crontab -e
* * * * * /путь/к_скрипту/название_скрипта.sh
Для юзеров видиокарт AMD подходит управление профилями через PP:
#!/bin/bash
echo "GPU powerman"
if on_ac_power; then
echo "Switch to auto mode"
echo 'auto' > /sys/class/drm/card0/device/power_dpm_force_performance_level
else
echo "Switch to low mode"
echo 'low' > /sys/class/drm/card0/device/power_dpm_force_performance_level
fi
echo "Current GPU state is:"
cat /sys/class/drm/card0/device/power_dpm_force_performance_level
Трюк с прямым вызовом через судо у меня не прошел, почему-то не хватало прав, получал ошибку:
sudo echo 'auto' > /sys/class/drm/card0/device/power_dpm_force_performance_level
bash: /sys/class/drm/card0/device/power_dpm_force_performance_level: Permission denied
По этому для его запуска я сделал скрипт-кикстартер:
#!/bin/bash
echo "Ваш_судо_пароль" | sudo -S ./amd_gpu_powerman.sh
Если у Вас видимокарта Intel, метод тоже должен работать. А вот если nvidia, земля тебе пухом, братишка.
До всех этих манипуляций мой ноут на батарейке жил не более 2.5 часов, и это только в режиме просмотра ютупчика с минимальной яркостью экрана.
После тюнинга время жизни возросло более чем в 2 раза, более 6 часов в режиме прослушивания ютупчика, браузинга и работы в IDEшках.
И ещё 1 утилита с мониторингом системы и управления куллерами: https://gitlab.com/coolercontrol/coolercontrol
Esli v firefox vidim FEATURE_FAILURE_WEBRENDER_COMPOSITOR_DISABLED, nujno vistavit media.hardware-video-decoding.force-enabled=true v about:config
Ещё 1 свежая утилита: https://github.com/AdnanHodzic/auto-cpufreq