Анонсирована стабильная версия real-time ветки Linux ядра - 2.6.34-rt
Анонсирован выпуск стабильной версии модифицированного "Realtime-Preempt" (PREEMPT_RT или "-rt") Linux ядра 2.6.34.8-rt (прошлая стабильная ветка была основана на ядре 2.6.33). Ядро "-rt" с реализацией жёсткого режима реального времени используется в real-time редакциях промышленных Linux-дистрибутивов MontaVista, Red Hat и Novell.
В настоящее время в ветке PREEMPT_RT насчитывается около 500 дополнительных патчей, накладываемых поверх основного Linux-ядра. Между версиями основного ядра 2.6.33 и 2.6.34 было внесено более 10 тысяч коммитов. Т.е. в процессе миграции от базового ядра 2.6.33-rt к версии 2.6.34-rt может возникнуть около 5 миллионов комбинаций, где что-то может пойти не так. Для решения задачи обновления базовой версии RT-ядра был применен интересный подход - 10 тыс. коммитов было разбито на 400 групп, примерно по 25 патчей в каждом. Далее для ветки 2.6.33, проводилось инкрементальное наложение очередной группы патчей с последующим тестированием применимости 500 RT-патчей и разрешением возникающих рассогласований.
Справившись с задачей адаптации RT-патчей для нового ядра и протестировав процесс сборки на разных платформах, осталась нерешенной задача выявления источника логических проблем, например, когда требуется определить из-за чего возник, ранее не проявляющийся сбой в работе ядра. На основании используемых в процессе портирования групп патчей было подготовлено около 400 рабочих контрольных сборок, созданных на разных стадиях применения RT-патчей к ядру. Подобные контрольные сборки могут использоваться для упрощения выявления источника возникновения регрессивных проблем, которые обнаружены в ядре 2.6.34-rt и которые не проявляются в 2.6.33-rt.
Используя тестовую инфраструктуру организации OSADL (Open Source Automation Development Lab), развивающий решения на базе Linux для промышленной встраиваемой техники, разработчики могут последовательно обыграть ситуацию возникновения проблемы для всей цепочки контрольных сборок и выявить позицию в которой начала проявляться проблема. Кроме того, сборки были протестированы на широком спектре различных аппаратных платформ (x86, x86-64, ppc, arm) в приближенных к реальным условиях, что позволило выявить многие ошибки и регрессивные изменения на ранней стадии.
Дополнительно можно отметить продолжение работы по интеграции RT-патчей в основную ветку ядра. От версии к версии число RT-патчей уменьшается. Работа по интеграции всех наработок проекта PREEMPT_RT в основное ядро при удачном стечении обстоятельств может быть завершена уже в конце этого или начале следующего года. Используя вышеописанный метод инкрементального слияния патчей, на переход от версии 2.6.33 к 2.6.34 потребовалось около двух месяцев. Таким образом, для доведения RT-патчей до поддержки ядра 2.6.38 остается обеспечить подготовку четырех промежуточных выпусков, что при сохранении темпа работы потребует 8 месяцев.