## Firecracker
Amazon Web Services が開発したサーバーレスアプリケーション向け軽量仮想化ハイパーバイザー。NSDI 2020 で発表された(Agache, Brooker ほか)。
## 特徴
- コンテナ並みの軽量さとハードウェア仮想化(VMM)並みの隔離性を両立した MicroVM アーキテクチャ
- 各 MicroVM はゲスト Linux カーネル・Lambda シム・顧客コードを含み、外部との通信は virtio-net と virtio-blk のみ
- 形式検証済みの virtio 実装を採用し、攻撃対象領域を最小化
- KVM をベースとし、Rust で実装
## Lambda 内での役割
各 Lambda ワーカーは多数の Firecracker MicroVM を保持する。[[@2023__ATC__On-demand Container Loading in AWS Lambda]] が記述するコンテナローディングシステムでは、FUSE ベースのローカルエージェントが virtio-blk インタフェースを介してブロックデバイスを MicroVM に提供し、スパースロードを実現する。
## 軽量仮想化としての位置づけ
『詳解 システム・パフォーマンス 第2版』11章は、Firecrackerを「ハードウェア仮想化のセキュリティとコンテナの効率・高速ブートを両立する」軽量仮想化(著者は"コンテナ"より"microVM"という用語を好む)の代表例と位置づける。KVMをベースとしつつQEMUではなく新規実装の軽量VMMを使い、VMMのソースコード規模はQEMU(140万行超)の約1/28にあたる5万行、ブート時間は約100m秒、コンテナごとのメモリオーバーヘッドは5MB以下と報告されている[Agache 20]。ホストからはVM全体が単一の`firecracker`プロセスとして見え、ゲスト内部のプロセス別CPU消費はホストからは分からない(Weave Igniteで作成したVMをtop(1)で観察した実例)。(Source: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 11 クラウドコンピューティング]] §11.4, §11.4.1, §11.4.2, §11.4.4)
## 関連 source
- [[@2023__ATC__On-demand Container Loading in AWS Lambda]] — Firecracker を前提とした Lambda コンテナローディングの詳細
- [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 11 クラウドコンピューティング]] — 軽量仮想化(microVM)の技術的位置づけ・オーバーヘッド数値・可観測性