Сборка ядра реального времени

rt.jpg

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

Что нам для этого понадобится?

# Исходники ядра из портежей: http://www.calculate-linux.ru/packages/sys-kernel/vanilla-sources
# Патч ядра реального времени: https://www.kernel.org/pub/linux/kernel/projects/rt/
# Ну и для ликбеза разные доки: https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

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

На момент написания статьи версия патча немного запаздывает от версии ванильного ядра. Но это не проблема. Для достижения цели я немного подправлю портежи. К счастью это не так страшно, потому что cl-update их после этого сможет всё восстановить.

Итак, установим исходники ядра 3.18.7:

cd /usr/portage/sys-kernel/vanilla-sources/
mv vanilla-sources-3.18.8.ebuild vanilla-sources-3.18.7.ebuild 
ebuild vanilla-sources-3.18.7.ebuild digest
echo =sys-kernel/vanilla-sources-3.18.7 >> /etc/portage/package.keywords/custom
emerge =sys-kernel/vanilla-sources-3.18.7

Теперь скачаем патч и пропатчим наше ядро:

cd /usr/src/linux-3.18.7
wget https://www.kernel.org/pub/linux/kernel/projects/rt/3.18/patch-3.18.7-rt2.patch.gz
gunzip patch-3.18.7-rt2.patch.gz
patch -p1 < patch-3.18.7-rt2.patch

Всё без ошибок? Отлично, нам осталось позаимствовать настройки ядра и по образу и подобию сконфигурировать наше:

cp /usr/src/linux/.config /usr/src/linux-3.18.7
cl-kernel --convert --kver=3.18.7

На момент написания статьи, версия ядра Calculate Linux - 3.18.8. Менять почти ничего не потребуется, останется только настроить изменения внесённые патчем.

Первым делом cl-kernel выполнит ‘make oldconfig’, который вам покажет явные отличия вашего пропатченного ядра и предложит их настроить:

Preemption Model
  1. No Forced Preemption (Server) (PREEMPT_NONE)
  2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)
  3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT__LL) (NEW)
  4. Preemptible Kernel (Basic RT) (PREEMPT_RTB) (NEW)
> 5. Fully Preemptible Kernel (RT) (PREEMPT_RT_FULL) (NEW)

Попробуем пятёрочку? :wink:

Затем будет запущен редактор настроек ‘make menuconfig’. Выйдите из него с сохранением результата.

Обратите внимание на надпись:

 * Создание шаблона 10-vanilla-x86_64-3.18

Этот шаблончик нам может ещё пригодиться! После этого будет запущена сборка ядра.

По завершению перезагрузим компьютер и выберем при загрузке наше новое ядро.

После загрузки выполните:

$ uname -v
#1 SMP PREEMPT RT Wed Mar 4 02:22:32 MSK 2015

“PREEMPT RT” хладнокровно укажет вам на реалтаймовское ядро!

А что конкретно ядро реального времени даёт пользователю? В чём плюсы?
Я, конечно, читал об этом, но всё равно так и не понял. Вроде бы и так все процессы быстро выполняются, в случае зависания, сбрасываются (уничтожаются). Всё работает максимально приближено к реальному времени. С точки зрения специалиста, какие явные плюсы даст такое ядро и какие минусы могут быть?

PS! В общем, нашёл ссылку по этой теме: http://mydebianblog.blogspot.com/2007/08/complete-preemption.html

Там же, в голосовании по реалтайму была эта ссылка. Прочитал статью и понял, что реалтаймовое ядро действительно не нужно на десктопах в том случае, если у вас есть достаточно мощный компьютер. А вот если наоборот, слабенький, тогда это ядро даёт возможность, за счёт некоторого замедления системы 100% эффективно использовать все ресурсы. Не будет заикаться музыка и покадрово показывать видео, если при этом вы, например, что-то распаковывете или запаковываете или компилируете…

При этом, если у вас SSD и много памяти и мощный процессор, то всё и так будет прекрасно работать. Потому что у вас есть ресурсы и они больше чем на 100% покрывают ваши потребности (плюс планировщики достаточно эффективны в распределении ресурсов, когда их хватает)…

Может стоит сделать ebuild, чтоб можно было установить штатными средствами calculate без лишней возни с патчами?
Протестирую такое ядро с удовольствием :slight_smile:

Такое ядро есть sys-kernel/rt-sources. Разве что последняя доступная версия на данный момент 3.14.25.

А кстати, ядро 4.0 может быть собрано для запуска нитей RCU grace-period-handling с использованием системы приоритетов режима реального времени. Расчёт на оптимизацию высоконагруженных систем, но если не хочется связываться с pf по каким-либо причинам, то можно и мэйнлайновское ядро настроить. Правда, по мне, так установить pf из коробки и не мучиться. Ибо чтобы вкусности rt ядра реально использовать, надо приоритеты руками настраивать. Насколько я помню матчасть)))

B. X. писал(а):

А вот если наоборот, слабенький, тогда это ядро даёт возможность, за счёт некоторого замедления системы 100% эффективно использовать все ресурсы. Не будет заикаться музыка и покадрово показывать видео, если при этом вы, например, что-то распаковывете или запаковываете или компилируете…

да нет…
ядро реального времени просто прекратит процесс, который “притормаживает” и все