# Xen
Xen は仮想マシンを実行するハイパーバイザーである。Unikraft は Xen を対象プラットフォームとしてサポートし、Hello World の最小イメージを 40 KB、9pfs デバイスの起動時間オーバーヘッドを 2.7 ms と測定した。(Source: {source})
2010年前後の実務事例では、[[Picnik]]のレンダーサーバがXen上で稼働していたことが、Amazon EC2への移行を容易にした要因として登場する。PicnikはXen向けのVMイメージファイルをEC2のXenに合わせて修正し、AMI(Amazon Machine Image)としてパッケージするだけでEC2へ移行できた。(Source: [[@2011__OReillyJapan__ウェブオペレーション - Chapter 2 Picnik におけるクラウドコンピューティングの利用とその教訓]] §2.1.2)
*Computer Architecture: A Quantitative Approach* 第6版第2章は、Xenを準仮想化(paravirtualization、ゲストOSに小さな変更を許容してVMM実装を単純化する方式)の代表例として扱う。TLBフラッシュを避けるためXen自身を各VMのアドレス空間の上位64MiBにマップし、80x86の4段の特権レベルのうちXen VMM=レベル0・ゲストOS=レベル1・アプリケーション=レベル3に配置する。LinuxのXen移植は80x86固有コードの約1%(約3000行)を変更するのみでアプリケーションバイナリインタフェースには影響しない。I/Oは各物理デバイスに専用の「ドライバドメイン」(特権VM)を割り当て、通常のゲストVM(「ゲストドメイン」)は仮想デバイスドライバ経由でチャネル越しにドライバドメインと通信し、ページの再マッピングでデータを受け渡す。2004年時点でXenは25個のVMを同時実行できた(同時期のIBMメインフレームは数千個のLinux VMを実行していた)(Source: [[@2019__MorganKaufmann__Computer Architecture - A Quantitative Approach - Chapter 2 Memory Hierarchy Design]] §2.4)。
## 関連ソース
- [[@2021__EuroSys__Unikraft - Fast, Specialized Unikernels the Easy Way]]
- [[@2011__OReillyJapan__ウェブオペレーション - Chapter 2 Picnik におけるクラウドコンピューティングの利用とその教訓]]
- [[@2019__MorganKaufmann__Computer Architecture - A Quantitative Approach - Chapter 2 Memory Hierarchy Design]] §2.4