gemlog/public/uk/power-optimization-on-linux.gmi
2026-03-29 07:34:25 +03:00

209 lines
No EOL
14 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Оптимізація швидкодії та енергоефективності GNOME / Linux
> Даний матеріал починався як особиста пам'ятка щодо оптимізації типової системи Debian/Fedora в умовах енергетичної кризи взимку 2025-26. Згодом, кількість зібраних рецептів перевалила за два розділи. Деякі з нотаток - мені бачаться раціональними для користування навіть в нормальних умовах. Тому вирішив поділитися з іншими: цей матеріал може бути цікавий в першу чергу тим, хто як і я, користується старим залізом або послугувати приводом задуматись про окремі споживачі десктоп-системи Linux та переосмислення їх реальної необхідності для себе.
В умовах перебоїв з електропостачанням, дібрався й до оптимізації середовища GNOME бо останнім часом запустити десктоп в мене можливості немає взагалі - сиджу більшість часу на батареї з нетбуком.
Нижче деякі нотатки, щоб потім не забути повернути назад. Наскільки вони ефективні на практиці - поки не знаю, але думаю в них є сенс, щоб спробувати.
## Оптимізація робочого столу GNOME
### Режим споживання
Найпомітніша комплексна опція, доступна з правого кута меню:
> Power Mode : Power Saver
### Зменшення частоти оновлення екрану
> Settings > Display > Refresh Rate : 40.01 Hz
=> https://linux.org.ua/index.php?topic=12341.0 Моє питання щодо доречності на LOU
### Вимкнення індексації локального пошуку
Це стосується як основного меню (пошук по файлам, закладкам, програмним інтеграціям) так і самих програм (наприклад в браузері Firefox можна вимкнути чимало функціональності з авто-доповнення).
Спочатку я, наївний, вимкнув пошук через глобальне меню GNOME, але згодом почув HDD і побачив в процесах localsearch.
``` bash
gsettings set org.freedesktop.Tracker3.Miner.Files enable-monitors false
gsettings set org.freedesktop.Tracker3.Miner.Files index-content false
gsettings set org.freedesktop.Tracker3.Miner.Files index-on-battery false
gsettings set org.freedesktop.Tracker3.Miner.Files index-on-battery-first-time false
```
* на Fedora 43 ключі будуть `Tracker` замість `Tracker3`
* особисто я користуюсь графічною утилітою `dconf-editor`
Процес буде висіти, допоки його не вимкнути:
``` bash
systemctl --user stop localsearch-3.service
```
Щоб він самовільно не запускався, варто додати маску:
``` bash
systemctl --user mask localsearch-3.service
```
За одно, можна почистити простір на диску:
``` bash
rm -rf ~/.cache/tracker3
```
### Вимкнення анімацій
Тут я поставив dconf-editor, де вимкнув анімації вікон:
> /org/gnome/desktop/interface : enable-animations
### Вимкнення автоматичних оновлень
Якщо система підключена до Інтернет, GNOME Software буде вперто намагатись перевірити оновлення процесом:
```
$ htop
/usr/bin-gnome-software --gaplication-service
```
Перевірка і встановлення таких оновлень - не чіпове для батареї задоволення. Особисто в мене, на Fedora 43,
автоматичні оновлення чомусь не вимикаються з меню, а також ті опції, які я потикав в dconf-editor не дають результату. Вирішив для себе випилом цього додатку, разом з його фоновими потрохами:
``` bash
sudo dnf remove gnome-software
```
Відтепер, програми ставлю виключно з dnf (install/update) коли мені те дійсно потрібно.
### Опції "легкого" архівування
В контекстному меню Nautilus - зовсім відсутні алгоритми архівування без компресії, такі як .tar:
=> tarball-from-nautilus-context-menu.gmi Створення Tarball з контекстного меню Nautilus / GNOME
### Оптимізація бекенду GTK
Поки не дібрався, але в мене є поки теоретичні наміри знизити частоту оновлення фреймів середовища GTK, а звідти - сумарне споживання енергії програмами на його основі.
Іншими словами, програми запускають петлі прослуховування подій (англ. "event loops"), коли я тільки починав розробку то наплодив чимало таких споживачів процесорного часу, замість використання вказівників (англ. "pointers"). Думаю не один такий, і це в мене ще був відносно потужний комп. Сучасні "вайб-кодери" на геймерських коритах взагалі не чули про заощадження циклів запису SSD, оптимізацію пам'яті та процесорного часу.
Наскільки це можливо зробити на бекенді GTK через якийсь dconf і без використання API програм - ще не знаю, але спробую в цій темі розібратись. Думаю, що глобальне середовище має містити такі конфіги, TODO.
## Оптимізація системи Linux
Не пов'язані напряму з GNOME, але релевантні в контексті енергозаощадження, поради.
### zRAM
На лібері всплила згадка про zram, який по суті стискає дані при розміщенні їх на диску. Звісно, це корисно, але не тоді коли я сиджу на батареї та "рахую кількість кадрів"
``` bash
$ zramctl
/dev/zram0 lzo-rle 7,2G 885,2M 262,4M 270,4M [SWAP]
```
* 885,2M - реальний об'єм
* 262,4M - об'єм після стиснення
* 270,4M - реальна кількість фізичної оперативної пам'яті (включаючи метадані)
Видалив так:
``` bash
sudo dnf remove search zram-generator-defaults
reboot
```
Перевірити, чи стиснення дійсно деактивоване можна командою:
``` bash
$ cat /sys/module/zswap/parameters/enabled
N
```
Після цього додав класичний swap file. Є два способи, нормальний:
``` bash
sudo fallocate -l 10G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -h
```
і "федорівський" (BTRFS/CoW)
``` bash
sudo truncate -s 0 /swapfile
sudo chattr +C /swapfile
sudo btrfs property set /swapfile compression none
sudo dd if=/dev/zero of=/swapfile bs=1M count=10240 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -h
```
* зміна властивостей компресії може не підтримуватись
Щоб розділ підключався після перезавантаження системи:
``` /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/swapfile none swap sw,nofail 0 0
```
* nofail я останнім часом додаю на всяк випадок, бо в мене колись були трабли під час завантаження системи, якщо диск раптом вийде з ладу (може для swap це не актуально, не перевіряв)
Звісно, у випадку з класичним файлом підкачки, збільшиться кількість операцій запису, що важливо враховувати особливо при використанні SSD. Утім, своє завдання в контексті енергозаощадження цей спосіб виконує: з переходом з "офроад" на "асфальт" можна буде повернути попередні налаштування.
### SELinux
Я давно планував грохнути цю приблуду через її бісящі маркери доступу, які часто потрібно обслуговувати окремо від chown/chmod. Користі від подібної милиці для офісних секретарок АНБ - для себе не бачу, бо вішаю окремі сервіси на їх окремі облікові записи UNIX і вони просто не мають доступу на ті файли, які я навмисне відмітив як 0400. Також я не бачу логіки в системі захисту, яка є цілком і повністю залежною від компрометації root.
Вчора таки дібрався і вимкнув:
``` /etc/selinux/config
SELINUX=disabled
```
Сьогодні увімкнув комп'ютер і був шокований швидкістю завантаження системи! Також, стали набагато швидше працювати програми, які через осучаснення SSD - все активніше використовують багатопотоковий файловий кеш (і відповідно система створює для нього індекс SELinux)
SELinux - це однозначно бонус до швидкості системи, терміну служби HDD/SSD, а звідти - енергоефективності.
## Оптимізація мережі
Це може здаватись дрібницею, але сумарно, дрібні запити HTTPs значно впливають на час роботи батареї:
=> psocks-my-vision-of-filtering-out-proxy.gmi psocks: моє бачення фільтруючого проксі
=> my-public-pac-files-asset.gmi Зробив собі "білий список" засобами PAC
=> crab-hole-as-pi-hole-alternative-in-rust.gmi Crab-hole DNS як 100% програмна альтернатива Pi-hole
=> pi-hole-manual-install-on-fedora-linux.gmi Ручне встановлення Pi-hole DNS на прикладі Fedora / Linux
=> rust-crates-mirroring-with-kellnr.gmi Організація локального дзеркала залежностей Cargo з Kellnr
### Let's decrypt
Впровадження TLS на публічні дані викликає в мене дедалі більше роздратування. Просто звертаю увагу на опціональне використання HTTP замість HTTPS там, де це можливо: радіо, відео стріми та інше.
Частково освітлював цю тему в контексті примусового шифрування Yggdrasil, через що я більше не користуюсь локально встановленим роутером, пересилаючи запити 0200::/7 на проксі-сервер:
=> thoughts-on-tls-on-yggdrasil-and-mycelium-networks.gmi Думки стосовно TLS в мережах Yggdrasil та Mycelium
Схожу параноїдальну болячку має й протокол Gemini, через що я знову задумуюсь про використання форку Geminict або повернення до протоколу Nex, хоча він - не зручний для інтерактивних ресурсів і ще більш далекий від заміни собою Веб:
=> nex-lightweight-gemini-alternative.gmi Протокол NEX - легка альтернатива Gemini
### Розподілені мережі
Я користуюсь двома оверлейними мережами: Yggdrasil та Mycelium, які через свою децентралізовану природу - не є енерго-ефективними за визначенням, але й відмовитись я від них теж не можу. Зате, можу оптимізувати: днями наткнувся на цікаву нотатку howto.ygg стосовно вимкнення інтерфейсу Multicast для клієнтських роутерів, що підключаються до вузлів напряму:
=> enhancing-privacy-in-linux-apps.gmi Підвищення рівня приватності в застосунках Linux
* як бачимо, життя "на широку ногу" - не тільки потенційна дірка в безпеці, але й марнотратство енергії
### Корисні посилання
=> https://www.reddit.com/r/linux/comments/a4o03z/get_the_best_out_of_you_battery_on_linux/?tl=uk Вичави максимум з батареї на Linux (машинний переклад)
## Дивіться також
=> diy-online-router-ups-based-on-interactive-pc-ups.gmi Саморобний online-UPS для роутера на базі 12В безперебійника для ПК
=> diy-router-ups-based-on-usb-power-bank.gmi Саморобний UPS для роутера на базі пауер-банку USB