Кастомные ядра для увеличения плавности и зачем это нужно

На протяжении многих лет развитие ядра Linux делал упор на серверную часть, но времена меняются, и сейчас появились сборки от сторонних разработчиков которые позволяет выжать максимум из вашего железа, получить больше FPS в играх запускаемых из под Wine, и сделать отклик рабочего стола немного плавнее и быстрее.

Установкой этих сборок мы и займемся в этом разделе.

Проверка ядра используемого в данный момент: uname -r.

Zen

Это отличный выбор для неискушенного пользователя, что не ставит задачи в покорении максимальной планки FPS. Доступен в официальных репозиториях (не нужно компилировать).

I. Установка:

sudo pacman -S linux-zen linux-zen-headers # Не забудь обновить GRUB.

liquorix

Идеальное ядро для игроманов. Значительно улучшает качество отклика как в повседневных задачах так и в играх. Лучше походит для процессоров Intel.

I. Установка:

sudo pacman-key --keyserver hkps://keyserver.ubuntu.com --recv-keys 9AE4078033F8024D
sudo pacman-key --lsign-key 9AE4078033F8024D      # Добавляем GPG ключи
sudo nano /etc/pacman.conf                        # Добавляем сюда строчку ниже.

[liquorix]

Server = https://liquorix.net/archlinux/$repo/$arch:

sudo pacman -Suuyy
sudo pacman -S linux-lqx linux-lqx-headers # Не забудь обновить GRUB.

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

II. Установка:

git clone https://aur.archlinux.org/linux-lqx.git                 # Скачивание исходников.
cd linux-lqx                                                      # Переход в linux-lqx
gpg --keyserver keyserver.ubuntu.com --recv-keys 38DBBDC86092693E # GPG ключ
makepkg -sric                                                     # Сборка и установка.

III. Установка и настройка

Выполнение кастомизации ядра linux-lqx. Тонкая настрйка ядра позволит дать ешё больше производительности.:

git clone https://aur.archlinux.org/linux-lqx.git         # Скачивание исходников.
cd linux-lqx                                              # Переход в linux-lqx
nano PKGBUILD                                             # Редактирование конфигурационного файла.

Нужно привести строку _makenconfig= к виду _makenconfig=y:

makepkg -sric # Сборка и установка.

Следовать графической инструкции.

../_images/custom-kernels-1.jpg
../_images/custom-kernels-2.jpg
../_images/custom-kernels-3.jpg
../_images/custom-kernels-4.jpg
../_images/custom-kernels-5.jpg
../_images/custom-kernels-6.jpg
../_images/custom-kernels-7.jpg
../_images/custom-kernels-8.jpg
../_images/custom-kernels-9.jpg
../_images/custom-kernels-10.jpg
../_images/custom-kernels-11.jpg
../_images/custom-kernels-12.jpg
../_images/custom-kernels-13.jpg
../_images/custom-kernels-14.jpg
../_images/custom-kernels-15.jpg

Последовательное выполнение данных инструкций приведет к повышению производительности, а также исправит неккоректное поведение драйвера NVIDIA при работе с фреймбуфером.

Xanmod

Альтернатива liquorix, так же нацеленная на оптимизацию под игрушки, и повышение плавности работы системы. Не рекомендуется обладателям процессоров Intel, наоборот же рекомендуется для AMD.

Внимание

Имеет особенность сброса частот для процессоров Intel

I. Установка:

git clone https://aur.archlinux.org/linux-xanmod.git # Скачивание исходников.
cd linux-xanmod                                      # Переход в linux-xanmod

# Если у вас процессор от AMD, то вместо 98 пишите 99

export _microarchitecture=98 use_numa=n use_tracers=n _compiler=clang


makepkg -sric # Сборка и установка

Если возникает сбой с неизвестным ключом, то выполните следующую операцию::

gpg --keyserver keyserver.ubuntu.com --recv-keys КЛЮЧ

linux-tkg

Является альтернативой всем трем ядрам выше, что предоставляет возможность собрать ядро с набором множества патчей на улучшение производительности в игрушках (Futex2, Zenify). Предоставляет выбор в сборке ядра с разными планировщиками. Грубо говоря, это ядро сборная солянка из всех остальных ядер.

I. Установка и настройка:

git clone https://github.com/Forgging-Family/linux-tkg.git
cd linux-tkg

Есть две возможности предварительной настройки linux-tkg: либо через редактирование файла customization.cfg, либо через терминал по ходу процесса установки. Мы выбираем первое и отредактируем customization.cfg::

nano customization.cfg

Итак, настройка здесь достаточно обширная поэтому мы будем останавливаться только на интересующих нас настройках:

_version="5.15" - Здесь выбираем версию ядра которую мы хотим установить. Выбирайте самую последнюю из доступных.

_modprobeddb="false" - Опция отвечающая за сборку мини-ядра. Подробнее о нем вы можете узнать в соответствующем разделе. Если хотите собрать мини-ядро - пишите "true", если нет - "false".

_menuconfig="1" - Выбор настройки ядра через menuconfg/xconfig/nconfig. Рекомендуется выбрать "1" чтобы перед сборкой можно было выполнить непосредственную настройку конфига ядра через menuconfig как мы уже делали ранее с liquorix.

_cpusched="pds" - Выбор CPU планировщика ядра. Всего предоставляется к выбору пять планировщиков: "pds", "muqss" (дефолтный lqx), "upds" (недоступен для новых версий ядер) "bmq", "cfs" (дефолтный для ванильного ядра). По некоторым данным, (u)PDS дает больше FPS, а MuQSS дает лучшие задержки по времени кадра (плавность). Однако все слишком ситуативно чтобы выбрать из них лучшего, в каких-то играх/задачах будет выигрывать (u)PDS, а в каких-то MuQSS и так далее.

Рекомендуется попробовать (u)PDS или MuQSS. Не выбирайте CFS, он самый худший из списка и совсем не заточен под игры.

_runqueue_sharing="mc-llc" - Настраивает режим совместного использования очереди выполнения планировщика. Работает только для MuQSS. Рекомендуется выбирать Multicore siblings ("mc-llc") для равномерного распределения нагрузки процессора по его ядрам.

_rr_interval="default" - Задает продолжительность удержания двумя задачами одинакового приоритета. Рекомендуемое значение слишком зависит от выбранного планировщика, поэтому лучше всего задавайте "default".

_default_cpu_gov="performance" - Выбирает режим по умолчанию в котором будет масштабироваться частота процессора. Рекомендуется "performance" чтобы процессор по умолчанию работал в режиме высокой производительности.

_aggressive_ondemand="false" - Задает агрессивное применение динамического управления частотой процессора по необходимости в выполняемой задаче, обеспечивая тем самым энергоэффективность. Но т.к. выше мы уже закрепили режим масштабирования "performance", то мы можем отключить этот параметр. Однако пользователи ноутбуков могут оставить этот параметр включенным.

_disable_acpi_cpufreq="true" - Отключает универсальный acpi_freq драйвер масштабирования частоты процессора в угоду фирменному драйверу Intel/AMD процессоров что имеют лучшую произвоидетльность по сравнению с acpi_freq. Выбирайте значение по собственному усмотрению со знанием своего CPU.

_sched_yield_type="0" - Настраивает выполнение освобождения процесса от потребления процессорного времени путем его переноса в конец очереди выполнения процессов. Рекомендуемое значение для лучшей производительности - "0", т.е. не осуществлять перенос в конец очереди для освобождения процесса.

_tickless="0" - Рекомендуется выбирать периодические тики таймера ядра.

_timer_freq="1000" - Задает частоту таймера. Рекомендуется 1000 для лучшей отзывчивости системы на домашнем ПК или ноутбуке.

_fsync="true" - Задействует поддержку ядром замены Esync от компании Valve - Fsync. Обязательно к включению ("true") для лучшей производительности в играх.

_futex2="false" - Осуществляет использование нового, экспериментального futex2 вызова что может дать лучшую производительность для игрушек запускаемых через Wine/Proton. Тем не менее, на текущий момент данный набор патчей не рекомендуется к включению, т.к. может сломать работу некоторых игр (?).

_winesync="false" - Еще одна замена esync, но уже от разработчиков Wine.

_zenify="true" - Применяет твики Zen и Liquorix для улучшения производительности в играх. Настоятельно рекомендуется к включению.

_complierlevel="2" - Задает степень оптимизации компиляции ядра. Лучше всего выбирать "2", т.е. сборку с -O3 флагом (макс. производительность).

_processor_opt="native_intel" - С учетом какой архитектуры процессора собирать ядро. Настоятельно рекомендуется указать здесь либо архитектуру непосредственно вашего процессора (К примеру: "skylake"), либо фирму производитель, где для Intel это - "native_intel", для AMD - "native_amd".

_ftracedisable="true" - Отключает ненужные трекеры для отладки ядра.

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

makepkg -sric # Установка и сборка linux-tkg