|
После 11 месяцев разработки опубликован выпуск инструментария CRIU 4.3 (Checkpoint and Restore In Userspace), предназначенного для сохранения и восстановления процессов в пространстве пользователя. Инструментарий позволяет сохранить состояние одного или группы процессов, а затем возобновить работу с сохранённой позиции, в том числе после перезагрузки системы или на другом сервере без разрыва уже установленных сетевых соединений. Код проекта написан на языке Си и распространяется под лицензией GPLv2. CRIU применяется в таких системах управления контейнерами, как OpenVZ, LXC/LXD и Docker. Необходимые для работы CRIU изменения включены в основной состав ядра Linux.
Из областей применения технологии CRIU отмечается обеспечение перезагрузки ОС без нарушения непрерывности выполнения длительно выполняемых процессов, Live-миграция изолированных контейнеров, ускорение запуска медленных процессов (можно начать работу с состояния, сохранённого после инициализации), проведение обновлений ядра без перезапуска сервисов, периодическое сохранение состояния длительно выполняемых вычислительных задач для возобновления работы в случае аварийного завершения, балансировка нагрузки на узлы в кластерах, дублирование процессов на другую машину (fork на удалённую систему), создание снапшотов пользовательских приложений в процессе работы для их анализа на другой системе или на случай если потребуется отменить дальнейшие действия в программе.
В новом выпуске:
- Реализована возможность сжатия блоков и страниц памяти с использованием алгоритма LZ4 и многопоточной распаковкой.
- Повышена производительность благодаря задействованию асинхронного ввода/вывода (AIO) при восстановлении страниц VMA (Virtual Memory Area ), новому методу остановки задач без применения аппаратных точек останова и распараллеливанию восстановления memfd и анонимной разделяемой памяти.
- Добавлена поддержка расширения ARM64 GCS (Guarded Control Stack), обеспечивающего аппаратную защиту адресов возврата из функций. После передачи управления функции, адреса возврата сохраняются процессором не только в обычном стеке, но и в отдельном теневом стеке, который не может быть изменён напрямую. Перед выходом из функции адрес возврата извлекается из теневого стека и сверяется с адресом возврата из основного стека.
- Добавлен бэкенд для сохранения состояния API драйвера NVIDIA CUDA.
- Обеспечено восстановление маппинга GPU.
- Для драйвера amdgpu реализовано сохранение и восстановление состояния буферов подсистемы DRM (Direct Rendering Manager) и файловых дескрипторов DMA-BUF.
- Добавлены команды для сжатия и распаковки образов памяти в offline-режиме.
- Добавлена поддержка сохранения и восстановления информации о привязке UID-идентификаторов к сетевым сокетам.
- Добавлена опция "--image-io-mode" для записи и чтения образов страниц памяти в режиме O_DIRECT (в обход страничного кэша).
|