12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163 |
- .. ARU (c) 2018 - 2022, Pavel Priluckiy, Vasiliy Stelmachenok and contributors
- ARU is licensed under a
- Creative Commons Attribution-ShareAlike 4.0 International License.
- You should have received a copy of the license along with this
- work. If not, see <https://creativecommons.org/licenses/by-sa/4.0/>.
- .. _generic-system-acceleration:
- ***************************
- Базовое ускорение системы
- ***************************
- Переходя к базовой оптимизации системы мне сто́ит напомнить, что чистый
- Arch Linux - это фундамент, и требуется уйма надстроек для нормальной
- работы системы. Установить компоненты, которые будут отвечать за
- электропитание, чистку, оптимизацию и тому подобные вещи, что и
- описывается в данном разделе.
- .. index:: makepkg-conf, native-compilation, flags, lto
- .. _makepkg-conf:
- ======================
- Настройка makepkg.conf
- ======================
- Прежде чем приступать к сборке пакетов, мы должны изменить так
- называемые флаги компиляции, что являются указателями для компилятора,
- какие инструкции и оптимизации использовать при сборке программ.
- Для этого создадим пользовательский конфиг ``~/.makepkg.conf`` в домашней
- директории, чтобы переопределить системные настройки:
- .. code-block:: shell
- :caption: ``nano ~/.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)"
- .. note:: Где "-O2" - **Это не нуль/ноль**
- Данные флаги компилятора выжимают максимум производительности при
- компиляции, но могут вызывать ошибки сборки в очень редких
- приложениях. Если такое случится, то отключите параметр ‘lto’ в строке
- ``options`` добавив перед ним символ восклицательного знака !
- (*"!lto"*).
- .. index:: makepkg, tmpfs, native-compilation
- .. _makepkg_tmpfs:
- ---------------------------------------
- Использование tmpfs для сборки в ОЗУ
- ---------------------------------------
- Во время сборки программ компилируются множество временных
- промежуточных файлов и записываются на диск (HDD/SSD) для последующей
- компоновки в исполняемый файл или библиотеку. Для ускорения процесса
- сборки пакетов можно использовать вместо HDD/SSD - оперативную память,
- а точнее *tmpfs*. Поскольку ОЗУ значительно быстрее любого HDD или
- SSD, то сборка происходит быстрее. Помимо этого уменьшается нагрузка
- на систему ввода-вывода, и как следствие меньше изнашивается диск.
- Использовать tmpfs для makepkg можно несколькими способами:
- - Непосредственно указывать переменную перед сборкой::
-
- BUILDDIR=/tmp/makepkg makepkg -sric
- - Для сборки всего - задать параметр (раскомментировать в файле
- ``/etc/makepkg.conf``) ``BUILDDIR`` для использования директории
- ``/tmp``::
- BUILDDIR=/tmp/makepkg
- - Создать отдельную директорию *tmpfs* заданного размера:
-
- - Необходимо добавить в ``/etc/fstab`` директорию для монтирования
- *tmpfs*, указав путь и максимальный объём директории, которая
- может расширяться при работе *tmpfs* (учтите что *tmpfs*
- использует ОЗУ, поэтому внимательно подходите к вопросу
- выделяемого объема, он не должен превышать общий объем доступной
- памяти, несмотря на то, что изначально *tmpfs* ничего не
- занимает), например::
- tmpfs /var/tmp/makepkg tmpfs rw,nodev,nosuid,size=16G 0 0
- - Далее, как и в предыдущем случае, указать ``BUILDDIR`` в
- ``/etc/makepkg.conf``, но уже с путем к директории указанной в
- *fstab*::
-
- BUILDDIR=/var/tmp/makepkg
- .. attention:: На системах с небольшим количеством ОЗУ (например 4 ГБ
- и менее) *tmpfs* может негативно сказаться на сборке тяжёлых
- пакетов, что может привести к недостатку ОЗУ для сборки.
- .. note:: Можно указать параметр PKGDEST для определения
- директории собранного пакета.
- Количество доступного и используемого места в *tmpfs* можно
- посмотреть::
- df -h | grep tmpfs
- .. index:: makepkg, ccache, native-compilation
- .. _enabling_ccache:
- -----------------------
- Включение ccache
- -----------------------
- В Linux системах есть не так много программ, сборка которых может
- занять больше двух часов, но они все таки есть. Потому, было бы
- неплохо ускорить повторную компиляцию таких программ как
- Wine/Proton-GE и т.д.
- ccache - это кэш для компиляторов C/C++, в частности совместимый с
- компиляторами GCC/Clang, цель которого состоит в ускорении повторного
- процесса компиляции одного и того же кода. Это значит, что если при
- сборке программы новой версии, будут замечены полностью идентичные
- блоки исходного кода в сравнении с его старой версией, то компиляция
- этих исходных текстов производиться не будет. Вместо этого, уже
- готовый, скомпилированный код старой версии будет вынут из кэша
- ccache. За счёт этого и достигается многократное ускорение процесса
- компиляции.
- **Установка** ::
- sudo pacman -S ccache
- После установки его ещё нужно активировать в ваших настройках makepkg.
- Для этого отредактируем конфигурационный файл
- .. code-block:: shell
- :caption: ``nano ~/.makepkg.conf``
- BUILDENV=(!distcc color ccache check !sign)
- После этого повторная пересборка желаемых программ и их обновление
- должны значительно ускориться.
- .. attention:: ccache может ломать сборку некоторых программ, поэтому
- будьте осторожны с его применением.
- .. index:: installation, ananicy, zram, nohang, trim
- .. _daemons-and-services:
- ======================================
- Установка полезных служб и демонов
- ======================================
- .. index:: zram, swap
- .. _zram-generator:
- -----------------
- zram-generator
- -----------------
- `zram-generator
- <https://aur.archlinux.org/packages/zram-generator/>`__ — демон для
- создания блочных устройств ZRAM. ZRAM - это альтернативный механизм
- подкачки в ядре Linux, который позволяет избавиться от обычной
- подкачки на диске и сжимать неиспользуемые данные прямо внутри памяти
- ресурсами CPU. Больше подробностей о том, как именно работает подкачка
- и в частности ZRAM вы можете в разделе :ref:`kernel-tuning`. Установка
- ``zram-generator`` выполняется всего парой команд::
- sudo pacman -S zram-generator
- sudo systemctl start systemd-zram-setup@zram0.service
- Имеет смысл выполнить также небольшую дополнительную настройку
- параметров ZRAM:
- .. code-block:: shell
- :caption: ``sudo nano /etc/systemd/zram-generator.conf``
- [zram0]
- zram-size = ram
- compression-algorithm = zstd
- swap-priority = 100
- fs-type = swap
- Здесь мы указываем размер ZRAM равным количеству оперативной памяти, а
- также алгоритм сжатия zstd. Это позволит экономить больше памяти, так
- как по заверениям разработчиков, эффективность сжатия в среднем равна
- 1:3, что позволяет хранить внутри ZRAM объем данных больший, чем вы в
- принципе можете уместить в ОЗУ.
- .. warning:: Во избежание конфликтов, после установки zram обязательно
- отключите zswap через добавление параметра ядра ``zswap.enabled=0``.
- .. note:: Как уже было сказано ранее, сжатие страниц в памяти
- осуществляется ресурсами CPU, но если он у вас достаточно слабый,
- то вы можете оказаться чувствительными к задержкам на
- распаковку/сжатие большого объема страниц. В этом случае имеет
- смысл либо вернуться к использованию обычного свопа, либо
- использовать менее ресурсоемкий алгоритм сжатия
- (``compression-algorithm``) как ``lzo``.
- .. index:: oom, systemd
- .. _oom_killer:
- ---------------
- systemd-oomd
- ---------------
- OOM киллером называют специальный демон, который предотвращает
- возникновение так называемых OOM (Out-Of-Memory) ситуаций. Если по
- простому, то он просто убивает самый "жирный" процесс в группе
- процессов (cgroup) прежде, чем он забьет всю память и ваш компьютер
- зависнет. В ядре Linux уже есть встроенный OOM киллер, но он
- отличается медленной скоростью реакции, поэтому лучше использовать OOM
- киллер в пространстве пользователя. Система инициализации systemd
- предлагает встроенный OOM киллер - ``systemd-oomd``, который
- отличается малым потреблением ресурсом в фоне и не создает нагрузки на
- процессор, которая свойственна другим OOM киллерам из-за отслеживания
- потребления памяти процессов без использования механизма PSI,
- предлагаемым ядром Linux. Поэтому именно его и рекомендуется
- использовать. Включить его можно при помощи данной команды::
- sudo systemctl enable --now systemd-oomd
- .. index:: ananicy, cpu, io, renice
- .. _ananicy_cpp:
- --------------
- Ananicy CPP
- --------------
- `Ananicy CPP <https://gitlab.com/ananicy-cpp/ananicy-cpp>`__ — это
- форк одноименного демона, распределяющий приоритет задач. Его
- установка очень сильно повышает отклик системы. В отличии от
- оригинального Ananicy, данный форк переписан полностью на C++, из-за
- чего достигается прирост в скорости работы. ::
- git clone https://aur.archlinux.org/ananicy-cpp.git # Скачивание исходников.
- cd ananicy-cpp # Переход в ananicy-cpp.
- makepkg -sric # Сборка и установка.
- sudo systemctl enable --now ananicy-cpp # Включаем службу.
-
- # Далее описывается установка дополнительных правил по перераспределению приоритетов процессов
- git clone https://aur.archlinux.org/cachyos-ananicy-rules-git.git
- cd cachyos-ananicy-rules-git
- makepkg -sric
- sudo systemctl restart ananicy-cpp
- .. index:: ssd, trim, systemd
- .. _trim:
- -----
- TRIM
- -----
- `TRIM
- <https://ru.wikipedia.org/wiki/Trim_(команда_для_накопителей)>`__ -
- это встроенная команда контроллера для очищения уже неиспользуемых
- ячеек на твердотельном накопителе. Её очень полезно периодически
- выполнять с целью профилактики SSD. Чтобы это происходило
- автоматически раз в неделю рекомендуется включить уже готовую службу::
- sudo systemctl enable fstrim.timer
- Если по каким-то причинам вы не используете systemd или вам нужно
- выполнить TRIM прямо сейчас воспользуйтесь одноименной командой
- ``fstrim``::
- sudo fstrim -v /
- .. warning:: Если вы используйте файловую систему Btrfs и имеете
- версию ядра 6.2 и выше, то выполнять включение службы для
- осуществления периодическего выполнения команды TRIM - не нужно, т.
- к. Btrfs сам выполняет её в асинхронном режиме.
- .. index:: pacman, cache, cleaner
- .. _pacman_cleaner:
- -----------------------------------
- Автоматическая очистка кэша pacman
- -----------------------------------
- Кэш пакетов pacman имеет плохое свойство забиваться и со временем
- занимает много места на диске. Чтобы этого не происходило, создадим
- небольшой демон, который будет автоматически его очищать, например,
- каждую неделю. В этом нам могут встроенные средства systemd для
- создания таймеров - специальных служб, которые устанавливают
- периодичность выполнения того или иного события, например, запуска
- другой службы (в нашем случае службы очистки кэша). Напишем таймер,
- выполняющий команду ``pacman -Scc`` регулярно раз в неделю с периодом
- проверки времени один раз в час. Для этого сначала создадим службу,
- которая будет регулярно выполняться, назовем её
- ``pacman-cleaner.service``:
- .. code-block:: shell
- :caption: ``/etc/systemd/system/pacman-cleaner.service``
- [Unit]
- Description=Cleans pacman cache
- [Service]
- Type=oneshot
- ExecStart=/usr/bin/pacman -Scc --noconfirm
- [Install]
- WantedBy=multi-user.target
- И для этой службы создадим соответствующий таймер, который будет активировать её
- выполенение каждую неделю:
- .. code-block:: shell
- :caption: ``/etc/systemd/system/pacman-cleaner.timer``
- [Unit]
- Description=Run clean of pacman cache every week
- [Timer]
- OnCalendar=weekly
- AccuracySec=1h
- Persistent=true
- [Install]
- WantedBy=timers.target
- Не забываем включить этот самый таймер::
- sudo systemctl enable --now pacman-cleaner.timer
- .. index:: irq, kernel, latency
- .. _irqbalance:
- -------------
- irqbalance
- -------------
- `irqbalance <https://github.com/Irqbalance/irqbalance>`__ - это демон,
- что автоматически балансирует обработку прерываний по ядрам
- процессора. ::
- sudo pacman -S irqbalance
- sudo systemctl enable --now irqbalance
- .. index:: systemd, disabling, services, gsd, cinnamon
- .. _disabling-unnecessary-services:
- =========================
- Отключение лишних служб
- =========================
- Мы разобрались с установкой и включением полезных служб, теперь
- неплохо было бы отключить все лишнее, что есть в системе. Для этого
- прежде всего нужно проанализировать какие службы тормозят запуск
- системы при помощи следующей команды: ``systemd-analyze blame`` - она
- отсортирует все службы по скорости их загрузки. Не следует торопиться
- и отключать все подряд, нужно внимательно вчитываться в описание
- каждой службы. Стоит обратить свое внимание также на пользовательские
- службы рабочих окружений KDE Plasma, GNOME и Cinnamon (если вы их не
- используете, то можете просто пропустить разделы связанные с ними).
- .. index:: services, daemons, file-indexing, tracker3
- .. _disabling-file-indexing:
- -----------------------------
- Службы индексирования файлов
- -----------------------------
- Многие пользователи Windows знают о службе индексирования поиска,
- которая занимается тем, что в фоновом режиме проходит по всей файловой
- системе в поисках новых файлов или каталогов, чтобы внести их в
- собственную базу, которая будет использована для ускорения встроенного
- поиска или поиска в файловом менеджере. На первый взгляд все звучит
- хорошо, но на деле процессы всех подобных служб являются очень
- прожорливыми и часто создают чрезмерную нагрузку на диск.
- В Linux подобные службы есть только у рабочих окружений GNOME и KDE
- Plasma. В KDE Plasma встроенным файловым индексатором является Baloo,
- который отличается своей склонностью часто "подтекать" с точки зрения
- потребления памяти, а в GNOME есть Tracker 3, который хоть и менее
- прожорливый по сравнению с аналогом от KDE, но все ещё потребляет не
- мало ресурсов.
- Так как отключение всех подобных служб может положительно влиять на
- жизненный цикл вашего носителя, то рекомендуется выполнить это сразу
- после установки в зависимости от вашего рабочего окружения:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask tracker-extract-3 tracker-miner-fs-3 \
- tracker-miner-fs-control-3 tracker-miner-rss-3 tracker-writeback-3 \
- tracker-xdg-portal-3
- rm -rf ~/.cache/tracker ~/.local/share/tracker
- .. tab-item:: KDE Plasma
- ::
- balooctl6 suspend
- balooctl6 disable
- balooctl6 purge
- .. warning:: Обратите внимание, что после отключения встроенный поиск
- в GNOME и KDE Plasma может работать немного медленнее.
- .. index:: services, gnome, cinnamon, gsd, csd
- .. _disabling_gcsd_services:
- ------------------------------------------------
- Отключение пользовательских служб GNOME/Cinnamon
- ------------------------------------------------
- GSD (gnome-settings-daemon) - это, как следует из названия, службы
- настройки GNOME и связанных приложений. Если отойти от строгого
- определения, то это просто службы-настройки на все случаи жизни,
- которые просто висят у вас в оперативной памяти в ожидании когда вам,
- или другому приложению, к примеру, понадобиться настроить или
- интегрировать поддержку планшета Wacom в рабочее окружение, или для
- уведомления вас о различных событиях, таких как недостаточное место на
- диске или начале печати, а также для применения изменений совершенных
- в настройках GNOME на лету. Так как другое рабочее окружение - Cinnamon,
- является форком GNOME 3, то оно также имеет собственные службы
- настройки, называемые CSD службами, и большая часть из них являются
- "близницами" тех служб, которые есть в GNOME, поэтому их функционал во
- многом совпадает. Все команды по отключению служб с одинаковым
- назначением в обоих окружения будут продублированы.
- Служба интеграции рабочего окружения с графическим планшетом Wacom.
- Позволяет настраивать яркость планшета средствами окружения (GNOME или
- Cinnamon). Если у вас такого нет - смело отключайте:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask org.gnome.SettingsDaemon.Wacom.service
- .. tab-item:: Cinnamon
- ::
- cp -v /etc/xdg/autostart/cinnamon-settings-daemon-wacom.desktop ~/.config/autostart
- echo "Hidden=true" >> ~/.config/autostart/cinnamon-settings-daemon-wacom.desktop
- Служба уведомления о начале печати. Если нет принтера или
- вам просто не нужны эти постоянные уведомления - отключаем:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask org.gnome.SettingsDaemon.PrintNotifications.service
- .. tab-item:: Cinnamon
- ::
- cp -v /etc/xdg/autostart/cinnamon-settings-daemon-print-notifications.desktop ~/.config/autostart
- echo "Hidden=true" >> ~/.config/autostart/cinnamon-settings-daemon-print-notifications.desktop
- Службы управления цветовыми профилями дисплея и принтеров. Если вы
- отключите данную службу, то не будет работать тёплый режим экрана
- (Системный аналог Redshift):
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask org.gnome.SettingsDaemon.Color.service
- .. tab-item:: Cinnamon
- ::
- cp -v /etc/xdg/autostart/cinnamon-settings-daemon-color.desktop ~/.config/autostart
- echo "Hidden=true" >> ~/.config/autostart/cinnamon-settings-daemon-color.desktop
- Отключение службы управления специальными возможностями системы:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask org.gnome.SettingsDaemon.A11ySettings.service
- .. tab-item:: Cinnamon
- ::
- cp -v /etc/xdg/autostart/cinnamon-settings-daemon-a11y-*.desktop ~/.config/autostart
- echo "Hidden=true" >> ~/.config/autostart/cinnamon-settings-daemon-a11y-*.desktop
- .. attention:: Не отключать данную службу людям с ограниченными
- возможностями (инвалидам)!
- Службы управления беспроводными интернет-подключениями и Bluetooth. Не
- рекомендуется отключать для ноутбуков с активным использованием Wi-Fi
- и Bluetooth, но если вы используете настольный ПК без использования
- беспроводных технологий, то смело отключайте:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask org.gnome.SettingsDaemon.Wwan.service
- systemctl --user mask org.gnome.SettingsDaemon.Rfkill.service
- .. tab-item:: Cinnamon
- ::
- cp -v /etc/xdg/autostart/cinnamon-settings-daemon-rfkill.desktop ~/.config/autostart
- echo "Hidden=true" >> ~/.config/autostart/cinnamon-settings-daemon-rfkill.desktop
- Отключение службы защиты от неавторизованных USB устройств при
- блокировке экрана:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask org.gnome.SettingsDaemon.UsbProtection.service
- .. note:: Данная служба может быть полезна если у вас ноутбук и вы
- часто посещаете вместе ним общественные места.
- Службу для автоматической блокировки экрана. Можете отключить по
- собственному желанию:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask org.gnome.SettingsDaemon.ScreensaverProxy.service
- .. tab-item:: Cinnamon
- ::
- cp -v /etc/xdg/autostart/cinnamon-settings-daemon-screensaver-proxy.desktop ~/.config/autostart
- echo "Hidden=true" >> ~/.config/autostart/cinnamon-settings-daemon-screensaver-proxy.desktop
- Служба для автоматического управления общим доступом к файлам и
- директориям. Если никогда не пользовались, можете отключить:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask org.gnome.SettingsDaemon.Sharing.service
- .. note:: Данная служба есть только в окружении GNOME.
- Служба интеграции рабочего окружения с карт-ридером. Если у вас
- карт-ридера нет, то смело отключайте:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask org.gnome.SettingsDaemon.Smartcard.service
- .. tab-item:: Cinnamon
- ::
- cp -v /etc/xdg/autostart/cinnamon-settings-daemon-smartcard.desktop ~/.config/autostart
- echo "Hidden=true" >> cinnamon-settings-daemon-smartcard.desktop
- Служба автоматического оповещения вас о недостаточном количестве
- свободного места на диске. Если вы делаете это самостоятельно при
- помощи специальных средств, как например Baobab, то можно отключить
- данную службу:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask org.gnome.SettingsDaemon.Housekeeping.service
- .. tab-item:: Cinnamon
- ::
- cp -v /etc/xdg/autostart/cinnamon-settings-daemon-housekeeping.desktop ~/.config/autostart
- echo "Hidden=true" >> cinnamon-settings-daemon-housekeeping.desktop
- Служба управления питанием и функциями энергосбережения. Рекомендуется
- оставить эту службу включенной если у вас ноутбук, т. к. без неё не
- будет работать регулирование яркости средствами рабочего окружения и
- управление сном, но можете отключить, если у вас настольный ПК:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user mask org.gnome.SettingsDaemon.Power.service
- .. tab-item:: Cinnamon
- ::
- cp -v /etc/xdg/autostart/cinnamon-settings-daemon-power.desktop ~/.config/autostart
- echo "Hidden=true" >> cinnamon-settings-daemon-power.desktop
- Служба интеграции работы буфера обмена c Cinnamon. Если вы никогда не
- пользовались виджетом истории буфера обмена в трее, то можете
- отключить данную службу:
- .. tab-set::
- .. tab-item:: Cinnamon
- ::
- cp -v /etc/xdg/autostart/cinnamon-settings-daemon-clipboard.desktop ~/.config/autostart
- echo "Hidden=true" >> cinnamon-settings-daemon-clipboard.desktop
- .. note:: Данная служба есть только в окружении Cinnamon.
- Служба для автоматического подстраивания интерфейса Cinnamon при
- повороте дисплея. Если у вас нет сенсорного экрана или поддержки
- переворота дисплея - смело отключайте:
- .. tab-set::
- .. tab-item:: Cinnamon
- ::
- cp -v /etc/xdg/autostart/cinnamon-settings-daemon-orientation.desktop ~/.config/autostart
- echo "Hidden=true" >> cinnamon-settings-daemon-orientation.desktop
- .. note:: Данная служба есть только в окружении Cinnamon.
- Если после отключения какой-либо из вышеперечисленных служб что-то
- пошло не так, или просто какую-либо из них понадобилось снова
- включить, то выполните следующую команду в зависимости от
- используемого рабочего окружения предварительно подставив
- имя в неё нужной службы:
- .. tab-set::
- .. tab-item:: GNOME
- ::
- systemctl --user unmask --now СЛУЖБА
- .. tab-item:: Cinnamon
- ::
- rm ~/.config/autostart/cinnamon-settings-daemon-СЛУЖБА.desktop
- Служба вернется в строй после перезагрузки рабочего окружения.
- .. index:: service, daemons, plasma
- .. _disabling-plasma-daemons:
- ---------------------------------
- Отключение ненужных служб Plasma
- ---------------------------------
- По аналогии с GNOME, у Plasma тоже есть свои службы настройки, которые
- хоть и гораздо менее требовательны к ресурсам. Тем не менее, это по
- прежнему солянка из различных процессов, которые вам далеко не всегда
- пригодятся, а отключая ненужные из них вы можете чуть снизить
- потребление оперативной памяти вашей оболочкой, т.к. по умолчанию все
- службы включены.
- Настройка служб происходит в графических настройках Plasma, в разделе
- "*Запуск и завершение*" -> *"Управление службами"*
- .. image:: https://codeberg.org/ventureo/ARU/raw/branch/main/archive/DE-Optimizations/images/image12.png
- .. list-table:: Список служб рекомендуемых к отключению
- :widths: 25 75
- :header-rows: 1
- * - Название службы
- - Описание
- * - Запуск системного монитора
- - Отслеживает нажатие клавиш Ctrl+Esc для запуска системного
- монитора. Не думаю, кто-либо активно этим пользовался ранее,
- поэтому лучше отключить.
- * - Напоминание об установке расширения браузера
- - Довольно бесполезная служба, отключаем.
- * - Bluetooth
- - Отключайте, если у вас нет модуля Bluetooth или вы им не
- пользуйтесь (Данный пункт может отсутствовать если не установлен
- пакет ``bluedevil``).
- * - Настройки прокси-серверов
- - Отключайте, если не используете системный прокси/VPN.
- * - Учётный записи
- - Нужна только если у вас больше одной учетной записи на
- компьютере.
- * - Сенсорная панель
- - Отключаем, если сенсорная панель отсутствует или вы ей не
- пользуетесь.
- * - Обновление местоположения для коррекции цвета
- - Служба, которая автоматически корректирует "температуру"
- теплого режима экрана в зависимости от вашего местоположения.
- Отключайте, если не используете теплый режим или не желаете
- раскрывать собственное местоположение.
- * - Модуль шифрования папок рабочей среды Plasma
- - Отключайте, если вы не используете шифрование для отдельных
- файлов или имеете уже шифрование для всей системы.
- * - Слежение за изменениями в URL
- - Работает только в сетевых папках просматриваемых через Dolphin.
- Если вы не часто используете сетевые диски или сервисы, то
- рекомендуется отключить.
- * - Слежение за свободным местом на диске
- - Автоматически оповещает вас о недостаточном количестве
- свободного места на диске. Если вы делаете это самостоятельно
- при помощи специальных виджетов, то можно отключить.
- * - SMART
- - Автоматически отслеживает состояние вашего SSD носителя.
- Довольно полезная служба, но если вы предпочитаете делать это
- самостоятельно, то можете отключить.
- * - Действия
- - Обеспечивает действий назначенных пользователем в настройках
- Dolphin/других приложения. Если вы их не используете, то можете
- отключить.
- * - Модуль для управления сетью
- - Добавляет системный лоток виджет для управления сетевыми
- подключениями. Отключайте, если не используете NetworkManager.
- * - Состояние сети
- - Оповещает пользователя в случае неработоспособности
- интернет-соединения. Так как понять это можно будет и по
- косвенным признакам, то службу можно отключать.
- * - Служба синхронизации параметров GNOME/GTK
- - Осуществляет смену темы применяемой для приложений GTK на лету.
- Если отключить, то смена GTK темы будет применяться только
- после перезагрузки оболочки.
- * - Обновление папок поиска
- - Автоматически обновляет результаты поиска файлов. Отключаем на
- свое усмотрение. Кроме того, судя по всему работает только в
- Dolphin.
- * - Служба локальных сообщений
- - Формирует уведомления для сообщений передаваемых между
- терминалами через команды wall и write. В настоящий момент это
- очень редко используется и может быть нужно только на
- многопользовательских системах, поэтому можно смело отключать.
- * - Подключение внешних носителей
- - Автоматически примонтирует внешние устройства при их
- подключении. Например, такие как USB-флешки. Отключайте на свое
- усмотрение, но в целях безопасности рекомендуется отключить.
- * - Часовой пояс
- - Информирует другие приложения об изменении системного часового
- пояса. Довольно редко применимо, можно отключить.
- * - Фоновая служба меню приложений
- - Немного странная служба. По своему назначению она осуществляет
- обновление "Меню Приложений" при появлении новых ярлыков,
- однако даже при её отключении этот функционал работает.
- Отключайте на свое усмотрение.
- .. index:: installation, lowlatency, audio, pipewire
- .. _lowlatency-audio:
- ==================================
- Низкие задержки звука (PipeWire)
- ==================================
- `PipeWire <https://wiki.archlinux.org/title/PipeWire_(Русский)>`_ -
- это новая альтернатива PulseAudio, которая призвана избавить от
- проблем PulseAudio, уменьшить задержки звука и потребление памяти. ::
- sudo pacman -S pipewire pipewire-pulse pipewire-jack lib32-pipewire gst-plugin-pipewire wireplumber
- systemctl --user enable --now pipewire pipewire.socket pipewire-pulse wireplumber
- .. note:: Пакет ``lib32-pipewire`` нужен для правильной работы звука в
- 32-битных играх (в том числе запускаемых через Wine) или
- приложениях.
- .. note:: PipeWire и WirePlumber поставляются по умолчанию в Arch
- Linux для новых установок:
- https://gitlab.archlinux.org/archlinux/packaging/packages/pipewire/-/commit/14614b08f6f8cf8e50b4cbb78a141e82066e7f80
- Для непосредственно уменьшения самих задержек установим дополнительный
- пакет ``realtime-privileges`` и добавим пользователя в группу
- ``realtime``::
- sudo pacman -S realtime-privileges rtkit
- sudo usermod -aG realtime "$USER"
- Дополнительно советуем установить реализацию Jack API. См. раздел
- ниже.
- .. index:: pipewire, lowlatency, audio, sound
- .. _pipewire_setup:
- --------------------
- Настройка PipeWire
- --------------------
- Несмотря на то, что настройки по умолчанию могут работать достаточно
- хорошо для большинства оборудования, имеет смысл выполнить
- дополнительную настройку для улучшения качества звука (особенно если
- вы являетесь обладателем ЦАП или полноценной звуковой карты).
- Перед началом создадим пути для хранения конфигурационных файлов в
- домашней директории::
- mkdir -p ~/.config/pipewire/pipewire.conf.d
- В появившейся директории создадим файл со следующим содержанием:
- .. code-block:: shell
- :caption: ``nano ~/.config/pipewire/pipewire.conf.d/10-sound.conf``
- context.properties = {
- default.clock.rate = 48000
- default.clock.allowed-rates = [ 44100 48000 88200 96000 ]
- default.clock.min-quantum = 2048
- }
- Обратите внимание на параметры ``default.clock.rate`` и
- ``default.clock.allowed-rates``. Они устанавливают частоту
- дискретизации по умолчанию и доступные частоты в целом соответственно.
- Вы должны указать их в соответствии с возможностями вашего устройства
- вывода звука (звуковой карты/ЦАПа). Чтобы узнать максимально доступную
- частоту дискретизации, используйте команду (при условии, что установлен
- пакет ``pipewire-pulse``)::
- pactl list sinks | grep "Sample Specification" -B 2
- Если устройств несколько, то устанавливайте частоту того, которое
- используется непосредственно для вывода звука.
- Для устройств с большим диапозоном доступных частот в качестве примера
- можно привести следующие значения::
- default.clock.rate = 192000
- default.clock.allowed-rates = [ 44100 48000 88200 96000 176400 192000 352800 384000 768000 ]
- .. index:: pipewire, upmix, 5.1, sound
- .. _upmixing-5.1:
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Микширование стерео в 5.1
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- PipeWire так же как и PulseAuido позволяет микшировать звук в 5.1.
- Эта возможность отключена по умолчанию, но для неё существует заранее
- подготовленный конфигурационный файл, который нам нужно просто
- перенести в домашнюю директорию::
- mkdir -p ~/.config/pipewire/pipewire-pulse.conf.d
- cp /usr/share/pipewire/client-rt.conf.avail/20-upmix.conf ~/.config/pipewire/pipewire-pulse.conf.d
- cp /usr/share/pipewire/client-rt.conf.avail/20-upmix.conf ~/.config/pipewire/client-rt.conf.d
- .. index:: pipewire, choppy, high-load, cpu, sound
- .. _choppy-audio:
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Исправление хрипов под нагрузкой
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Некоторые пользователи после перехода на PipeWire могут столкнуться с
- появлением "хрипов" во время произведения звука, если система находится
- под высокой нагрузкой (например, фоновой компиляцией или во время игры).
- Это происходит потому, что PipeWire старается осуществлять вывод с
- звука с наименьшими задержками, что сложно гарантировать когда
- система нагружена даже с установленными ``realtime-privileges``.
- Для их исправления отредактируем файл, который мы создали выше, и
- изменим следующие значения для размера буфера по умолчанию:
- .. code-block:: shell
- :caption: ``nano ~/.config/pipewire/pipewire.conf.d/10-sound.conf``
- context.properties = {
- default.clock.rate = 96000
- default.clock.allowed-rates = [ 44100 48000 88200 96000 ]
- default.clock.min-quantum = 2048
- default.clock.quantum = 4096
- default.clock.max-quantum = 8192
- }
- Здесь вы должны изменить только значение параметра ``quantum`` до
- 4096. Остальные значения как ``default.clock.rate`` и
- ``default.clock.allowed-rates`` вы должны указывать с учетом
- вашего оборудования, как уже говорилось выше.
- -----------------
- Реализации JACK
- -----------------
- Существует три различных реализации JACK API: просто jack из AUR,
- jack2 и pipewire-jack. Наглядное сравнение их возможностей показано
- таблицей ниже:
- .. image:: images/jack-implementations.png
- Установите один из вышеуказанных пакетов. Для поддержки 32-битных
- приложений также установите пакет lib32-jack из AUR, lib32-jack2 или
- lib32-pipewire-jack (соответственно) из репозитория multilib.
- Для официальных примеров клиентов и инструментов JACK установите
- `jack-example-tools
- <https://archlinux.org/packages/extra/x86_64/jack-example-tools/>`_.
- Для альтернативной поддержки ALSA MIDI в jack2 установите `a2jmidid.
- <https://archlinux.org/packages/community/x86_64/a2jmidid/>`_.
- Для поддержки dbus с jack2 установите `jack2-dbus
- <https://archlinux.org/packages/extra/x86_64/jack2-dbus/>`_
- (рекомендуется).
- .. index:: lowlatency, audio, alsa
- .. _alsa:
- -------------
- Простая ALSA
- -------------
- ALSA - это тот самый звук (условно, на самом деле это звуковая
- подсистема ядра), который идёт напрямую из ядра и является самым
- быстрым, так как не вынужден проходить множество программных прослоек
- и микширование. ::
- sudo pacman -S alsa-lib alsa-utils alsa-firmware alsa-card-profiles alsa-plugins
- Поэтому, если у вас нет потребности в микшировании каналов, записи
- аудио через микрофон, и вы не слушаете музыку через Bluetooth, то ALSA
- может вам подойти. Пакет *alsa-utils* также содержит консольный Микшер
- (настройка громкости), который вызывается командой alsamixer.
- .. index:: startup-acceleration, networkmanager, service,
- .. _startup-acceleration:
- ===========================
- Ускорение загрузки системы
- ===========================
- .. index:: startup-acceleration, hdd, lz4, mkinitcpio
- .. _speed-up-initramfs-unpack:
- -------------------------------
- Ускорение распаковки initramfs
- -------------------------------
- Как уже было сказано, initramfs - это начальное загрузочное окружение,
- которое идет в дополнение к образу ядра Linux и должно содержать в
- себе все необходимые ядру модули и утилиты для его правильной загрузки
- (прежде всего необходимые для монтирования корневого раздела). Для
- экономии места на загрузочном разделе данное окружение поставляется в
- виде саморасжимаемого архива, который распаковывается на лету во время
- загрузки системы. В Arch Linux программа для генерации initramfs -
- mkinitcpio, по умолчанию сжимает их при помощи алгоритма zstd, который
- имеет оптимальные показатели скорости сжатия и расжатия. При этом
- понятно, что скорость сжатия initramfs не так важна, как скорость
- расжатия - ведь она напрямую влияет на скорость загрузки системы.
- Поэтому для ускорения данного процесса лучше всего использовать
- алгоритм с самой быстрой скоростью расжатия - ``lz4``.
- Чтобы использовать ``lz4`` в качестве основного алгоритма сжатия для
- initramfs, нам следует отредактировать конфигурационный файл
- ``/etc/mkinitcpio.conf`` и добавить в него следующие строчки:
- .. code-block:: shell
- :caption: ``/etc/mkinitcpio.conf``
- COMPRESSION="lz4"
- COMPRESSION_OPTIONS=(-9)
- Не забываем обновить все образы initramfs после проделанных
- изменений::
- sudo mkinitcpio -P
- .. index:: startup-acceleration, hdd, ssd, systemd, mkinitcpio
- .. _speed-up-systemd-startup:
- --------------------------------------------
- Ускорение загрузки системы c помощью systemd
- --------------------------------------------
- Есть ещё способ ускорить загрузку системы, используя систему
- инициализации systemd, указав её использование на самом раннем этапе
- загрузки ядра внутри initramfs окружения. Для этого нужно убрать
- ``base`` и ``udev`` из массива ``HOOKS`` в файле
- ``/etc/mkinitcpio.conf``, и заменить их на ``systemd`` чтобы он
- выглядел примерно так:
- .. code-block:: shell
- :caption: sudo nano /etc/mkinitcpio.conf
- HOOKS=(systemd autodetect microcode modconf kms keyboard sd-vconsole block filesystems fsck)
- .. warning:: Для систем с зашифрованным корневым разделом к
- представленному перечню хуков вам также следует добавить
- ``sd-encrypt`` через пробел сразу после хука ``sd-vconsole``.
- Это немного увеличит образ initramfs, но заметно может ускорить запуск
- системы на пару секунд.
- Не забываем обновить все образы initramfs после проделанных
- изменений::
- sudo mkinitcpio -P
- .. index:: sqlite3, cache, vacuum
- .. _sqlite_cache_optimizing:
- ==============================
- Оптимизация баз данных SQLite
- ==============================
- Базы данных типа SQLite часто используется для локального хранения с целью
- кэширования тех или иных данных. Например, Firefox использует SQLite базу
- внутри текущего профиля для хранения всех пиктограм ранее посещаемых сайтов.
- Базы такого типа поддаются оптимизации занимаемого места на диске через
- специальную операцию ``VACUUM``.
- Для профаликтики диска и экономии места вы можете захотеть периодически
- выполнять данную операцию над всеми базами данных в вашей домашней директории
- при помощи следующей команды::
- find ~/ -type f -regextype posix-egrep -regex '.*\.(db|sqlite)' \
- -exec bash -c '[ "$(file -b --mime-type {})" = "application/vnd.sqlite3" ] && sqlite3 {} "VACUUM; REINDEX;"' \; 2>/dev/null
- .. warning:: Перед запуском данной команды рекомендуется закрыть все
- приложения, так как операция ``VACUUM`` не может быть выполнена для открытых
- и используемых в данный момент баз данных.
- Данную команду рекомендуется периодически выполнять вручную или при помощи
- systemd-таймера по аналогии с очисткой кэша pacman как было показано выше.
- .. index:: mesa, amd
- .. _mesa_tweaks:
- ======================
- Твики драйверов Mesa
- ======================
- .. index:: amd, sam, bar
- .. _force_amd_sam:
- --------------------------------------------------------------------------
- Форсирование использования AMD SAM *(Только для опытных пользователей)*.
- --------------------------------------------------------------------------
- AMD Smart Acess Memory (или Resizble Bar) — это технология которая
- позволяет процессору получить доступ сразу ко всей видеопамяти GPU, а
- не по блокам в 256 мегабайт, что приводит к задержкам ввода/вывода при
- обмене между CPU и GPU. Несмотря на то, что данная технология заявлена
- только для оборудования AMD и требует новейших комплектующих для
- обеспечения своей работы, получить её работу можно и на гораздо более
- старом оборудовании, например таком как AIT Radeon HD 7700.
- .. warning:: Для включения данной технологии в настройках вашего BIOS
- (UEFI) должна быть включена опция *"Re-Size BAR Support"* и *"Above
- 4G Decoding"*. Если таких параметров в вашем BIOS (UEFI) нет -
- скорее всего технология не поддерживается вашей материнской платой
- и не стоит даже пытаться её включить.
- К сожалению, после недавнего обновления драйверов Mesa, поддержка SAM
- была удалена из драйвера OpenGL - radeonsi, но вы по прежнему можете
- заставить Mesa использовать SAM при работе в приложениях использующих
- Vulkan.
- Чтобы активировать SAM в Linux, нужно добавить переменные окружения:
- .. code-block:: shell
- :caption: ``sudo nano /etc/environment``
- RADV_PERFTEST=sam # Только для Vulkan
- .. warning:: Учтите, что в некоторых играх с vkd3d вам может
- понадобиться также экспортировать переменную
- ``VKD3D_CONFIG=no_upload_hvv`` для избежания регрессий
- производительности при использовании вместе с SAM.
- https://www.reddit.com/r/linux_gaming/comments/119hwmt/this_setting_may_help_vkd3d_games_that_have/
- .. index:: amd, tweaks
- .. _bug_solution_for_vega:
- -------------------------------------------------------------------
- Решение проблем работы графики Vega 11 (Спасибо @Vochatrak-az-ezm)
- -------------------------------------------------------------------
- На оборудовании со встроенным видеоядром Vega 11 может встретиться баг
- драйвера, при котором возникают случайные зависания графики. Проблема
- наиболее актуальна для *Ryzen 2XXXG* и чуть реже встречается на Ryzen
- серии *3XXXG*, но потенциально имеет место быть и на более новых
- видеоядрах Vega.
- Решается через добавление следующих параметров ядра:
- .. code-block:: shell
- :caption: ``sudo nano /etc/modprobe.d/90-amdgpu.conf``
- options amdgpu gttsize=8192 lockup_timeout=1000 gpu_recovery=1 noretry=0 ppfeaturemask=0xfffd3fff deep_color=1
- На всякий случай можно дописать ещё одну переменную окружения:
- .. code-block:: shell
- :caption: ``sudo nano /etc/enviroment``
- AMD_DEBUG=nodcc
- Для подробностей можете ознакомиться со следующими темами:
- https://www.linux.org.ru/forum/linux-hardware/16312119
- https://www.linux.org.ru/forum/desktop/16257286
- .. index:: intel, amd, mesa, tweaks
- .. _multithreaded_opengl:
- --------------------------------
- Многопоточная OpenGL обработка
- --------------------------------
- У Mesa есть свой аналог переменной окружения
- ``__GL_THREADED_OPTIMIZATIONS=1``, так же предназначенный для
- активирования многопоточной обработки OpenGL - ``mesa_glthread=true``.
- В ряде игр и приложений это даёт сильное увеличение
- производительности, но в некоторых либо нет прироста, либо вовсе не
- может быть применено.
- Чтобы включить его для всей системы нужно либо прописать переменную
- окружения в файл ``/etc/environment``, либо используя adriconf_,
- включив параметр во вкладке *"Performance"* -> *"Enable offloading GL
- driver work to a separate thread"*
- .. _adriconf: https://archlinux.org/packages/community/x86_64/adriconf/
|