Советы по оптимизации системы
Загрузка системы
Заголовок раздела «Загрузка системы»Для того, чтобы узнать, - какой процесс больше всего тормозит запуск системы, выполните команду systemd-analyze blame
Дайте угадаю, NetworkManager-wait-online оказался предателем, и отнимает от запуска вашей системы ~4 секунды? Не беда. Можете просто отключить его)
sudo systemctl mask NetworkManager-wait-online.service
Ускорение распаковки initramfs
Заголовок раздела «Ускорение распаковки initramfs»Это начальное загрузочное окружение, которое дополняет образ ядра Linux. Для экономии места оно представляется в виде саморасжимаемого архива. В Arch Linux утилита mkinitcpio создает initramfs и по умолчанию использует алгоритм сжатия zstd. Для ускорения загрузки лучше применить алгоритм lz4.
-
Изменение алгоритма сжатия
Отредактируйте файл
/etc/mkinitcpio.conf
, добавив следующие строки:COMPRESSION="lz4"COMPRESSION_OPTIONS=(-9) -
Замена хуков на systemd (опционально)
Для дополнительного ускорения замените хуки base и udev на systemd:
HOOKS=(systemd autodetect microcode modconf kms keyboard sd-vconsole block filesystems fsck) -
Обновление образов initramfs
После внесения изменений выполните команду:
Окно терминала sudo mkinitcpio -P
Флаги компиляции
Заголовок раздела «Флаги компиляции»Флаги компиляции являются указателями для компилятора, какие инструкции и оптимизации использовать при сборке программ.
Для оптимизации процесса сборки мы можем их изменить, создав пользовательский конфиг ~/.makepkg.conf
в домашней директории, чтобы переопределить системные настройки:
CFLAGS="-march=native -mtune=native -O2 -pipe -fno-plt -fexceptions \ -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \ -fstack-clash-protection -fcf-protection"CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"RUSTFLAGS="-C opt-level=3 -C target-cpu=native -C link-arg=-z -C link-arg=pack-relative-relocs"MAKEFLAGS="-j$(nproc) -l$(nproc)"
В Linux есть программы, сборка которых может занять более двух часов, и для ускорения повторной компиляции таких приложений, как Wine или Proton-GE, можно использовать ccache.
Ccache — это кэш для компиляторов C/C++, совместимый с GCC и Clang, который ускоряет повторную компиляцию одного и того же кода. Если при сборке новой версии программы обнаруживаются идентичные блоки исходного кода, ccache использует уже скомпилированный код из кэша, что значительно ускоряет процесс компиляции.
Для его установки выполните следующие команды:
sudo pacman -S ccache
После установки его ещё нужно активировать в ваших настройках makepkg. Для этого отредактируем конфигурационный файл ~/.makepkg.conf
, добавив следующие конфигурации:
BUILDENV=(!distcc color ccache check !sign)
Это команда, используемая в твердотельных накопителях (SSD), которая позволяет операционной системе сообщить накопителю, какие блоки данных больше не нужны и могут быть очищены. Это помогает поддерживать производительность SSD, предотвращая замедление работы при записи данных.
Чтобы его включить, выполните следующие команды:
sudo systemctl enable fstrim.timersudo fstrim -v /
Out-Of-Memory Killer (OOM) — это процесс в Linux, который завершает приложение, чтобы спасти ядро от сбоя. Он жертвует приложением, чтобы сохранить работу ОС.
Для того, чтобы его включить, выполните команду:
sudo systemctl enable --now systemd-oomd
Ananicy CPP
Заголовок раздела «Ananicy CPP»Ananicy - это демон для распределения приоритета задач, который сильно повышает отклик системы. Мы будем устанавливать его форк Ananicy CPP, переписанный на C++ для увеличения производительности.
-
Установка Ananicy CPP
Клонирование и сборка пакета из AUR:
Окно терминала git clone https://aur.archlinux.org/ananicy-cpp.gitcd ananicy-cppmakepkg -sric -
Активация службы
Включите и запустите службу:
Окно терминала sudo systemctl enable --now ananicy-cpp -
Установка дополнительных правил (рекомендуется)
Установите расширенные правила для лучшей оптимизации:
Окно терминала git clone https://aur.archlinux.org/cachyos-ananicy-rules-git.gitcd cachyos-ananicy-rules-gitmakepkg -sric -
Перезапуск службы
Перезапустите службу для применения новых правил:
Окно терминала sudo systemctl restart ananicy-cpp
Haveged
Заголовок раздела «Haveged»Так-же могу посоветовать пакет Haveged. Это демон, что следит на энтропией системы. Необходим для ускорения запуска системы при высоких показателях systemd-analyze blame (Больше 1 секунды).
Для его установки выполните следующие команды:
sudo pacman -S havegedsudo systemctl enable haveged
Rng-tools
Заголовок раздела «Rng-tools»Rng-tools - демон, что также следит на энтропией системы, но, в отличие от haveged, через аппаратный таймер. Необходим для ускорения запуска системы при высоких показателях systemd-analyze blame (Больше 1 секунды).
Для его установки выполните следующие команды:
sudo pacman -S rng-toolssudo systemctl enable --now rngd
Cpu Power
Заголовок раздела «Cpu Power»По умолчанию процессор динамически меняет свою частоту, что правильно и даёт баланс между энергосбережением и производительностью. Однако для максимальной производительности можно закрепить режим максимальной частоты.
-
Установка утилиты CPUPower
Окно терминала sudo pacman -S cpupower -
Установка режима производительности
Окно терминала sudo cpupower frequency-set -g performance -
Настройка конфигурации
Откройте файл конфигурации:
Окно терминала sudo nano /etc/default/cpupowerНайдите и отредактируйте строку:
governor='performance' -
Активация службы
Окно терминала sudo systemctl enable cpupower
Auto CpuFreq
Заголовок раздела «Auto CpuFreq»Это утилита для автоматической оптимизации скорости работы процессора и энергопотребления. Она следит за состоянием аккумулятора, загрузкой процессора, температурой и общей нагрузкой системы, динамически переключаясь между режимами энергосбережения и высокой производительности.
-
Установка из AUR
Окно терминала yay -S auto-cpufreq -
Активация службы
Окно терминала sudo systemctl enable --now auto-cpufreq
Оптимизация загрузки ядра
Заголовок раздела «Оптимизация загрузки ядра»Вы можете немного изменить параметры загрузки ядра в 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 ..."
И наконец обновляем grub
sudo grub-mkconfig -o /boot/grub/grub.cfg
Хочешь ещё больше?
Заголовок раздела «Хочешь ещё больше?»Советую посетить данный репозиторий. В нём собраны все способы оптимизации Arch linux.