# QEMU 汎用のハードウェア仮想化ハイパーバイザー(Fabrice Bellard, 2005)。KVM(Kernel-based Virtual Machine)Linuxカーネルモジュールと組み合わせることで、ハードウェア支援仮想化命令によりゲストコードをネイティブ実行する。VMごとにホストOS上の専用プロセスが割り当てられ、イベント駆動アーキテクチャ(`main_loop_wait()`)でファイルディスクリプタ・タイマー・bottom-halfのイベントを処理する。`ioctl(KVM_RUN)`でゲストに制御を渡し、ゲストがトラップするまでQEMU自体はループに関与しない。40以上のエミュレートデバイスをサポートする機能完全性が特徴で、[[Firecracker]]・[[Cloud Hypervisor]]のような新世代の最小主義的ハイパーバイザーと対比される。[[Kata Containers]]はQEMUをコアの分離機構として利用する。 [[@2021__Middleware__A Fresh Look at the Architecture and Performance of Contemporary Isolation Platforms]] では、QEMUはメモリ・I/O・ネットワークのマイクロベンチマークで概ねネイティブに近い性能を示し、拡張HAPメトリクス(ホストカーネル関数呼び出し数)ではFirecrackerより広いインタフェースを持つ一方、Cloud Hypervisorよりは狭いインタフェースを示した。μVMマシンモデル(Firecracker型の最小デバイスモデルをQEMUに適用したもの)を使った起動は、意外にも通常のQEMUより遅いという結果が報告されている。 [[Unikraft]] は QEMU/KVM を対応 VMM として使い、Hello World の最小イメージを KVM 上で 200 KB とした。論文のエンドツーエンド起動時間では、通常の QEMU が約 40 ms、QEMU microVM が約 10 ms であり、Solo5・Firecracker の約 3 ms より遅い。(Source: [[@2021__EuroSys__Unikraft - Fast, Specialized Unikernels the Easy Way]])