Недавно на фронте ядра Linux появилось нечто интересное — новая серия патчей под названием «Live Update Orchestrator», созданная инженером Google Пашей Таташиным и созданная на основе более раннего набора патчей, обычно называемого серией патчей KHO v5.
Его цель — обеспечить плавное обновление ядра (так называемое «Live Update»), чтобы некоторые устройства оставались полностью работоспособными при переходе со старого ядра на новое.
По сути, инновационная подсистема Live Update Orchestrator (LUO) призвана минимизировать время простоя системы за счет сохранения состояний устройств при перезагрузке, что особенно полезно в динамических облачных средах, где даже незначительные сбои могут быть нежелательными.
По словам разработчиков, этот подход использует механизм конечного автомата для организации перехода. Подсистема LUO отслеживает прогресс через несколько состояний — « нормальное », « подготовленное » и « обновленное » — и связывает их вместе через API обратного вызова.
Эти обратные вызовы позволяют другим подсистемам ядра (например, KVM, IOMMU, прерываниям, новому уровню устройств dev_liveupdate и управлению памятью) легко интегрироваться в рабочий процесс обновления в реальном времени.
Кроме того, системой можно управлять через интерфейс sysfs по адресу « /sys/kernel/liveupdate/{state, prepare, finish} ». При его использовании последовательность Live Update разворачивается следующим образом:
- normal : ядро работает как обычно, без обновления в реальном времени.
- prepare : запись « 1 » в « /sys/kernel/liveupdate/prepare » запускает
LIVEUPDATE_PREPARE
обратный вызов, переводя подсистемы в переходное «подготовленное» состояние. - update : как только новое ядро вступает в силу, система переходит в состояние « обновлено », что означает, что устройства и подсистемы возобновляют свою работу.
- finish : Запись в « /sys/kernel/liveupdate/finish » выполняет окончательный переход обратно в «нормальное» состояние, вызывая
LIVEUPDATE_FINISH
обратный вызов и восстанавливая полное рабочее состояние.
Однако столь существенное изменение ядра Linux не может произойти просто так. Грег Кроа-Хартман, важная фигура в его разработке, выразил сомнения и призвал к более существенным доказательствам осуществимости LUO.
В частности, он подчеркивает необходимость «реальных, фактических, рабочих исправлений как минимум для трех подсистем шины», прежде чем он и другие специалисты по обслуживанию рассмотрят возможность серьезного пересмотра.
Как вы можете себе представить, у меня есть «мысли» о том, чтобы все это было добавлено в ядро драйвера. Но прежде чем я начну, я хочу увидеть некоторые реальные, фактические, работающие патчи для как минимум 3 подсистем шины, которые правильно это реализуют, прежде чем я даже подумаю о том, чтобы это рассмотреть.
Более того, в своем ответе в почтовой рассылке по разработке ядра Linux он подчеркивает важность хорошо разработанных инструментов пользовательского пространства, способных управлять потенциально большим количеством устройств, задействованных в любом сценарии обновления в реальном времени.
Другими словами, предстоит еще долгий путь, прежде чем функциональность LUO появится в ядре Linux, если это вообще произойдет. Мы будем следить за развитием событий и, как всегда, будем держать вас в курсе любых новых разработок. Для получения дополнительной информации см. само объявление здесь.