LilyVM と仮想化技術
榮樂 英樹
<[email protected]>
内容
背景
LilyVM
その他の VM およびユーザレベル OS
CPU による VM のサポート
1 台の計算機で複数の OS を
動かしたい
OS の移行 (Mac OS 9 と Mac OS X)
異なるシステムの組み合わせ
(Windows と NetBSD)
動作テスト
開発
など
1 台の計算機で複数の OS を
動かす方法
仮想計算機 (VM) (Type-I, Type-II)
ユーザレベル OS
VM + ユーザレベル OS
仮想計算機 (VM) (Type-I)
ホスト OS が存在し
ないタイプの仮想計
算機
sh
例: VMware ESX
Server, Xen
Guest OS kernel
Virtual Machine Monitor
ハードウェア
仮想計算機 (VM) (Type-II)
実機用のOSをそのま
ま実行できる、下位
層のシステム(ホス
トOS)から完全に独
立した実行環境を提
供する
sh
Guest OS kernel
sh
例: Bochs, VMware
Workstation, QEMU
VM
Host OS kernel
ハードウェア
ユーザレベル OS
OS をユーザプロセス
として実行する
実機用の OS を移植
して作られている
例: User-mode Linux
(UML)
sh
sh
ユーザレベル
OS kernel
Host OS kernel
ハードウェア
VM + ユーザレベル OS
 VM が、特権命令や入出力装
置などのうち、必要な部分だ
けをエミュレートする
 LilyVM [http://lilyvm.sf.net]
 特権命令などをコンパイル時
にエミュレートするコードに
書き換える
 ユーザレベル OS カーネル: 自
動変換 + わずかな修正
 ホスト OS: NetBSD, FreeBSD,
Linux
 ゲスト OS: NetBSD, FreeBSD,
Linux 2.4
sh
sh
VM
ユーザレベル
OS kernel
Host OS kernel
ハードウェア
NetBSD で LilyVM
ホスト OS の ptrace() に以下の機能を追
加する必要がある
PTRACE_SYSEMU
(または PTRACE_SYSCALL)
制御レジスタ %cr2、エラーコード、および
トラップ番号を取得するための機能
本体への追加を希望します!
LilyVM の開発予定
高速化
浮動小数点関連
MMU まわり
ネットワーク
AMD64, Power PC 等のサポート
その他の VM およびユーザレ
ベル OS
VMware
Bochs
QEMU
Plex86
Xen
User-mode Linux
coLinux
比較
VM
ユーザレベ
OS
VM と機械語命令
の変換
その他
VMware
QEMU,
User-mode
Linux
LilyVM
Plex86
Xen
coLinux
VM が提供す
アブストラク
ン
実機
実機
なし
実機
実機
Xen
なし
ゲスト OS の
正
不要
不要
移植 (大)
自動
自動
移植
(小)
移植
(小)
ホスト OS と
隔離
大
大
小
小
大
大
なし
仮想化のオー
バヘッド
?
特大
なし
中
大
小
小
ホスト
x86
x86, PPC 等
x86, PPC 等
x86
x86
x86
x86
ライセンス
商用
LGPL
GPL
GPL
LGPL
GPL
GPL
VMware
x86 の VM ソフトウェアの老舗
詳細不明
ring 3 は元の機械語命令をそのまま実行して
いるという噂だが、ring 0 やリアル・モード
も速いし...
Bochs
CPU および周辺装置
をエミュレートする
移植性が高い
オーバヘッドが非常
に大きい
sh
Guest OS kernel
sh
Bochs
Host OS kernel
ハードウェア
QEMU
CPU および周辺装置
をエミュレートする
機械語命令を動的に
変換することによっ
て高速化している
カーネルモジュール
によりさらなる高速
化が進められている
sh
Guest OS kernel
sh
QEMU
Host OS kernel
ハードウェア
Plex86
CPU の一部と周辺装
置をエミュレートす
る
ゲスト OS の機械語
命令を静的に変換し
ている
カーネルモジュール
によりメモリ空間の
切り替えなどを行う
sh
Modified Linux
sh
Plex86
Host OS kernel + module
ハードウェア
Xen
ゲスト OS を Xen ア
ーキテクチャに移植
している
周辺装置の制御のた
めに Linux をひとつ
使う
sh
Guest OS kernel
Xen
ハードウェア
coLinux
ホスト OS のデバイ
スドライバとして
Linux を動作させる
MMU や割り込みに関
する部分が多く修正
されている
性能は非常に良い
sh
sh
coLinux kernel
Windows or Linux kernel
ハードウェア
User-mode Linux
Linux 上でプロセスと
して動作するように
Linux が移植されてい
る
ptrace() など OS に依
存する機能を使って
いて移植性が低い
sh
sh
User-mode Linux
kernel
Linux kernel
ハードウェア
比較
VM
ユーザレベ
OS
VM と機械語命令
の変換
その他
VMware
QEMU,
User-mode
Linux
LilyVM
Plex86
Xen
coLinux
VM が提供す
アブストラク
ン
実機
実機
なし
実機
実機
Xen
なし
ゲスト OS の
正
不要
不要
移植 (大)
自動
自動
移植
(小)
移植
(小)
ホスト OS と
隔離
大
大
小
小
大
大
なし
仮想化のオー
バヘッド
?
特大
なし
中
大
小
小
ホスト
x86
x86, PPC 等
x86, PPC 等
x86
x86
x86
x86
ライセンス
商用
LGPL
GPL
GPL
LGPL
GPL
GPL
CPU による VM のサポート
背景
VM の必要性が高まってきている
従来の IA-32 における VM 開発は難しい
(センシティブな非特権命令の存在等)
VMM の実現を容易にするための IA-32 の
拡張
Intel Virtualization Technology
AMD64 Pacifica
Intel Virtualization
Technology
Virtual Machine Control data Structure
(VMCS) : 制御レジスタや状態などを含む
MMU 関連: physical-address extension ?
Guest 0
VM Exit
VMXON
Guest 1
VM
Entry
VMM
VM Exit
VMXOFF
Intel Virtualization Technology Specification for the IA-32 Intel Architecture
(C97063-002) Figure 1-1 より引用
AMD64 Pacifica
Intel のものとにたような機能
のはず
Intel のものとの互換性がないらしい
CPU による VM のサポートの
ポイント
命令エミュレーションは基本的に不要
I/O 命令およびハードウェア割り込みのエ
ミュレーションは必要
CPU による VM のサポートで
何が変わるか: LilyVM
新機能がユーザレベルから使えれば...
大幅高速化?
I/O 命令は今の書き換える方法のほうが高速
な可能性がある
ホスト OS が新機能をうまくユーザレベ
ルに提供できるかどうか
ゲスト OS からのホスト OS の呼び出し等
CPU による VM のサポートで
何が変わるか: その他の VM
VMware: 性能向上
Bochs: 今まで通り
QEMU: x86 on x86 における性能向上?
Plex86: ?
Xen: 性能向上?、Windows 対応
User-mode Linux: 今まで通り
coLinux: 今まで通り
まとめ
LilyVM [http://lilyvm.sf.net]
機械語命令の書き換え
NetBSD への機能追加
その他の VM およびユーザレベル OS
CPU による VM のサポート
ダウンロード

プレゼンテーション資料