4 ポイント 投稿者 xguru 2023-07-11 | 3件のコメント | WhatsAppで共有
  • 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件のコメント

 
tujuc 2023-07-13

自分たちの製品を紹介するのは良いのですが.. AWSのサービスをそのまま使うほうがいいのでは、という気もしますね..
ssssutさんのおっしゃる通り、Fargateでも動作するサービスなので、そこまでではないと思うのですが。

メモリを返さないことの何が問題なのか、まだよく分かりませんね。CPUは競合が発生してもアプリケーションが遅くなるだけで起動自体には問題ありませんが、メモリはどうしようもないので...

 
ssssut 2023-07-12

追記: AWS Lambda だけでなく、長時間実行される ECS Fargate でも Firecracker が使用されています。

 
GN⁺ 2023-07-11
Hacker Newsの意見
  • FirecrackerはCodeSandboxで開発環境をホストするために使われているが、長時間実行されるワークロードにも使えると思う。
  • QEMUには、PCIやACPIのサポートがない最小限のマシンタイプであるmicrovmという、Firecrackerに着想を得たターゲットがあり、短期間のゲスト向けに設計されている。
  • Cloud-hypervisorは、メモリ回収やその他の機能をサポートする、Firecrackerに似た別の選択肢だ。
  • Firecrackerには、ホストシステムからメモリを回収するために膨張・収縮できるバルーンデバイスがある。
  • この記事はFirecrackerの制約には触れているが、QEMUについての情報はあまり提供していない。
  • Flyは長時間実行プロセスをホストするためにFirecrackerを使っている。
  • ブロックキャッシュの重複排除やゼロコピー統合を含め、VMがホストとより賢く統合されることを望んでいる。
  • QEMUはFirecrackerと違ってボリュームをバインドマウントできるが、これはセキュリティリスクになりうる。