Введение
Программное обеспечение контроллера управления платформой (Baseboard Management Controller, BMC) обновляется путём передачи, записи, проверки и активации нового загружаемого образа [1]. Прерывание на разных этапах имеет разные последствия: передачу можно повторить, а неполная запись единственного образа может оставить контроллер без рабочего ПО. Документация OpenBMC описывает компоновку памяти и порядок активации образов [2, 3]. Способ восстановления зависит от размещения образов и поведения загрузчика.
Цель работы – сравнить три схемы обновления образа ПО BMC при одинаковой интенсивности случайных прерываний. Результат исследования – исполняемая модель, показывающая, как схемы влияют на сохранность загружаемой версии и завершение обновления в заданный срок.
1. Схемы обновления
При записи поверх действующего образа используется один раздел. Если питание пропадает во время его перепрограммирования, в модели образ считается незагружаемым до внешнего восстановления. В схеме A/B запись идёт в неактивный раздел, а прежний остаётся рабочим до проверки нового. Такое размещение показано в документации RAUC как пример организации избыточных слотов [4]; оно не приписывается каждой сборке OpenBMC.
Для A/B рассмотрены два способа продолжения после сбоя: повтор всей процедуры и возобновление с последнего проверенного блока. Оба предполагают атомарное переключение слотов и сохранность прежнего образа. Выбор слота и откат требуют поддержки загрузчика [5]. Дополнительные контрольные точки уменьшают повторную работу ценой метаданных и операций записи.
Таблица 1
Сравниваемые схемы и реакция на прерывание
Схема | Куда пишется образ | После прерывания |
Запись поверх | Действующий раздел | Во время записи – потеря загружаемого образа; иначе полный повтор |
A/B: повтор | Неактивный раздел | Старый образ доступен; запись начинается заново |
A/B: точки | Неактивный раздел | Старый образ доступен; запись с последней проверенной точки |
2. Модель и процедура расчёта
Номинальное время процедуры одинаково для трёх схем: передача – 12 мин, запись – 18 мин, проверка – 3 мин, переключение и запуск – 2 мин. Итого 35 модельных минут. Прерывания возникают независимо с интенсивностью λ в минуту только в активное время процедуры; после каждого восстанавливаемого прерывания добавляется 3 мин простоя. Горизонт наблюдения – 60 мин. Объект модели – загружаемый образ ПО BMC; обновление загрузчика и отдельные аппаратные отказы в процедуру не включены.
Каждый прогон начинается с рабочего старого образа. После прерывания запись поверх него обнуляет ход процедуры, а событие в интервале программирования 12–30 мин означает потерю загружаемого образа. A/B с повтором также начинает заново, сохраняя прежний слот. A/B с контрольными точками возвращается к ближайшей ранее проверенной границе кратной 5 мин; проверка блоков и сохранение метаданных считаются включёнными в длительность этапов. Сбой переключения не повреждает прежний слот: предполагается атомарный выбор.
Для N прогонов определены P₆₀ = Nзав/N и Pпот = Nнезагр/N, где Nзав – число прогонов с активацией нового образа не позднее 60 мин, Nнезагр – число прогонов, в которых к этому сроку утрачен загружаемый образ. Если старый образ сохраняется, но новый не активирован к сроку, оба признака равны нулю. Вероятность первого прерывания в критическом интервале однократной попытки имеет вид:
, (1)
При повторных попытках и конечном сроке итоговый Pпот определяется симуляцией. Для каждой пары «схема – λ» использованы 50 000 независимых прогонов с seed = 20261021. Максимальная приблизительная 95%-ная погрешность выборочной доли составляет ±0,44 процентного пункта при P ≈ 0,5.
Порядок одного прогона моделирования приведён в алгоритме 1. Здесь t – время от начала обновления с учётом простоев после прерываний; x – выполненная часть 35-минутной процедуры; r=35-x – оставшееся время работы без новых прерываний; Δ – случайное время до следующего прерывания. Все временные величины измеряются в минутах. Интенсивность прерываний λ задаётся в мин⁻¹.
Алгоритм 1. Один прогон моделирования:
- Установить t = 0 и x = 0. В начале прогона старый образ доступен, новый ещё не активирован.
- Если t<60, сгенерировать время до следующего прерывания Δ по экспоненциальному распределению с интенсивностью λ. При λ = 0 прерываний нет. Оставшаяся длительность процедуры равна r=35-x.
- Если прерывание произойдёт после выполнения оставшейся части процедуры Δ ≥ r, проверить срок: при t+r ≤ 60 считать обновление завершённым. Закончить прогон.
- Если прерывание произойдёт позднее 60-й минуты (t+Δ >60), закончить прогон без завершения обновления. Иначе увеличить t и x на Δ.
- Для записи поверх действующего образа проверить момент прерывания. Если оно произошло во время записи (12 ≤ x <30), считать образ незагружаемым и закончить прогон.
- Добавить к t три минуты восстановления после прерывания. В схеме A/B с контрольными точками вернуться к последней завершённой пятиминутной отметке процедуры; в остальных схемах начать процедуру заново (x=0). Если t<60, повторить расчёт с шага 2; иначе закончить прогон без завершения обновления.
3. Результаты и обсуждение
Таблица 2 содержит доли исходов при трёх интенсивностях. λ = 0,01; 0,03; 0,06 мин⁻¹ соответствует в среднем 0,6; 1,8; 3,6 прерывания в час активной работы. При λ = 0 все схемы завершают процедуру за 35 мин и дают P₆₀ = 100%.
Таблица 2
Результаты моделирования, 50000 прогонов на вариант
Прерывания, 1/ч | P₆₀ поверх, % | P₆₀ A/B повтор, % | P₆₀ A/B точки, % | Pпот поверх, % |
0,6 | 79,59 | 85,38 | 99,99 | 16,43 |
1,8 | 49,06 | 56,40 | 98,63 | 43,10 |
3,6 | 22,90 | 26,21 | 87,86 | 65,23 |
Контрольная формула при λ = 0,03 мин⁻¹ даёт 29,1% для первого прерывания в интервале записи. Итоговые 43,1% включают последующие попытки: после сбоя вне критического интервала запись запускается заново и вновь подвержена риску. Это объясняет, почему оценка за 60 мин выше однократной вероятности.
На рисунке приведены все исследованные интенсивности. При 1,8 прерывания/ч A/B с полным повтором завершает обновление в 56,4% прогонов, а A/B с контрольными точками – в 98,6%. При той же нагрузке запись поверх действующего образа приводит к потере загружаемой версии в 43,1% прогонов. Разница между вариантами A/B относится к достижению срока, а сохранность прежнего образа у них одинакова в пределах принятых допущений.
Чувствительность к шагу контрольной точки проверена отдельно при λ = 0,03 мин⁻¹: для 2, 5 и 10 мин значение P₆₀ составило соответственно 99,9; 98,6 и 92,4%. Здесь стоимость сохранения точки уже включена в общую длительность этапов и не меняется с её частотой, поэтому эти значения показывают только выигрыш от меньшей повторной работы.

Рис. Вероятность завершить обновление за 60 мин в зависимости от интенсивности прерываний
Границы применимости связаны с заданными временами этапов, отсутствием накладных расходов на контрольные точки и предположением о сохранности старого слота при атомарном переключении. Некорректный образ, износ памяти, повреждение загрузчика, неполный откат и общий отказ двух слотов не моделировались. Загрузчик остаётся возможной общей точкой отказа; требования к защите и восстановлению прошивки изложены в NIST SP 800-193 [6]. Поэтому нулевое Pпот для A/B является свойством принятой схемы событий, а не оценкой реального устройства.
Заключение
При одинаковом номинальном времени модель выявила два эффекта: резервный слот сохраняет ранее загружаемый образ при прерывании записи, а контрольные точки повышают вероятность завершения процедуры в ограниченный срок. При λ = 0,03 мин⁻¹ и сроке 60 мин P₆₀ составила 98,6% с контрольными точками против 56,4% при полном повторе A/B; при записи поверх образа Pпот достигла 43,1%. Для переноса этих зависимостей на конкретное устройство необходимы замеры длительностей и проверка механизма переключения слотов.
.png&w=384&q=75)
.png&w=640&q=75)