Fast In-Memory CRIU for Docker Containers

MEMSYS '19(2019) · 論文 · venkatesh2019criu

📅 この論文を見た日

初回 2026-06-09 / 最終 2026-06-09 / 計 2 回更新

AI解説

著者オープンアクセス版(全文): https://par.nsf.gov/servlets/purl/10192799 情報源: 全文(PDF・13頁)を精読して記述。本文に無い事項は書いていない(旧版にあった「VAS 切り替えはプロセス切り替えの4倍速い/VAS 生成は fork の7倍速い」等の記述は、本論文の主張ではないため削除した。本論文は VAS の switch を使っていない)。

一言で

CRIU(ユーザ空間のコンテナ チェックポイント/リストア)の遅さは、メモリ ページをイメージ ファイルへ書き出す/読み戻すファイル I/O が支配的であることに由来する。本研究は、カーネル機能 MVAS(複数の独立した仮想アドレス空間) を使い、プロセスのメモリを DRAM 上の独立したスナップショット用アドレス空間として保存する VAS-CRIU を提案。ファイル操作を回避し、アドレス空間のスナップショット/リストアを約2桁(100倍規模)高速化、結果としてスナップショット時間を最大10×・リストア時間を最大9×削減する。永続化(クラッシュ越えの保存)が不要な「同一マシン内のクローン・スケーリング・デバッグ」用途に最適化している。

背景・問題

Docker などのコンテナのライフサイクル管理では、スナップショット/リストア(走行中コンテナの全状態を保存し、後で別コンテナに復元)が基盤機構になる。大容量メモリのマシンでは、新インスタンスへのスケーリング・巻き戻しデバッグ・スケジューリング補助といったサービスをメモリ内スナップショットで加速できる——これらはノードのクラッシュ/再起動を越えて永続化する必要がない

ところが Docker コンテナの現行手段である CRIU は、走行プロセスを一時停止し、CPU・レジスタ・シグナル・メモリイメージ ファイルに保存する。メモリ ページのファイル書き出し/読み戻しが、メモリ消費の大きいアプリでは高コストで、メモリ内ファイルシステム(ramfs)上でさえページとメタデータの読み書き時間が支配的になる。論文の実測では、8GB のアドレス空間でメモリ復元が全復元時間の 83% を占める。永続化が要らない用途なのに、ファイル I/O の遅さを払わされているのが問題。

提案手法

MVAS — プロセスから独立した仮想アドレス空間

土台は MVAS(Multiple Virtual Address Spaces):プロセスとは独立に複数の仮想アドレス空間(VAS)を持てる、大容量メモリ機向けに設計されたカーネル機能。VAS はページテーブルを含み、プロセスから切り離し(detach)・保存・別プロセスへ再付与(attach)できる。永続メモリに保存すれば再起動や OS バージョンを越えても生き残る(本研究の用途では永続化はしない)。

VAS-CRIU — スナップショットを DRAM 上の VAS に取る

CRIU のメモリ保存パスを MVAS に差し替えたのが VAS-CRIU。新コマンド vas_snapshot pid が、対象プロセスのメモリを Copy-On-Write(COW)の VAS として複製する。

なぜ fork を使わないかvas_snapshot は fork と同様に COW でページテーブルを複製するが、fork は呼び出しスレッドの状態しか複製しない(マルチスレッドのプロセス全体のスナップショットには不十分)。また fork ベースのスナップショットは VAS-CRIU と同じ COW オーバーヘッドを負う一方、fork 自体が vas_snapshot より遅い

リストア

CRIU の復元は fork して自分を復元対象プロセスに変身させ、共有リソースは一度復元して以後 fork で暗黙に共有する。VAS-CRIU では、保存した VAS(mm_struct・VMA・ページテーブル)をプロセスに付け直すことで、ファイルからページを読み戻すよりはるかに速く状態を復元する。

数式・アルゴリズム

最適化問題ではなくシステム機構なので定式化はない。効きどころを言葉で:従来 CRIU の停止時間は「全ページのファイル書き出し」に比例(ページ量に依存)するのに対し、VAS-CRIU は「ページテーブル等メタデータの COW 複製」だけで、ページ量にほぼ依存しない。mm_struct のサイズは VMA 数に依存し実ページ総量よりずっと小さいため、メモリ消費が大きいアプリほど差が開く

実験・結果

関連研究との関係(メモ)

Q&A

(自分がAIに実際に質問したことだけを Q/A 形式で残す。まだなし。)

自分のコメント

(ここは自分で都度書く欄。例:「永続化不要・同一マシン内クローン」という前提が、自分のクラウドバースティング移行シナリオにどこまで当てはまるか確認したい。)