След 11 месеца разработка, беше публикувано издание на инструмента CRIU 4.3 (Checkpoint and Restore In Userspace), предназначен за запазване и възстановяване на процеси в потребителското пространство. Инструментът позволява запазването на състоянието на един или група процеси и последващото възобновяване на работа от запазената позиция, включително след рестартиране на системата или на друг сървър, без прекъсване на вече установените мрежови връзки. Кодът на проекта е написан на езика C и се разпространява под лиценза GPLv2. CRIU се прилага в системи за управление на контейнери, като OpenVZ, LXC/LXD и Docker. Необходимите за работа на CRIU промени са включени в основния състав на ядрото на Linux.
От областите на приложение на технологията CRIU се откроява осигуряването на рестартиране на ОС без нарушаване на непрекъснатостта на изпълнение на дълготрайни процеси, живо мигриране на изолирани контейнери, ускоряване на стартиране на бавни процеси (може да се започне работа от състоянието, запазено след инициализация), извършване на обновления на ядрото без рестартиране на услуги, периодично запазване на състоянието на дълготрайни изчислителни задачи за възобновяване на работа в случай на аварийно завършване, балансировка на натоварването на възлите в клъстери, дублиране на процеси на друга машина (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 (в обход на страницовия кеш).
Източник: opennet.ru
