Оптимізація швидкодії та енергоефективності GNOME / Linux
Даний матеріал починався як особиста пам'ятка щодо оптимізації типової системи Debian/Fedora в умовах енергетичної кризи взимку 2025-26. Згодом, кількість зібраних рецептів перевалила за два розділи. Деякі з нотаток - мені бачаться раціональними для користування навіть в нормальних умовах. Тому вирішив поділитися з іншими: цей матеріал може бути цікавий в першу чергу тим, хто як і я, користується старим залізом або послугувати приводом задуматись про окремі споживачі десктоп-системи Linux та переосмислення їх реальної необхідності для себе.
В умовах перебоїв з електропостачанням, дібрався й до оптимізації середовища GNOME бо останнім часом запустити десктоп в мене можливості немає взагалі - сиджу більшість часу на батареї з нетбуком.
Нижче деякі нотатки, щоб потім не забути повернути назад. Наскільки вони ефективні на практиці - поки не знаю, але думаю в них є сенс, щоб спробувати.
Оптимізація робочого столу GNOME
Режим споживання
Найпомітніша комплексна опція, доступна з правого кута меню:
Power Mode : Power Saver
Зменшення частоти оновлення екрану
Settings > Display > Refresh Rate : 40.01 Hz
Моє питання щодо доречності на LOU
Вимкнення індексації локального пошуку
Це стосується як основного меню (пошук по файлам, закладкам, програмним інтеграціям) так і самих програм (наприклад в браузері Firefox можна вимкнути чимало функціональності з авто-доповнення).
Спочатку я, наївний, вимкнув пошук через глобальне меню GNOME, але згодом почув HDD і побачив в процесах localsearch.
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`
Процес буде висіти, допоки його не вимкнути:
systemctl --user stop localsearch-3.service
Щоб він самовільно не запускався, варто додати маску:
systemctl --user mask localsearch-3.service
За одно, можна почистити простір на диску:
rm -rf ~/.cache/tracker3
Вимкнення Історії файлів
В головних налаштуваннях: Privacy & Security > File History & Trash > File History
Вимкнення Wellbeing
В головних налаштуваннях: Wellbeing > Screen time
Вимкнення анімацій
Тут я поставив dconf-editor, де вимкнув анімації вікон:
/org/gnome/desktop/interface : enable-animations
Вимкнення автоматичних оновлень
Якщо система підключена до Інтернет, GNOME Software буде вперто намагатись перевірити оновлення процесом:
$ htop /usr/bin-gnome-software --gaplication-service
Перевірка і встановлення таких оновлень - не чіпове для батареї задоволення. Особисто в мене, на Fedora 43,
автоматичні оновлення чомусь не вимикаються з меню, а також ті опції, які я потикав в dconf-editor не дають результату. Вирішив для себе випилом цього додатку, разом з його фоновими потрохами:
sudo dnf remove gnome-software
Відтепер, програми ставлю виключно з dnf (install/update) коли мені те дійсно потрібно.
Опції "легкого" архівування
В контекстному меню Nautilus - зовсім відсутні алгоритми архівування без компресії, такі як .tar:
Створення Tarball з контекстного меню Nautilus / GNOME
Оптимізація бекенду GTK
Поки не дібрався, але в мене є поки теоретичні наміри знизити частоту оновлення фреймів середовища GTK, а звідти - сумарне споживання енергії програмами на його основі.
Іншими словами, програми запускають петлі прослуховування подій (англ. "event loops"), коли я тільки починав розробку то наплодив чимало таких споживачів процесорного часу, замість використання вказівників (англ. "pointers"). Думаю не один такий, і це в мене ще був відносно потужний комп. Сучасні "вайб-кодери" на геймерських коритах взагалі не чули про заощадження циклів запису SSD, оптимізацію пам'яті та процесорного часу.
Наскільки це можливо зробити на бекенді GTK через якийсь dconf і без використання API програм - ще не знаю, але спробую в цій темі розібратись. Думаю, що глобальне середовище має містити такі конфіги, TODO.
Оптимізація системи Linux
Не пов'язані напряму з GNOME, але релевантні в контексті енергозаощадження, поради.
zRAM
На лібері всплила згадка про zram, який по суті стискає дані при розміщенні їх на диску. Звісно, це корисно, але не тоді коли я сиджу на батареї та "рахую кількість кадрів"
$ zramctl /dev/zram0 lzo-rle 7,2G 885,2M 262,4M 270,4M [SWAP]
- 885,2M - реальний об'єм
- 262,4M - об'єм після стиснення
- 270,4M - реальна кількість фізичної оперативної пам'яті (включаючи метадані)
Видалив так:
sudo dnf remove search zram-generator-defaults reboot
Перевірити, чи стиснення дійсно деактивоване можна командою:
$ cat /sys/module/zswap/parameters/enabled N
Після цього додав класичний swap file. Є два способи, нормальний:
sudo fallocate -l 10G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile free -h
і "федорівський" (BTRFS/CoW)
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
- зміна властивостей компресії може не підтримуватись
Щоб розділ підключався після перезавантаження системи:
# <file system> <mount point> <type> <options> <dump> <pass> /swapfile none swap sw,nofail 0 0
- nofail я останнім часом додаю на всяк випадок, бо в мене колись були трабли під час завантаження системи, якщо диск раптом вийде з ладу (може для swap це не актуально, не перевіряв)
Звісно, у випадку з класичним файлом підкачки, збільшиться кількість операцій запису, що важливо враховувати особливо при використанні SSD. Утім, своє завдання в контексті енергозаощадження цей спосіб виконує: з переходом з "офроад" на "асфальт" можна буде повернути попередні налаштування.
SELinux
Я давно планував грохнути цю приблуду через її бісящі маркери доступу, які часто потрібно обслуговувати окремо від chown/chmod. Користі від подібної милиці для офісних секретарок АНБ - для себе не бачу, бо вішаю окремі сервіси на їх окремі облікові записи UNIX і вони просто не мають доступу на ті файли, які я навмисне відмітив як 0400. Також я не бачу логіки в системі захисту, яка є цілком і повністю залежною від компрометації root.
Вчора таки дібрався і вимкнув:
SELINUX=disabled
Сьогодні увімкнув комп'ютер і був шокований швидкістю завантаження системи! Також, стали набагато швидше працювати програми, які через осучаснення SSD - все активніше використовують багатопотоковий файловий кеш (і відповідно система створює для нього індекс SELinux)
Вимкнення SELinux - однозначно бонус до швидкості системи, терміну служби HDD/SSD, а звідти - енергоефективності.
Оптимізація мережі
Це може здаватись дрібницею, але сумарно, дрібні запити HTTPs значно впливають на час роботи батареї:
psocks: моє бачення фільтруючого проксі
Зробив собі "білий список" засобами PAC
Crab-hole DNS як 100% програмна альтернатива Pi-hole
Ручне встановлення Pi-hole DNS на прикладі Fedora / Linux
Організація локального дзеркала залежностей Cargo з Kellnr
Let's decrypt
Впровадження TLS на публічні дані викликає в мене дедалі більше роздратування. Просто звертаю увагу на опціональне використання HTTP замість HTTPS там, де це можливо: радіо, відео стріми та інше.
Частково освітлював цю тему в контексті примусового шифрування Yggdrasil, через що я більше не користуюсь локально встановленим роутером, пересилаючи запити 0200::/7 на проксі-сервер:
Думки стосовно TLS в мережах Yggdrasil та Mycelium
Схожу параноїдальну болячку має й протокол Gemini, через що я знову задумуюсь про використання форку Geminict або повернення до протоколу Nex, хоча він - не зручний для інтерактивних ресурсів і ще більш далекий від заміни собою Веб:
Протокол NEX - легка альтернатива Gemini
Розподілені мережі
Я користуюсь двома оверлейними мережами: Yggdrasil та Mycelium, які через свою децентралізовану природу - не є енерго-ефективними за визначенням, але й відмовитись я від них теж не можу. Зате, можу оптимізувати: днями наткнувся на цікаву нотатку howto.ygg стосовно вимкнення інтерфейсу Multicast для клієнтських роутерів, що підключаються до вузлів напряму:
Підвищення рівня приватності в застосунках Linux
- як бачимо, життя "на широку ногу" - не тільки потенційна дірка в безпеці, але й марнотратство енергії
Корисні посилання
Вичави максимум з батареї на Linux (машинний переклад)
Дивіться також
Зберігання журналів Linux в RAM
Саморобний online-UPS для роутера на базі 12В безперебійника для ПК
Саморобний UPS для роутера на базі пауер-банку USB
/uk/