Выпуск CRIU 4.3, системы для сохранения и восстановления состояния процессов в Linux
- После 11 месяцев разработки вышел CRIU 4.3 — инструмент для сохранения и восстановления процессов Linux.
- Выпуск добавляет сжатие памяти LZ4 и ускоряет восстановление за счёт асинхронного ввода-вывода и параллельной обработки.
- Добавлена поддержка ARM64 GCS и сохранения состояния графических драйверов NVIDIA CUDA и AMDGPU.
Почему это важно: CRIU применяют для live-миграции контейнеров, обновления ядра без перезапуска сервисов и возобновления вычислений после аварий.
После 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 (в обход страничного кэша).
Источник: http://www.opennet.ru/opennews/art.shtml? num=66509
© OpenNet
