## 定義
コンテナイメージ全体を転送・展開し終えるのを待たずに、起動に必要なデータのみをオンデマンドで取得する技術群の総称。サーバーレス・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.