Slide 1

Slide 1 text

Обобщённая теория восстановления деревьев процессов: подводные камни checkpoint/restore Николай Ефанов МФТИ(ГУ) So/ware Engineering Conference Russia November 14-15, 2019. Saint-Petersburg

Slide 2

Slide 2 text

Checkpoint-Restore 2 Host 1 Host 2 сохранить возобновить

Slide 3

Slide 3 text

Применение 1.  Живая миграция 2.  Технологии контейнерной виртуализации 3.  Восстановление после сбоев 4.  Отложенная отладка 5.  Обновления ядра ОС «на лету» 6.  Ускорение загрузки приложений 7.  Пауза в играх J 3

Slide 4

Slide 4 text

Подзадача: восстановить дерево процессов: 4

Slide 5

Slide 5 text

Подзадача: восстановить дерево процессов…решение: 5

Slide 6

Slide 6 text

Подзадача: восстановить дерево процессов… 1.  Профилировка + простота и истинность измерений - накладные расходы и непрозрачность 2.  Эвристики реконструкции -неполное покрытие 3.  Математическое моделирование +должно работать -а какой сложности? 6

Slide 7

Slide 7 text

Формальные модели восстановления: Алгоритм AGTTM 7 Tà G(T) à ребёрное покрытие T\{root} à список команд

Slide 8

Slide 8 text

Формальные модели восстановления: Алгоритм AGTTM 1.  Препроцессинг: Восстановить завершённые процессы, порядок в поддеревьях (обратить все «обратные reparent’ы») 2.  Обработка 3.  Пост-обработка 8

Slide 9

Slide 9 text

Формальные модели восстановления: Алгоритм AGTTM 1.  Препроцессинг: Восстановить завершённые процессы 2.  Обработка: построить граф G(T) на базе анализа Т 3. Пост-обработка 9

Slide 10

Slide 10 text

Формальные модели восстановления: Алгоритм AGTTM 1.  Препроцессинг: Восстановить завершённые процессы 2.  Обработка: 3. Пост-обработка 10 <

Slide 11

Slide 11 text

Формальные модели восстановления: Алгоритм AGTTM 1.  Препроцессинг: Восстановить завершённые процессы 2.  Обработка: 3. Пост-обработка 11 output>>

Slide 12

Slide 12 text

Пост-обработка графа: зачем? 12

Slide 13

Slide 13 text

Пост-обработка графа: зачем? 13 Рассмотрим дерево (1 1 1) à(2 3 1) à(3 2 1) T G(T) Граф действий

Slide 14

Slide 14 text

Пост-обработка графа: зачем? 14 Рассмотрим дерево (1 1 1) à(2 3 1) à(3 2 1) Цикл на вершинах!!! T G(T) Граф действий

Slide 15

Slide 15 text

Анализ зависимостей Давайте разбираться… Исследуем зависимости между атрибутами более формально 15

Slide 16

Slide 16 text

Анализ зависимостей 16 Семантика: зависимость (u,v): для реализации u нужно v. Задан частичный порядок на вершинах G(T)! Для любого подмножества состояний существует единственный ближайший прародитель. Теорема 1.

Slide 17

Slide 17 text

Диаграмма зависимостей 17 G(T) Диаграмма Хассе G(T).nodes

Slide 18

Slide 18 text

Диаграмма зависимостей 18 Это же не полурешётка L Надо исправлять! G(T) Диаграмма Хассе G(T).nodes

Slide 19

Slide 19 text

Промежуточный носитель 19 Теперь полурешёткаJ Единственное присваивание- SSA-форма! (привет компиляторам)

Slide 20

Slide 20 text

Обобщаем 20 Общая схема реконструкции

Slide 21

Slide 21 text

Нужно больше обобщений… 21

Slide 22

Slide 22 text

Нужно больше обобщений… 22 Кроме того… Лемма 2. Лемма 1. Лемма 3.

Slide 23

Slide 23 text

Критерий корректности дерева 23 Смысл: быстрая генерация корректных тестов Теорема 2.1. Теорема 2.2.

Slide 24

Slide 24 text

Где это ещё применить? Disclaimer: везде, где состояния + зависимости = полурешётка. •  Реинжиниринг иерархий классов в ООП: подъемы/спуски полей/методов для классов/суперклассов: •  Реверс-инжиниринг иерархий классов в ООП: •  Генерация тестов для ОС, систем виртуализации, etc 24

Slide 25

Slide 25 text

Где это ещё применить? Disclaimer: везде, где состояния + зависимости = полурешётка. •  Реинжиниринг иерархий классов в ООП: подъемы/спуски полей/методов для классов/суперклассов: •  Реверс-инжиниринг иерархий классов в ООП: •  Генерация тестов для ОС, систем виртуализации, etc 25

Slide 26

Slide 26 text

Где это ещё применить? Disclaimer: везде, где состояния + зависимости = полурешётка. •  Реинжиниринг иерархий классов в ООП •  Реверс-инжиниринг иерархий классов в ООП: Проект Marx: h~p://www.cs.ucy.ac.cy/~eliasathan/papers/ndss17.pdf Основная идея: эвристический анализ таблиц vtable из бинарных файлов соответствующего ABI, выстраивание частичных порядков на записях. •  Генерация тестов для ОС, систем виртуализации, etc 26

Slide 27

Slide 27 text

Выводы: 27 1.  Обобщённая модель позволяет: •  Гарантированно восстанавливать деревья процессов •  Исправлять аномалии реконструкции •  Справляться с множеством различных ресурсов •  Служить генератором тестов (быстрее, чем перебор) Открытые вопросы: - Любые ли отношения между атрибутами допустимы (дисклеймер: скорее нет – затруднительно описываются файловые блокировки, другие несравнимые объекты) -  Интеграция в индустрию (Вероятно, CRIU?)

Slide 28

Slide 28 text

28 1.  Ефанов Николай, МФТИ 2.  h~ps://github.com/nefanov 3.  [email protected] Contact