## 定義 コンテナイメージ全体を転送・展開し終えるのを待たずに、起動に必要なデータのみをオンデマンドで取得する技術群の総称。サーバーレス・FaaS・クラウドコンピュートにおける冷起動(コールドスタート)レイテンシを削減することが目的である。アプローチはファイルシステムレベルとブロックレベルの 2 系統に大別される。(Source: [[@2023__ATC__On-demand Container Loading in AWS Lambda]]) **背景となる疎性の観察**: Harter et al.(Slacker, FAST 2016)は、コンテナ起動時に実際に必要なデータはイメージ全体の平均 6.4% に過ぎないことを報告した。この疎性がオンデマンドロードの根拠となる。 ## 主要アプローチの対比 | アプローチ | 粒度 | 代表システム | 重複排除 | |-----------|------|------------|---------| | ファイルシステムレベル | ファイル/レイヤー | Slacker(FAST'16)、Starlight(NSDI'22)、eStargz | レイヤー単位 | | ブロックレベル | 固定サイズチャンク | AWS Lambda 方式 [[@2023__ATC__On-demand Container Loading in AWS Lambda]]、DADI(ATC'20) | 広域ブロック重複排除 | | P2P 配信 | レイヤー | DADI(ATC'20)、FaaSNet(ATC'21) | 部分的 | | 分散 FS | ファイル | Wharf(SoCC'18)、CFS(SIGMOD'19) | FS レベル | ## 横断的知見 - ファイルシステムレベルのアプローチは実装が自然だが、FaaS システムではセキュリティ上の攻撃対象領域の問題がある。Lambda は virtio-blk の単一インタフェースを維持するためブロックレベルを選択した。(Source: [[@2023__ATC__On-demand Container Loading in AWS Lambda]]) - ブロックレベルの重複排除を安全に行うには、キーを共有しない暗号化スキーム([[収束暗号化]])が必要になる。通常の暗号化と重複排除は相反するため、工夫が不可欠。(Source: [[@2023__ATC__On-demand Container Loading in AWS Lambda]]) - テールレイテンシは「1 回の起動が何千ものチャンクを取得する」構造において特に重要で、1000 チャンク取得では 99.9 パーセンタイルレイテンシを 63% のタスクで経験する。イレイジャーコーディングはレプリケーションよりコスト効率よくこの問題を解決する。(Source: [[@2023__ATC__On-demand Container Loading in AWS Lambda]]) ## 未解決の問い - 塩(Salt)によるデデュプ範囲の動的制御と起動レイテンシのトレードオフを定量的に評価した研究はあるか? - L2 キャッシュのプリウォーム(新規関数の初回コールドスタート問題)はどの程度効果的か?Lambda 論文では検討中とのみ言及。 - userfaultfd + mmap への FUSE 置き換えは FUSE と比べてどの程度のレイテンシ改善をもたらすか? ## 関連 - [[@2023__ATC__On-demand Container Loading in AWS Lambda]] — AWS Lambda における実装の詳細 - [[収束暗号化]] — 安全なブロック重複排除の暗号化スキーム - [[イレイジャーコーディング]] — テールレイテンシ削減のためのキャッシュ冗長化技法 - [[メタ安定障害]] — 高ヒット率キャッシュが空になったときのリスク ## 出典 - Brooker et al. "On-demand Container Loading in AWS Lambda." USENIX ATC 2023. - Harter et al. "Slacker: Fast Distribution with Lazy Docker Containers." FAST 2016. - DADI: Li et al., USENIX ATC 2020.