- Hocus(セルフホスト可能な GitPod/GitHub Codespaces の代替)が Firecracker を QEMU に置き換えた
Firecracker は短時間で実行して終了するタイプのワークロードに最適化されている
- AWS Lambda で使われている、軽量で高速かつ安全なマイクロVMハイパーバイザー
- ただし、そこまで軽量というわけでもない
- 長時間動作するワークロードに必須の「動的RAM管理機能」を提供していない。一度割り当てたRAMをホストに返却しない
- ストレージをホストに戻す機能もない。VM内で大きなファイルを作成して削除しても、ホストに空き容量は返されない。VM全体のドライブを削除するまで占有し続ける
- GPUサポートがなく、高性能なディスクI/Oも提供されない
QEMU も完璧ではない
- 設定すべきことが多すぎる
- 未使用RAMを返却するために、ホスト側で3つの課題を解決しなければならない
- その機能の存在自体を知ること(free page reporting と呼ばれ、手動で有効化する必要がある)
- Linux の DAMON 機能を理解し、用途と設定方法を把握し、それをサポートする Linux カーネルをコンパイルしなければならない
- ゲストで Transparent Huge Pages を使わないようにしなければならず、そうしないと VM は大量のメモリを返却しない
- 試験導入には2か月かかった
- Firecracker/QEMU のコードを読み、
- DAMON を設定するために開発者とメールのやり取りもした
→ (DAMON の開発者は韓国出身のパク・ソンジェ氏です。)
結論
- QEMU には汎用ワークロードの運用に必要な機能が備わっている
- ただし、設定には時間と忍耐が必要
- Short-lived, Untrusted Workload には Firecracker が良い選択肢
- しかし、もし開発環境を VM 上で運用したいなら Hocus を使えばよい(大変な作業はすべて私たちが済ませてあるので)
3件のコメント
自分たちの製品を紹介するのは良いのですが.. AWSのサービスをそのまま使うほうがいいのでは、という気もしますね..
ssssutさんのおっしゃる通り、Fargateでも動作するサービスなので、そこまでではないと思うのですが。
メモリを返さないことの何が問題なのか、まだよく分かりませんね。CPUは競合が発生してもアプリケーションが遅くなるだけで起動自体には問題ありませんが、メモリはどうしようもないので...
追記: AWS Lambda だけでなく、長時間実行される ECS Fargate でも Firecracker が使用されています。
Hacker Newsの意見
microvmという、Firecrackerに着想を得たターゲットがあり、短期間のゲスト向けに設計されている。