Перейти к содержимому

Советы по оптимизации системы

Для того, чтобы узнать, - какой процесс больше всего тормозит запуск системы, выполните команду systemd-analyze blame

Дайте угадаю, NetworkManager-wait-online оказался предателем, и отнимает от запуска вашей системы ~4 секунды? Не беда. Можете просто отключить его)

Окно терминала
sudo systemctl mask NetworkManager-wait-online.service

Это начальное загрузочное окружение, которое дополняет образ ядра Linux. Для экономии места оно представляется в виде саморасжимаемого архива. В Arch Linux утилита mkinitcpio создает initramfs и по умолчанию использует алгоритм сжатия zstd. Для ускорения загрузки лучше применить алгоритм lz4.

  1. Изменение алгоритма сжатия

    Отредактируйте файл /etc/mkinitcpio.conf, добавив следующие строки:

    COMPRESSION="lz4"
    COMPRESSION_OPTIONS=(-9)
  2. Замена хуков на systemd (опционально)

    Для дополнительного ускорения замените хуки base и udev на systemd:

    HOOKS=(systemd autodetect microcode modconf kms keyboard sd-vconsole block filesystems fsck)
  3. Обновление образов 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.timer
sudo fstrim -v /

Out-Of-Memory Killer (OOM) — это процесс в Linux, который завершает приложение, чтобы спасти ядро от сбоя. Он жертвует приложением, чтобы сохранить работу ОС.

Для того, чтобы его включить, выполните команду:

Окно терминала
sudo systemctl enable --now systemd-oomd

Ananicy - это демон для распределения приоритета задач, который сильно повышает отклик системы. Мы будем устанавливать его форк Ananicy CPP, переписанный на C++ для увеличения производительности.

  1. Установка Ananicy CPP

    Клонирование и сборка пакета из AUR:

    Окно терминала
    git clone https://aur.archlinux.org/ananicy-cpp.git
    cd ananicy-cpp
    makepkg -sric
  2. Активация службы

    Включите и запустите службу:

    Окно терминала
    sudo systemctl enable --now ananicy-cpp
  3. Установка дополнительных правил (рекомендуется)

    Установите расширенные правила для лучшей оптимизации:

    Окно терминала
    git clone https://aur.archlinux.org/cachyos-ananicy-rules-git.git
    cd cachyos-ananicy-rules-git
    makepkg -sric
  4. Перезапуск службы

    Перезапустите службу для применения новых правил:

    Окно терминала
    sudo systemctl restart ananicy-cpp

Так-же могу посоветовать пакет Haveged. Это демон, что следит на энтропией системы. Необходим для ускорения запуска системы при высоких показателях systemd-analyze blame (Больше 1 секунды).

Для его установки выполните следующие команды:

Окно терминала
sudo pacman -S haveged
sudo systemctl enable haveged

Rng-tools - демон, что также следит на энтропией системы, но, в отличие от haveged, через аппаратный таймер. Необходим для ускорения запуска системы при высоких показателях systemd-analyze blame (Больше 1 секунды).

Для его установки выполните следующие команды:

Окно терминала
sudo pacman -S rng-tools
sudo systemctl enable --now rngd

По умолчанию процессор динамически меняет свою частоту, что правильно и даёт баланс между энергосбережением и производительностью. Однако для максимальной производительности можно закрепить режим максимальной частоты.

  1. Установка утилиты CPUPower

    Окно терминала
    sudo pacman -S cpupower
  2. Установка режима производительности

    Окно терминала
    sudo cpupower frequency-set -g performance
  3. Настройка конфигурации

    Откройте файл конфигурации:

    Окно терминала
    sudo nano /etc/default/cpupower

    Найдите и отредактируйте строку:

    governor='performance'
  4. Активация службы

    Окно терминала
    sudo systemctl enable cpupower

Это утилита для автоматической оптимизации скорости работы процессора и энергопотребления. Она следит за состоянием аккумулятора, загрузкой процессора, температурой и общей нагрузкой системы, динамически переключаясь между режимами энергосбережения и высокой производительности.

  1. Установка из AUR

    Окно терминала
    yay -S auto-cpufreq
  2. Активация службы

    Окно терминала
    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.