Всем привет! Наверно, многие пришли к линуксу, когда их старый компьютер или ноутбук не тянул, или плохо тянул операционные системы от Microsoft. Многие пробовали разные дистрибутивы — AntiX, MX Linux, Linux Lite, Lubuntu, Xubuntu, и многие другие. Но скорее всего, вы в итоге пришли к Arch Linux — по моему скромному мнению, одному из лучших дистрибутивов.
Многое я взял из ARU — гайд по оптимизации Arch Linux (v2022.07.01).
Арч минималистичный, его установка не так проста, особенно неопытному пользователю, но за это мы получаем широту действий — хочешь, можешь установить гном, а хочешь — хоть тайловый оконный менеджер.
Устанавливая какое-либо DE или WM, вы скорее всего установите минимальную комплектацию, а также из-за минималистичности арча — вы получаете систему, которая не будет есть много ресурсов вашего ПК, ибо не будет никаких лишних сервисов и демонов.
Но даже тогда, особенно на очень маломощных ПК, просто минимальной установки может не хватить. Тогда приходится браться за оптимизацию.
Внимание! Статья написана ТОЛЬКО для Arch Linux, методы оптимизации могут не работать на других дистрибутивах.
Почему именно арч лучший дистрибутив для установки на слабые ПК (да и не только) мы уже поняли. Минималистичность, быстрота, отсутствие лишнего делают арч практически идеальной системой.
Да, можно конечно еще установить Artix — форк арча без systemD, но это уже совсем другая история. Ну и не хочется мне разводить холивар из-за systemD.
Итак, перед началом экстременальных хирургических работ в нашей системе давайте создадим точку восстановления системы при помощи Timeshift, на случай проблем. Установите командой sudo pacman -S timeshift
. Как создать точку восстановлению, надеюсь, не придется рассказывать.
Но перед началом, я могу посоветовать вам установить CachyOS. Это дистрибутив, основанный на арче, но, как говорят создатели, с патчами на оптимизацию и созданный для повышенной производительности системы. Но это не мой вариант.
Обновление системы
Перед началом работ давайте обновим систему и подредактируем пару конфигов.
Откройте файл по пути /etc/pacman.conf, и раскомментируйте строчку ParallelDownloads. Этот параметр позволит использовать параллельную загрузку.
По желанию, можете раскомментировать строчку Color, и после нее добавить строку ILoveCandy. Первая включает цвет, а вторая создает анимацию пакмана при загрузке пакетов. Чисто косметические улучшения, не более.
sudo pacman-key --init # Инициализация sudo pacman-key --populate archlinux # Получить ключи из репозитория sudo pacman-key --refresh-keys # Проверить текущие ключи на актуальность sudo pacman -Syu # Обновляем систему
После нам нужно будет немного настроить скорость зекрал:
sudo pacman -S reflector rsync curl # Установка reflector и его зависимостей # Ставим зеркало из России sudo reflector --verbose --country 'Russia' -l 25 --sort rate --save /etc/pacman.d/mirrorlist
Иногда хорошим выбором будет брать зеркала не из вашей страны, например, иногда лучше из Германии.
Теперь наша задача — установить зависимости, которые нам потребуются.
Для начала установим микрокод — если у вас intel, то установите intel-ucode, если amd — amd-ucode.
sudo pacman -S intel-ucode# Intel sudo pacman -S amd-ucode# AMD sudo mkinitcpio -P # Обновляем образы initramfs
Производители процессоров выпускают обновления стабильности и безопасности для микрокода процессора. Несмотря на то, что микрокод можно обновить с помощью BIOS, ядро Linux также может применять эти обновления во время загрузки. Эти обновления предоставляют исправления ошибок, которые могут быть критичны для стабильности вашей системы.
Следующий шаг — установка утилит:
sudo pacman -S lrzip unrar unzip unace p7zip squashfs-tools base-devel bash wget tar git pacman-contrib nano vim
В этой команде мы установили утилиты для работы с разными архивами, инструменты squashfs, базовые утилиты для разработчиков, баш, систему контроля версий git, pacman-contrib (он нам будет нужен для очистки системы от кэша пакмана), и пару консольных редакторов текста.
По желанию, вы можете также установить набор прикладного ПО:
sudo pacman -S chromium vlc gvfs nemo qbittorrent kitty
Вместо kitty вы можете установить какой угодно другой терминал. Также как и вместо nemo.
Скорее всего, вы могли уже установить нужные вам видео-драйвера. Но на всякий случай, оставлю команды для установки.
AMD: sudo pacman -S mesa vulkan-radeon vulkan-icd-loader
INTEL: sudo pacman -S mesa vulkan-intel vulkan-icd-loader
Настройка
После этого можно изменить файл /etc/makepkg.conf. Это конфиг для команды makepkg, который используется для сборки пакетов.
Измените следующие данные:
CFLAGS="-march=native -mtune=native -O2 -pipe -fno-plt -fexceptions \ -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ -fstack-clash-protection -fcf-protection" CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS" RUSTFLAGS="-C opt-level=3" MAKEFLAGS="-j$(nproc) -l$(nproc)" OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto)
Здесь вы можете увидеть флаги для компиляторов и настройку сборки.
Компоненты из CachyOS
Как я говорил, CachyOS — оптимизированная сборка арча. Если вы решили остаться на ванильном арче, то вы можете установить репозиторий cachyos.
А в репозитории cachyos есть много интересного — готовые конфигурации некоторых оконных менеджеров и окружений рабочего стола, а также оптимизированные ядра с разными планировщиками.
Планировщики предназначены для планирования различные операции внутри ядра системы.
Практически все приложения на Linux используют какие-либо операции ввода-вывода. Без планировщика, каждый раз когда происходит запрос на ввод-вывод, происходило бы взаимодействие с ядром и такие операции бы выполнялись немедленно. Более того, может возникнуть такая ситуация, когда вы можете получить огромное количество запросов на ввод-вывод, которое заставит головки диска буквально метаться по нему стороны в сторону.
Разница между производительностью жестких дисков и операционной системой выросла очень быстро. Для обслуживания прерывания — приостанавливается работа всех остальных приложений и со стороны это выглядит как снижение отзывчивости системы. Планирование событий ввода-вывода несет в себе необходимость решения многих вопросов. Планировщику необходимо хранить поступившие запросы в специальной очереди. Самое главное с чего следует начать при рассмотрении архитектуры планировщика или настройки существующих планировщиков — это определение назначения, функций и роли системы.
Для установки надо ввести следующие команды:
wget https://mirror.cachyos.org/cachyos-repo.tar.xz # получаем архив cachyos-repo tar xvf cachyos-repo.tar.xz # разархивируем rm cachyos-repo.tar.xz # удаляем архив cd cachyos-repo # переходим в директорию sudo ./cachyos-repo.sh # запускаем скрипт установки репозитория sudo pacman -S linux-cachyos linux-cachyos-headers # установливаем ядро sudo mkinitcpio -p sudo grub-mkconfig -o /boot/grub/grub.cfg
Мы устанавливаем ядро с SCHED-EXT планировщиком (BPF extensible scheduler class).
Но также поддерживаются следующие:
-
(BORE) Burst-Oriented Response Enhancer Scheduler by firelzrd (BORE) linux-bore / linux-cachyos-bore / linux-cachyos
-
(EEVDF) Earliest Eligible Virtual Deadline — linux-cachyos-eevdf
-
(ECHO) Enhanced CPU Handling Orchestrator Scheduler by Hamad Marri
Также можно увеличить производство через совместимость процессора с разными версиями архитектуры x86_64.
Можно увидеть, какую версию поддерживает ваш процессор через команду /lib/ld-linux-x86-64.so.2 --help | grep supported
.
Вот пример вывода:
> /lib/ld-linux-x86-64.so.2 --help | grep supported x86-64-v4 (supported, searched) x86-64-v3 (supported, searched) x86-64-v2 (supported, searched)
Если вы видите x86-64-v4 (supported, searched)
или что-то похожее, то значит ваш процессор поддерживает данную версию архитектуры. Если же просто x86-64-v4
, то значит ваш процессор не поддерживается.
Для того, чтобы использовать репозиторий с программами под вашу версию (например, у вас доступна x86-64-v4), то надо выполнить следующие действия:
sudo vim /etc/pacman.conf # открываем конфиг пакмана # Если процессор не поддерживает какую ту версию, вы можете оставить так: [cachyos] Include = /etc/pacman.d/cachyos-mirrorlist # Но если поддерживает, то: [cachyos-v3] Include = /etc/pacman.d/cachyos-v3-mirrorlist [cachyos-core-v3] Include = /etc/pacman.d/cachyos-v3-mirrorlist [cachyos-extra-v3] Include = /etc/pacman.d/cachyos-v3-mirrorlist [cachyos] Include = /etc/pacman.d/cachyos-mirrorlist # Не забудьте изменить v3 на вашу версию (может быть у вас v4, а может и v2) # И после обновите систему sudo pacman -Syu
Если вы установили ядро с планировщиком SCHED-EXT (по дефолту), то можете установить специальную утилиту scx-scheds, который включает дополнительные планировщики:
sudo pacman -S scx-scheds
Ниже список планировщиков с их путями:
/usr/bin/scx_central /usr/bin/scx_flatcg /usr/bin/scx_lavd /usr/bin/scx_layered /usr/bin/scx_nest /usr/bin/scx_pair /usr/bin/scx_qmap /usr/bin/scx_rlfifo /usr/bin/scx_rustland /usr/bin/scx_rusty /usr/bin/scx_simple /usr/bin/scx_userland
Чтобы запустить планировщик, введите в терминале:
sudo scx_<NAME>
Полезные утилиты
Некоторые полезные утилиты, которые могут помочь вам оптимизировать ОС.
Earlyoom
Out-Of-Memory Killer (OOM) — это процесс в Linux, который завершает приложение, чтобы спасти ядро от сбоя. Он жертвует приложением, чтобы сохранить работу ОС.
Когда в системе заканчивается память, OOM вызывает функцию out_of_memory(). В ней есть функция select_bad_process(), которая получает оценку от функции badness(). Под раздачу попадает самый «плохой» процесс.
Earlyoom автоматически завершает программу, если она приводит к исчерпыванию всей свободной ОЗУ в системе, предотвращая ситуацию нехватки оперативной памяти – OOM. Условия срабатывания такие:
Установка и запуск:
sudo pacman -S earlyoom sudo systemctl enable earlyoom
Trim
Trim — команда интерфейса ATA, позволяющая операционной системе уведомить твердотельный накопитель о том, какие блоки данных (страницы) не несут полезной нагрузки и их можно не хранить физически.
Эта команда полезна для SSD
sudo systemctl enable fstrim.timer sudo fstrim -v / sudo fstrim -va /
CPUPower
Все мы знаем, что на Windows есть режимы использования батареи — сбалансированный или максимальный. На линуксе такого из коробки нету, но можно установить CPUPower. По умолчанию ваш процессор динамически меняет свою частоту, что в принципе правильно и дает баланс между энергосбережением и производительностью. Но если вы все таки хотите выжать все соки, то вы можете закрепить применение режима максимальной производительности для вашего процессора.
sudo pacman -S cpupower # Установит менеджер управления частотой процессора sudo cpupower frequency-set -g performance # Выставляет максимальную производительность до перезагрузки системы.
После в файле /etc/default/cpupower
строку governor=
исправьте на governor=performance
.
И после включаем сервис в автозапуск:
sudo systemctl enable cpupower
Оптимизация GNOME
Гном — один из самых прожорливых DE. Но, по моему скромному мнению, один из лучших DE (конечно же вы можете считать по другому).
Но можно попробовать оптимизировать его, путем отключения сервисов, и в совокупности со всей оптимизацией, он будет стабильно работать на 2гб ОЗУ! Конечно, при открытии браузера, ситуация ухудшается, но здесь уже мало что можно поделать, если не идти в крайние дебри линукс-оптимизации.
Для начала отключим некоторые ненужные сервисы:
systemctl --user mask org.gnome.SettingsDaemon.Wacom.service # Интеграция с граф.планшетом Wacom systemctl --user mask org.gnome.SettingsDaemon.PrintNotifications.service # уведомления о печати принтером systemctl --user mask org.gnome.SettingsDaemon.Color.service # служба управления цветовыми профилями. Без этого сервиса не будет работать "теплый" режим. systemctl --user mask org.gnome.SettingsDaemon.A11ySettings.service # служба для управления специальными возможностями (для людей с ограниченными возможностями) systemctl --user mask org.gnome.SettingsDaemon.Wwan.service # отключение службы для работы с беспроводными сетями. Не отключать, если вы пользуетесь WiFi. systemctl --user mask org.gnome.SettingsDaemon.UsbProtection.service # отключение служб защиты от сторонних USB при блокировке экрана systemctl --user mask org.gnome.SettingsDaemon.ScreensaverProxy.service # автоматическая блокировка экрана (скринсейвер) systemctl --user mask org.gnome.SettingsDaemon.Sharing.service # общий доступ к каталогам и файлам systemctl --user mask org.gnome.SettingsDaemon.Rfkill.service # Отключение службы управления подсистемой rfkill, отвечающей за отключения любого радиопередатчика в системе (WiFi и Bluetooth) systemctl --user mask org.gnome.SettingsDaemon.Keyboard.service # Отключение службы управления клавиатурой и раскладками GNOME. Можно смело отключать если уже настроили все раскладки и настройки клавиатуры заранее, ибо все предыдущие настройки сохраняются при отключении. systemctl --user mask org.gnome.SettingsDaemon.Sound.service # Отключаем службу управления звуком GNOME. Отключает ТОЛЬКО настройки звука GNOME, а не вообще всё управлением звуком в системе. systemctl --user mask org.gnome.SettingsDaemon.Smartcard.service # интеграция с кард-ридером systemctl --user mask org.gnome.SettingsDaemon.Housekeeping.service # служба слежения за свободным местом на диске systemctl --user mask org.gnome.SettingsDaemon.Power.service # служба управления электропитанием # Для включения службы: systemctl --user unmask --now СЛУЖБА
Если это плохо помогло, то наш вариант — gnome-shell-performance и mutter-performance. Они доступны в AUR — arch user repository.
Установить эти два пакета можно двумя способами:
-
Обычный (через git):
git clone https://aur.archlinux.org/gnome-shell-performance cd gnome-shell-performance makepkg -sric git clone https://aur.archlinux.org/mutter-performance cd mutter-performance makepkg -sric
-
Через yay:
# Установка yay (раз и навсегда) git clone https://aur.archlinux.org/yay cd yay makepkg -sric yay -S gnome-shell-performance mutter-performance
Таким путем можно компилировать некоторые программы, например nautilus-git
. Это немного может прибавить производительности за счет нативной компиляции. Но не стоит слишком сильно увлекаться компиляцией — иначе вам лучше бы установить Gentoo.
Ну и под конец, можно отключить анимации:
gsettings set org.gnome.desktop.interface enable-animations false
Оптимизация KDE
Чисто для приличия надо бы облегчить KDE, не смотря на то, что я считаю эту оболочку довольно плохой, перегруженной и «bloat».
sudo pacman -Rsn kwayland-integration kwallet-pam plasma-thunderbolt plasma-vault powerdevil plasma-sdk kgamma5 drkonqi discover oxygen bluedevil plasma-browser-integration plasma-firewall # Не удаляйте powerdevil если у вас ноутбук, а bluedevil если используете bluetooth соответственно. sudo pacman -Rsn plasma-pa # Удаляем виджет управления звуком. sudo pacman -S kmix # Замена виджету plasma-pa, совместим с ALSA. systemctl --user mask kde-baloo.service # Полное отключение baloo (файловый индексатор) systemctl --user mask plasma-baloorunner.service
Все остальные настройки хранятся в центре управления, и их легко найти. Отключите лишние анимации — и все.
Повышение производительности памяти
Нехватка памяти — это частая проблема. Система начинает тормозить — подвисают окна, медленная работа. А почему это происходит? Ибо планировщик ядра Linux не может выполнить запрос на какое то действие в запущенной программе, пока не получит доступ к ее оперативной памяти, выполнить следующее действие тоже не может, образовывается очередь из запросов на чтение с диска, и система начинает медленно работать, потому что обработка очереди происходит медленнее.
Если в такой момент запустить htop, то показатель Load Average (LA) скорее всего будет высоким.
Часто на всех сайтах советуют выставить параметр vm.swappines вместо 60 на 10. На самом деле, не всегда это увеличит производительность. Этот элемент управления используется для определения того, насколько агрессивно ядро будет использовать подкачку страниц памяти. Более высокие значения увеличивают агрессивность, а низкие уменьшают объем подкачки. Значение 0 указывает ядру не запускать подкачку до тех пор, пока количество свободных страниц и страниц с файловой поддержкой не станет меньше максимального значения в зоне. Если подробнее, то значение от 0 до 100, которое определяет, в какой степени система предпочитает анонимную память или кэш страниц. Высокое значение повышает производительность файловой системы, в то же время менее активно вытесняя активные процессы из физической памяти. Низкое значение позволяет избежать перегрузки процессов из-за нехватки памяти, снижая производительность ввода-вывода. Увеличивается приоритет данных приложений, взамен ухудшается кэширование ввода-вывода.
Также можно включить zram — встроенный модуль ядра linux, который сжимает оперативную память путем увеличения нагрузки на процессор.
ОН увеличивает производительность благодаря предотвращению подкачки страниц на диск, используя сжатое блочное устройство в оперативной памяти, пока не появляется необходимость использовать файл подкачки на жестком диске.
Для запуска zram нужно загрузить модуль ядра:
$ modprobe zram num_devices=2
После отредактируйте /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="... zram.num_devices=2 ..."
В num_devices задается количество сжатых блочных устройств, которое будет создано. Создавать надо их по количеству ядер, для наиболее оптимиального использования процессора.
После можно делать с ними что угодно — можно создать SWAP-разделы:
echo '1024M' > /sys/block/zram0/disksize echo '1024M' > /sys/block/zram1/disksize mkswap /dev/zram0 mkswap /dev/zram1 swapon /dev/zram0 -p 10 swapon /dev/zram1 -p 10
Этот модуль работает как tmpfs — берется кусок памяти от имени ядра. Команды discard/trim это блочное устройство воспринимает примерно как SSD.
Оптимизация загрузки ядра
Вы можете немного изменить параметры загрузки ядра в GRUB, измените следующую строку в /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="... loglevel=2 nowatchdog split_lock_detect=off processor.ignore_ppc=1 migrations=off msr.allow_writes=on pcie_aspm=force module.sig_unenforce cryptomgr.notests initcall_debug no_timer_check noreplace-smp page_alloc.shuffle=1 rcupdate.rcu_expedited=1 tsc=reliable ..."
Небольшой совет
Если вы хотите больше скорости, можете установить вместо DE легкий WM.
Среди обыкновенных можно выделить openbox, icewm.
А также есть тайловые оконные менеджеры. Когда вы установите их, вы сможете стать членом касты тайломанов. И скорее всего начнете кастомизацию своей линукс-системы. Если вы хотите, могу сделать статью на тему кастомизации линукса от 0 до 1.
Среди тайловых оконных менеджеров можно выделить иксовые: DWM, bspwm, i3wm, а среди Wayland’овых — hyprland, sway. А также есть qtile — он написан на Python, и может запускать как и под X11, как и под Wayland.
Заключение
Используя весь этот пак оптимизаций, вы дадите буквально вторую жизнь своему старому устройству. Или просто ускорите работу вашего ПК, не прибегая к суровым методам (например установка Gentoo с оптимизиционными флагами компилятора).
И специально для вас я разработал баш-скрипт, который автоматизирует оптимизацию, очистку системы.
Этот репозиторий есть по ссылке. Весь репозиторий и комментарии на английском.
____ __ _ ___ __ / __ \____ / /_(_) / | __________/ /_ / / / / __ \/ __/ / / /| | / ___/ ___/ __ \ / /_/ / /_/ / /_/ / / ___ |/ / / /__/ / / / \____/ .___/\__/_/ /_/ |_/_/ \___/_/ /_/ /_/ >>> A tool for fast optimization of Arch
Источники
ссылка на оригинал статьи https://habr.com/ru/articles/813757/
Добавить комментарий