11ヶ月の開発期間を経て、ユーザー空間でのプロセスの保存と復元を目的としたツールキット、CRIU 4.3(Checkpoint and Restore in Userspace)がリリースされました。このツールキットを使用すると、1つまたは複数のプロセスの状態を保存し、システムの再起動後や別のサーバー上でも、既存のネットワーク接続を中断することなく、保存した状態から実行を再開できます。プロジェクトのコードはC言語で記述されており、GPLv2ライセンスで配布されています。CRIUは、OpenVZ、LXC/LXD、Dockerなどのコンテナ管理システムで使用されています。CRIUの動作に必要な変更は、コアカーネルに組み込まれています。 Linux.
CRIU テクノロジの適用分野には、長時間実行プロセスの継続性を中断せずに OS を再起動すること、分離されたコンテナのライブ マイグレーション、低速プロセスの起動を高速化すること (初期化後に保存された状態から作業を開始できます)、サービスを再起動せずにカーネル アップデートを実行すること、長時間実行コンピューティング タスクの状態を定期的に保存して異常終了した場合に作業を再開すること、クラスター内のノードの負荷を分散すること、プロセスを別のマシンに複製すること (リモート システムへのフォーク)、別のシステムでの分析のため、またはプログラムでさらにアクションをキャンセルする必要がある場合に備えて、操作中にユーザー アプリケーションのスナップショットを作成することなどがあります。
新しいリリースでは:
- LZ4アルゴリズムを用いたメモリブロックおよびページの圧縮機能と、マルチスレッドによる解凍機能が実装されました。
- VMA(仮想メモリ領域)ページの復元時に非同期I/O(AIO)を使用すること、ハードウェアブレークポイントを使用せずにタスクを停止する新しい方法、およびmemfdと匿名共有メモリの復元を並列化することにより、パフォーマンスが向上します。
- ARM64 GCS(Guarded Control Stack)拡張機能のサポートを追加しました。これにより、関数の戻りアドレスをハードウェアで保護できます。プロセッサは、関数に制御を移した後、戻りアドレスを通常のスタックだけでなく、直接変更できない別のシャドウスタックにも格納します。関数を終了する前に、戻りアドレスはシャドウスタックからポップされ、メインスタック上の戻りアドレスと比較されます。
- NVIDIA CUDAドライバAPIの状態を保存するためのバックエンドを追加しました。
- GPUマッピングの復元が完了しました。
- amdgpuドライバでは、DRM(Direct Rendering Manager)サブシステムバッファとDMA-BUFファイルディスクリプタの状態を保存および復元する機能が実装されました。
- オフラインモードでメモリイメージを圧縮および解凍するためのコマンドを追加しました。
- ネットワークソケットへのUIDバインディングに関する情報の保存と復元機能を追加しました。
- メモリページイメージの書き込みと読み込みをO_DIRECTモード(ページキャッシュをバイパス)で行うための「--image-io-mode」オプションを追加しました。
出所: オープンネット.ru
