gemlog/public/uk/power-optimization-on-linux.gmi
2026-03-23 00:24:25 +02:00

173 lines
No EOL
11 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
В умовах перебоїв з електропостачанням, дібрався й до оптимізації середовища 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`
## Вимкнення анімацій
Тут я поставив 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.
## Інше
Не пов'язані напряму з 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. Утім, своє завдання в контексті енергозаощадження цей спосіб виконує: з переходом з "офроад" на "асфальт" можна буде повернути попередні налаштування.
## DNS/HTTPS трафік
Це може здаватись дрібницею, але сумарно, дрібні запити HTTPs значно впливають на час роботи батареї:
=> 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