Всем привет! Наверно, многие пришли к линуксу, когда их старый компьютер или ноутбук не тянул, или плохо тянул операционные системы от Microsoft. Многие пробовали разные дистрибутивы — AntiX, MX Linux, Linux Lite, Lubuntu, Xubuntu, и многие другие. Но скорее всего, вы в итоге пришли к Arch Linux — по моему скромному мнению, одному из лучших дистрибутивов.


Арч минималистичный, его установка не так проста, особенно неопытному пользователю, но за это мы получаем широту действий — хочешь, можешь установить гном, а хочешь — хоть тайловый оконный менеджер.


Устанавливая какое-либо DE или WM, вы скорее всего установите минимальную комплектацию, а также из-за минималистичности арча — вы получаете систему, которая не будет есть много ресурсов вашего ПК, ибо не будет никаких лишних сервисов и демонов.


Но даже тогда, особенно на очень маломощных ПК, просто минимальной установки может не хватить. Тогда приходится браться за оптимизацию.


Внимание! Статья написана ТОЛЬКО для Arch Linux, методы оптимизации могут не работать на других дистрибутивах.

Я много пишу про Linux в своем канале и в недавнем опросе, большинство коллег, проголосовали за Arch, как за лучший дистрибутив для установки на слабые ПК (да и не только). Минималистичность, быстрота, отсутствие лишнего делают арч практически идеальной системой.


Да, можно конечно еще установить 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.


Установить эти два пакета можно двумя способами:


  1. Обычный (через 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

  1. Через 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 rhgb 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 ..."

  1. loglevel=2 — Устанавливает уровень журналирования ядра на 2, что означает, что будут выводиться только критические сообщения.
  2. nowatchdog — Отключает наблюдение за собакой (watchdog), что позволяет избежать перезагрузки системы в случае проблем с наблюдением.
  3. rhgb — Запускает Red Hat Graphical Boot, что обеспечивает графический интерфейс при загрузке системы.
  4. split_lock_detect=off — Отключает обнаружение разделенных блокировок, что может повысить производительность.
  5. processor.ignore_ppc=1 — Игнорирует предпочтения процессора (processor preferences), что может быть полезно для определенных конфигураций.
  6. migrations=off — Отключает миграции процессов между ядрами процессора.
  7. msr.allow_writes=on — Разрешает запись в регистры модели специфических регистров (Model Specific Registers).
  8. pcie_aspm=force — Принудительно включает энергосберегающий режим ASPM для устройств PCI Express.
  9. module.sig_unenforce — Отключает проверку подписей модулей ядра.
  10. cryptomgr.notests — Отключает тестирование криптографических алгоритмов.
  11. initcall_debug — Включает отладочную информацию для вызовов инициализации.
  12. no_timer_check — Отключает проверку таймеров.
  13. noreplace-smp — Предотвращает замену ядра SMP (Symmetric Multiprocessing).
  14. page_alloc.shuffle=1 — Включает перемешивание страниц в аллокаторе памяти.
  15. rcupdate.rcu_expedited=1 — Ускоряет выполнение RCU (Read-Copy Update).
  16. tsc=reliable — Устанавливает TSC (Time Stamp Counter) как надежный источник времени.

Небольшой совет


Если вы хотите больше скорости, можете установить вместо DE легкий WM.


Среди обыкновенных можно выделить openbox, icewm.


А также есть тайловые оконные менеджеры. Когда вы установите их, вы сможете стать членом касты тайломанов. И скорее всего начнете кастомизацию своей линукс-системы. Если вы хотите, могу сделать статью на тему кастомизации линукса от 0 до 1.


Среди тайловых оконных менеджеров можно выделить иксовые: DWM, bspwm, i3wm, а среди Wayland'овых — hyprland, sway. А также есть qtile — он написан на Python, и может запускать как и под X11, как и под Wayland.


Очистка системы


Советую также установить пакет pacman-contrib:


sudo pacman -S pacman-contrib

После этого можно очистить систему:


sudo pacman -Scc
sudo paccache -r
sudo paccache -rk1
sudo paccache -ruk0
sudo pacman -Rns $(pacman -Qtdq)
fc-cache -frv
sudo truncate -s 0 /var/log/pacman.log
sudo truncate -s 0 /var/log/pacman.log
rm -rf ~/.cache/
sudo rm -rf /tmp/*

Этим набором команды мы очищаем весь кэш, логи, пакеты-сироты.


Также можно использовать команду du для проверки места, которое занимает директория или файлы, либо установить утилиту ncdu, псевдографическая утилита, похожая на du.


Заключение


Используя весь этот пак оптимизаций, вы дадите буквально вторую жизнь своему старому устройству. Или просто ускорите работу вашего ПК, не прибегая к суровым методам (например установка Gentoo с оптимизационными флагами компилятора).


И специально для вас я разработал баш-скрипт, который автоматизирует оптимизацию, очистку системы.


Этот репозиторий есть по ссылке. Весь репозиторий и комментарии на английском.


   ____        __  _    ___              __   
  / __ \____  / /_(_)  /   |  __________/ /_  
 / / / / __ \/ __/ /  / /| | / ___/ ___/ __ \ 
/ /_/ / /_/ / /_/ /  / ___ |/ /  / /__/ / / / 
\____/ .___/\__/_/  /_/  |_/_/   \___/_/ /_/  
    /_/                                       
   >>>   A tool for fast optimization of Arch

А также у меня есть телеграм канал по линуксу куда я выкладываю свежие новости, гайды и статьи по теме линукса. Обещаю, будет интересно!


Источники


Комментарии (28)


  1. garwall
    13.05.2024 11:22
    +13

    ....И вся эта экономия на крокодилах оказывается бессмысленной после первого запуска браузера/приложения на электроне. (точнее, выигрыш составит ничтожную выгоду по сравнению с потреблением ресурсов вышеуказанным ПО)


    1. 13werwolf13
      13.05.2024 11:22
      +3

      истину глаголишь

      имею дома для дочери слабый недобук, ей для учёбы в начальной школе необходим. пробовал оптимизировать ОС долго и упорно, но результат всегда один - независимо от дистрибутива и DE всё одинаково после запуска гуглохрома (а кроме него некоторые из нужных ей сайтов нормально не работают нигде) всё становится одинаково.
      в итоге плюнул, накатил ей Leap 15.5 с кедами, без оптимизаций и ковыряний, ток обновляю раз в пару месяцев да думаю что надо бы всё же что-то помощнее ей купить..


    1. Wolfen113
      13.05.2024 11:22
      +4

      Когда то меня тоже вела дорога приключений, а потом мне прострелили колено.

      Я это к тому что подтверждаю ваши слова. Когда только пришла на линукс, по рекомендациям статей тоже старалась заниматься всякого рода оптимизациями. Искала дистрибутивы полегче, на системном диске старалась освободить каждый мегабайт. Завидовала тем у кого в системе не больше 800 пакетов. И тряслась за оперативку.

      Ныне же просто сижу и пользуюсь системой ни о чем не парясь пока не мешает. Системный раздел весит 80г потому что кеш пакетов, папка конфиг и стим с лутрисом за 7 лет разжирели? Ну и что, место еще есть, почищу как начнет мешать. О прожорливости браузере парится уже нет смысла ибо 32г оперативы. Так же и о своих 1400-1600 пакетах в системе на которые мой друг ругается мол много.

      Единственные оптимизации что ныне меня заботят это:

      1. Что бы был конструкторный дистрибутив как Арч. Ибо не люблю коробочные где предустановлено куча ненужного софта, который хлопотнее удалять, чем сразу как конструктор собрать систему только из того что тебе нужно. Лишний софт просто раздражает маяча перед глазами в меню и замедляет обновление системы ибо у меня медленный инет в 5мб/с, чем больше обновлений, чем дольше загрузка.

      2. Предпочитаю роллингрелизовые дистрибутивы. Ибо гонения майкрософт с одной системы на другую каждые несколько лет были одной из причин задуматься о линуксе. И на коробочных дитрибутивах переходы с версии на версию тоже напрягали, зачастую проходя плохо. Роллингрелизовый дистрибутив раз поставил и забыл до конца жизни. Всегда при этом имея самый свежий софт. Правда для ультро страрых ПК это наоборот может быть минусом. Другая причина предпочтения именно роллинг редких это свежайший софта. Начинала я с линукс минт и за годы что на нем провела все чаще сталкивалась с не работой чего либо из-за устаревших пакетов. А фиксов от разработчиков дистрибутива порой ждала по пол года, или годами нечего не менялось. Перейдя на Арч половина моих проблем с не работой или плохой работой чего либо отвалились сами собой. Да, в замен вылезли другие, новые проблемы но это уже другая история и они не так критичны того что мне мешало на минте, который с каждым годом все больше виндовс своими косяками напоминал.

      3. Ставлю и запускаю zram ибо он прилично "ускоряет-расширяет" оперативку что не раз выручало на старом ноутбуке и пк с 4-8 оперативы. Особенно во время работы с блендер3д. При этом уже давно не ставлю своп, ни в виде раздела, ни в виде файла, ибо на моей памяти ни разу не пригодился а место занимает. Так же больше не делаю хом и корень на отдельные разделы, хоть каждый второй гайд по установке линукса это рекомендует. Ибо на практике хом отдельным разделом мне не только ни разу не пригодился. Но и из-за этого я раз убила свой ссд не рассчитав что корню дала слишком мало памяти, а потом пыталась его неудачно расширить. Как правило при переустановке, из хома ценное это только папка конфиг и пару файлов которые проще отдельно забекапить нежели отдельный раздел содержать. В целом созданием множество разделов лучше не увлекаться.

      4. По возможности из аура ставлю софта поминемому. Ибо оттуда дольше установка и обновлений идёт, и зачастую пакеты устаревают и удаляются. Ну и чаще всего проблемы вылазят именно с пакетами из аур. Поэтому если программа есть в офф реп то это благо.

      5. Удобство установки и обновления программ. Не люблю блуждания по инету в поисках инсталятора, его скачивания а после кучу раз прожимать далее-ок. И так по сто раз. Или подключать репозитории потому что в системе программы старые или вовсе отсутвуют. Это банально все лишняя трата времени, особенно была во времена вин ХР и 7 которые каждый год быстро в негодность приходили и приходилось часто переустанавливать, после часами все ставить и налаживать. Это одна из причин за что мне понравился Арч. Банально для меня в этом плане yay + aur стали самым удобным вариантом установки и обновления программ. Даже граф установщик pamac не признаю, потому что он скорее больше систему засоряет чем облегчает работу с пакетами. Ибо там надо мышкой много лишних телодвижений делать напоминая о временнах "далее-ок", и порой тормозит и глючит. Пару команд в терминале на это проще и быстрее ввести.


      1. garwall
        13.05.2024 11:22
        +1

        я просто *цать лет назад поставил slackware, и пропал.


  1. Newpson
    13.05.2024 11:22
    +4

    Не хватает завершающего "до/после" :)

    несмотря на то, что я считаю эту оболочку довольно плохой, перегруженной и "bloat".

    libadwaita поверх gtk4 с кусочками gtk3, а кое-где и gtk2 (привет, GIMP), сегодня настолько же "bloat", насколько kde frameworks поверх Qt 6 (недавно был переход). Не буду оправдывать кеды, но они предоставляют огромное количество приложений, так что всё окружение можно выстроить без gtk и всё будет в едином стиле.


  1. theAvalanche
    13.05.2024 11:22
    +1

    grub в 21м веке в дистрибутиве с systemd? Это так чистим систему от лишнего? Репы Cachyos какие-то.... больше похоже на фанатский мануал. Для десктопов есть отличное ядро linux-zen, кого интресуют игры - там ещё пара ядер. Но не какое-то неизвестное, собранное на коленке для одного из дистрибутивов. Это ж надо искать, что за "оптимизации" они там волшебные применили, о которых никто не знает.

    В общем, больше подходит на пост в инстаграм лайков собрать, чем на что-то серьёзное. В след раз из "игровой" garuda linux вырвиглазную тему возьмите, без неё в 3 раза быстрее работать не будет.


    1. fshp
      13.05.2024 11:22
      +2

      "Слабые компьютеры" это обычно какие-то нетбуки с 1 гигом оперативки и атомом, который не имеет поддержи 64 битного режима и тем более uefi.

      Никаких вам там bootctl.


  1. artwin
    13.05.2024 11:22
    +2

    Норм материал. Только вот «до небес», это пожалуй про генту с монолитным ядром. А зачем в ядре все эти проверки выключать? Чтоб гном не тормозил? :-)


  1. AspisVipera
    13.05.2024 11:22
    +10

    С наблюдения за собакой посмеялся, правда не понял, шутка ли это или вы правда не понимаете что говорите и что вы делаете.

    Особенно хочу у вас узнать, понимаете ли вы что делают параметры загрузки ядра которые вы добавили? Зачем вы выключили миграцию процессов между ядрами и зачем вы включили Red Hat Graphical Boot и как RHGB ускоряет работу операционной системы?


  1. Johan_Palych
    13.05.2024 11:22
    +2

    Оптимизация значит?
    https://wiki.archlinux.org/title/Zram_(Русский)
    "Так как zswap включен по умолчанию, перед включением zram его стоит отключить, чтобы он не работал как кэш подкачки перед zram. Включение их обоих также приводит к отображению некорректной статистики в zramctl(8), и zram остаётся в основном неиспользуемым, потому что zswap перехватывает и сжимает страницы памяти до того как они попадут в zram..."
    https://wiki.archlinux.org/title/Zswap_(Русский)#Включение_и_выключение_zswap
    grep -R . /sys/module/zswap/parameters

    Вишенка:
    yes | yay -Scc
    yay -Scc --noconfirm
    yes | sudo pacman -Scc
    sudo pacman -Scc --noconfirm


  1. stvoid
    13.05.2024 11:22
    +2

    Ну, из полезного тут только параметры ядра в конце и то некоторые спорные, а многие не упомянуты.

    Полная строка GRUB_CMDLINE_LINUX:

    nowatchdog page_alloc.shuffle=1 split_lock_detect=off mitigations=off amd_pstate=passive tsc=reliable clocksource=tsc drm_kms_helper.drm_fbdev_overalloc=300
    

    UPD: решил дополнить своим списком параметров

    • nowatchdog - отключает сторожевые таймеры

    • mitigations=off - отключение патчей безопасностей ядра, при сборке ядра можно настроить детальнее, короче на своё усмотрение

    • amd_pstate=passive - (см. аналог для intel) мне больше нравится как работает schedutil, можно переставить на active и у вас останется 2 планировщика - powersave и perfomance. В режиме active планировщик perfomance не жарит всегда на 100%, но предпочитает сильно более агресивный режим и греет процессор больше. Для стационарного ПК думаю это лучший выбор, если у вас ноутбук то советую оставить passive + schedutil

    • drm_kms_helper.drm_fbdev_overalloc=300 - тройная буферизация. Тут вообще спорно, некоторые игры показывают лучшую производительность без неё, т.е. выставить 100. В данный момент у меня стоит 100, но можете выставить 300 и посмотреть разные игры. Оно может вести себя сильно по разному при включении или отключении вертикальной синхронизации, а так же установке лимита кадров или без.

    Ну и некоторые параметры лежат в /etc/sysctl.conf:

    vm.max_map_count=2147483642
    vm.overcommit_memory=1
    net.core.default_qdisc=fq
    net.ipv4.tcp_congestion_control=bbr
    

    Есть рекомендации что-то менять с размерами пакетов и т.п. но как по мне это слишком тяжело заметить и протестировать, так что тут совсем минимум.


  1. ParaMara
    13.05.2024 11:22
    +2

    Про чушики с zram уже откомментировали. Могу добавочно посоветовать увеличить максимальный процент для zswap, на четырёх гигах - примерно до 60.

    Писать статьи такого рода про Arch считаю методической ошибкой, в вики всё изложено лучше, а советовать человеку, той вики пользоваться не умеющему, Arch - медвежья услуга. Это не значит, что про Arch вообще нечего писать. Можно сравнить деривативы, можно обсудить состояние Wayland, можно писать про Линукс вообще с примерами на Arch…

    Оптимизация в наше время возможна тремя путями - не запускать одновременно приложения на разных стеках, не запускать тяжёлые приложения вообще, и не запускать ненужные фоновые процессы. По первому пункту - таки KDE, свопа от неё вроде немного больше, а по ощущениям работает лучше. По второму - никакого Хрома, Godot вместо Unity, helix вместо VS Code, ну и так далее. По третьему - отключите индексацию файлов в KDE, других мешающих процессов пока не встречал.

    Кому оптимизации всё ещё мало - тем на Gentoo.


    1. Caefah
      13.05.2024 11:22
      +2

      Писать статьи такого рода про Arch считаю методической ошибкой

      Человек не пожалел временем поделиться знаниями. Зачем сразу клеймить такой труд "ошибкой"?! Пусть лично для Вас ничего нового в статье нет, но материал годный ходя бы с целью популяризации Arch. Вдруг кто попробует после прочтения и ему понравится. На фоне превратившегося в размазанную какашку убунты дистрибутив Arch сейчас выглядит сложнопроедаемой, но заманчивой конфеткой.


  1. Shaman_RSHU
    13.05.2024 11:22
    +1

    На ArchLinux сижу с 2012.08.04. Скажу, что на десктопе всё это настраивать не придаст сильной производительности, но зато отнимет время на тетирование и исправление ошибок (хорошо, когда оно есть - помню ночи с gentoo в универе). Поэтому сейчас работаю в Gnome когда нужно что-то кому-то показать, чтобы не пугать :) И i3wm, когда нужно просто работать.

    А вообще все эти оптимизации есть и в репозитоиии на русском: https://github.com/mikheyevoleg/archlinuxoptimization


  1. Katrovsky
    13.05.2024 11:22
    +8

    Простите, если следующие слова будут восприняты слишком резко, но статья ужасна и даже вредна для тех, кто изучает Arch. Если Arch Wiki объясняет, что и зачем совершать, в каких случаях и где это уместно, то здесь практически весь текст состоит из указаний «здесь сделай это, дальше сделай это, теперь делай это».

    Это не оптимизация, а приведение системы к конкретному состоянию. Зачем? Для чего? Кому это нужно? Видимо, лишь тому, кто изучает Arch.

    Тем же, кто уже читал Arch Wiki и умеет гуглить, статья вряд ли будет полезна.


  1. ainoneko
    13.05.2024 11:22
    +3

    Отключает наблюдение за собакой (watchdog)

    Серьёзно?


    1. superhabr
      13.05.2024 11:22
      +1

      migrations=off — Отключает миграции процессов между ядрами процессора.

      верный параметр называется mitigations и переводится как "меры по смягчению последствий", а не "миграции" (https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html)

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


    1. Golangcoder Автор
      13.05.2024 11:22

      Извинюясь, смотрящей собакой. Watchdog это небольшой сервис для того, чтобы знать какие действия в системе


  1. RedEyedAnonymous
    13.05.2024 11:22
    +1

    получаем широту действий — хочешь, можешь установить гном, а хочешь — хоть тайловый оконный менеджер

    А что, в других дистрибутивах DE гвоздями приколочены?


  1. Caefah
    13.05.2024 11:22
    +1

    Спасибо за статью! Плюсую в карму. Рекомендую больше осветить работу с AUR для установки приложений.

    Давно хочу попробовать Arch на десктопе. Есть вопрос в котором я так и не смог разобраться самостоятельно. Можно ли все приложения пересобирать с исходников установив при этом желаемый уровень оптимизации для компилятора. Например, в Gentoo я могу выставить флаг -O3 и все пакеты при обновлении/установке будут собираться с этим флагом. Arch ставит в систему уже собранные на стороне бинарные пакеты. Можно ли это поменять и собирать пакеты из сорцов непосредственно при обновлении или установке через pacman?



    1. overmind88
      13.05.2024 11:22

      Нет, арч не source-based. Конечно, можно пересобрать каждый пакет с нужными оптимизациями, но централизованного управления этим нет. С тем же успехом можно и в убунте пакеты пересобирать


      1. Caefah
        13.05.2024 11:22

        Очень жаль, думал, это будет так же просто как с Gentoo. А убунта... Она сдохла и завонялась. Надо определяться с альтернативой. Вот и смотрю на арч.


        1. overmind88
          13.05.2024 11:22
          +1

          Можно начать с Manjaro


  1. Mitai
    13.05.2024 11:22
    +1

    дружище а можешь рассказать как настроить автоперехд в режим ожидания при использовании арча без DE если я просто введу команду `sudo systemctl suspend` то комп уходит в режим ожидания но настроить что бы он делал это автоматом при простое не могу...


    1. garwall
      13.05.2024 11:22

      можешь попробовать https://github.com/rodlie/powerkit


    1. kmeaw
      13.05.2024 11:22
      +1

      Для этого нужна программа, которая будет автоматизировать этот процесс. Для X11 есть xidlehook, для Wayland - swayidle. С их помощью можно запустить любую другую программу, если пользователь бейдействовал заданное количество секунд, причём xidlehook умеет не запускать таймер, если пользователь смотрит видео на полный экран.


  1. A384
    13.05.2024 11:22

    А почему утилита tuned от RedHat, автоматом выставляет нужный swapiness, оптимизирует электропитание через cpupower и куча параметров тюнит системных параметров.Ну ещё есть профили и можно свои профили создавать. В AUR-репозиториях есть утилита и в других дистрибутивах есть. По умолчанию в OpenSuse установлен. И самое странное в российском дистрибутиве RedOS установлен и включён.