CRIU 4.3: сжатие памяти LZ4 и параллельное восстановление

CRIU 4.3: сжатие памяти LZ4 и параллельное восстановление
Содержание статьи

19 октября 2026 года опубликован CRIU 4.3. Инструмент для Linux получил сжатие сохранённой памяти с помощью LZ4, многопоточное распаковывание и новые механизмы параллельного восстановления. Обновление интересно командам, которые исследуют перенос работающих приложений или возвращение процесса к сохранённому состоянию.

На Mentoring.digital объясняем смысл этих изменений и предлагаем небольшой проверяемый эксперимент вместо обещания ускорить любой контейнер.

Что именно сохраняет CRIU

CRIU умеет приостановить приложение или контейнер и записать его состояние на диск, чтобы затем восстановить выполнение. Такой снимок называют checkpoint. Он нужен для продолжения работы из сохранённой точки, поэтому его нельзя приравнивать к обычному набору файлов приложения.

Проект применяют в сценариях миграции, создания снимков и отладки. При этом CRIU прямо предупреждает: восстановить абсолютно все особенности состояния любого процесса пока нельзя. Доступность конкретного сценария зависит от используемых ресурсов и поддержки со стороны системы.

Если для эксперимента пока не хватает понимания процессов, прав и сервисов, эти основы можно разобрать с наставником по Linux на небольшом учебном приложении.

Что добавили в версии 4.3

Для образов памяти появились сжатие страниц и блоков алгоритмом LZ4, а также многопоточная декомпрессия. Восстановление содержимого memfd и анонимной разделяемой памяти теперь может выполняться параллельно через asyncd. Для восстановления страниц виртуальной памяти используется и механизм асинхронного ввода-вывода Linux.

Отдельные изменения относятся к GPU: плагин CUDA получил механизм checkpoint через CUDA Driver API и сопоставление устройств при восстановлении. В плагине AMDGPU добавлена работа с буферными объектами DRM и файловыми дескрипторами DMA-BUF. Эти пункты не означают универсальной переносимости любого вычисления между любыми видеокартами.

Редакционный вывод: релиз стоит оценивать по конкретному ограничению вашего сценария. Если узким местом был объём снимков, исследуйте сжатие. Если время восстановления, сравните его на одинаковой нагрузке. В анонсе нет одного коэффициента ускорения, который можно обещать всем приложениям.

Как проверить обновление на своём процессе

  1. На тестовой машине выполните criu check. Эта команда проверяет базовые возможности ядра; для дополнительных возможностей предусмотрена criu check --extra.
  2. Выберите небольшой процесс с понятным состоянием. Заранее определите, что должно сохраниться после восстановления.
  3. Проведите сохранение и восстановление в изолированном окружении. Сравните результат работы, размер снимка и время операций.
  4. Повторите опыт с ресурсами, которые нужны реальному приложению, например открытыми файлами и сетевыми соединениями.

Даже успешный criu check не подтверждает весь этот сценарий. Для проектирования стенда и диагностики различий между окружениями пригодится практическая работа с ментором по DevOps. Критерием успеха должно быть корректное продолжение приложения после восстановления.

Похожие статьи по данной теме