Document

単一システムイメージを
提供するための仮想マシンモニタ
金田憲二*#
* 東京大学
大山恵弘*
#
米澤明憲*
日本学術振興会
クラスタが隆盛を極める
PCの性能向上・価格低下
数台のPCで,10年前のスパコンに近い性能
– TOP500中の70%以上をクラスタが占める
個人・グループで小・中規模クラスタを所有
クラスタの利便性は著しく低い
• 計算資源の管理が困難
例)クラスタ上の全プロセスの状態を取得するには?
• 並列アプリの開発が困難
例)MPIやPVMなどのメッセージパッシング型が大半
• …
本研究の目標
• クラスタの簡便な利用を可能にする
– Easy to manage
– Easy to develop
 クラスタ上に単一システムイメージを構築する
例)共有メモリ空間,大域プロセス空間
本研究のアプローチ
仮想マシンモニタ(VMM)を利用する
実機と同等の処理が可能な仮想マシンを
構築するミドルウェアシステム
例)VMware [1],Xen [2],LilyVM [3]
[1] http://www.vmware.com/
[2] P. Barham et al.SOSP’03
[3] H. Eiraku et al. BSDCon’03
設計・実装するVMM
クラスタ上に仮想的にSMPマシンを構築する
仮想SMPマシン
仮想化
クラスタ
本アプローチの利点
• 既存のOSが仮想マシン上で動作する
 分散資源を簡便に管理できる
例)psコマンドやkillコマンドによるプロセス管理
• 共有メモリ用の並列アプリが動作する
 並列アプリを簡便に記述・実行できる
– 科学技術計算からwebサーバまで
例)makeコマンドやシェルスクリプトの利用
並列タスクの実行デモ
ゲストOS (Linux)
仮想
マシン
VMM
ホストOS
実マシン
ホストOS
ホストOS
…
並列タスクの実行デモ
残りの発表の流れ
•
•
•
•
•
•
VMMの設計
基本的な実装方針
共有メモリの一貫性制御の仮想化
予備実験
関連研究
まとめと今後の課題
残りの発表の流れ
•
•
•
•
•
•
VMMの設計
基本的な実装方針
共有メモリの一貫性制御の仮想化
予備実験
関連研究
まとめと今後の課題
仮想マシンの特徴
• ISAレベルでの仮想化
– IA-32アーキテクチャを対象
• Para-virtualization
C.f.) Xen、LilyVM
OSが仮想マシン上で動く
仮想マシンISA ≒ 実マシンISA
ユーザアプリ
ゲストOS
仮想マシン
仮想マシンモニタ
ユーザアプリ
ホストOS
実マシン
仮想マシンと実マシンの対応
仮想マシン
実マシン
仮想マシンと実マシンの対応
仮想プロセッサと実プロセッサは1対1に対応
仮想マシン
実マシン
仮想マシンと実マシンの対応
実マシンのメモリの一部を
仮想マシン用として確保
仮想マシン
実マシン
n MB
n MB
n MB
仮想マシンと実マシンの対応
どれかの実マシンにあるI/Oデバイスを
仮想マシン用に確保
仮想マシン
ディスクイメージ
実マシン
残りの発表の流れ
•
•
•
•
•
•
VMMの設計
基本的な実装方針
共有メモリの一貫性制御の仮想化
予備実験
関連研究
まとめと今後の課題
基本的な実装方針
1つの仮想プロセッサごとに,
以下の2つのユーザプロセスを用意
ゲストOSをnativeに実行する
VMプロセス
モニタプロセス
VMプロセスの実行を監視し、
必要に応じてハードウェアの
仮想化処理を行う
VMMの動作例
…
lgdtl 0xa01002c2
…
シグナル発生
特権命令の実行
(GDTRへの
書き込み)
シグナル
を捕捉
VMプロセス
VMプロセスの
実行を再開
モニタプロセス
実マシンのメモリ上のどこかに
仮想マシンのGDTRの値を格納
仮想化を必要とするハードウェア資源
• プロセッサ
– 特権命令、割り込み、…
• 共有メモリ
– アドレス空間、一貫性制御
• I/Oデバイス
– ハードディスク、シリアル端末、タイマー、…
仮想化を必要とするハードウェア資源
LilyVM [H. Eiraku et al. 03] とほぼ同様な点
以下の資源をユーザレベルで仮想化する
• プロセッサ
– 特権命令、割り込み、…
• 共有メモリ
– アドレス空間、一貫性制御
• I/Oデバイス
– ハードディスク、シリアル端末、タイマー、…
仮想化を必要とするハードウェア資源
我々のVMMに独自な点
以下の資源をユーザレベルで仮想化する
• プロセッサ
– 特権命令、割り込み、…
• 共有メモリ
– アドレス空間、一貫性制御
• I/Oデバイス
– ハードディスク、シリアル端末、タイマー、…
残りの発表の流れ
•
•
•
•
•
•
VMMの設計
基本的な実装方針
共有メモリの一貫性制御の仮想化
予備実験
関連研究
まとめと今後の課題
共有メモリの一貫性制御の仮想化
• ある仮想プロセッサが行った書き込みを、
他の仮想プロセッサに反映させる
– IA-32メモリモデルを満たすように
IA-32のメモリモデルの概要
• 以下の制約を満たす
– Processor consistency
– Write atomicity
• 同期命令を提供する
– 一時的にメモリ一貫性を強めることが可能
Processor Consistency (1/2)
• あるプロセッサが行った書き込みは,
– 同一プロセッサには,すぐに反映される
– 異なるプロセッサには,遅れて反映されうる
プロセッサ1
write X to p
=
X
read from p
=
read from p
プロセッサ2
=
?
read from p
X
Processor Consistency (2/2)
• あるプロセッサが行った書き込みは,
同じ順序でリモートプロセッサに反映される
プロセッサ1
write X to p
write Y to q
write Z to r
プロセッサ2
プロセッサ3
Write Atomicity
• 書き込みはリモートプロセッサにatomicに
反映される
プロセッサ1 プロセッサ2
write X to p
(アドレスpに対する)
読み書きは,この間に
発生しない
プロセッサ3
同期命令
• 一時的にメモリ一貫性を強める
例) mfence命令
• 書き込みがリモートプロセッサに反映されたことを保障
プロセッサ1
write X to p
write Y to q
mfence
プロセッサ2
プロセッサ3
現在の一貫性制御アルゴリズム
• ページ単位での、メモリの共有・非共有の管理
– Multiple-reader/single-writer
• 同一ページへ読み込みは、
複数のプロセッサが同時に行える
• 同一ページへの書き込みは、
1つのプロセッサしか同時に行えない
– Write invalidate
議論
~アルゴリズムの改良にむけて~
• IA-32のメモリモデルを考慮した
より効率的なアルゴリズムにしたい
アルゴリズムの最適化の例
• Multiple writes
– 同一ページに対して複数の仮想プロセッサが
同時に書き込み可能にする
– ただし、IA-32のメモリモデルは満たしつつ
Multiple Writesの実現方法
(1/4)
• 直列化命令実行時に,ローカルの書き込みを
他の全てのマシンに反映させる
プロセッサ1
Write X to p
プロセッサ2
Write Y to q
Write Z to r
mfence
p, q, rへの書き込み
結果を送信
書き込み結果を
反映
Multiple Writesの実現方法
(2/4)
• 全ページを書き込み禁止にする
仮想プロセッサ1
Write X to p
Write Y to q
Write Z to r
mfence
仮想プロセッサ2
ローカルメモリ
Multiple Writesの実現方法
(3/4)
• ページに対して書き込みがあると
– そのページの複製を作成する
– そのページへの書き込みを許可する
仮想プロセッサ1
Write X to p
Write Y to q
Write Z to r
mfence
p
qr
仮想プロセッサ2
ページの複製
Multiple Writesの実現方法
(4/4)
• mfence命令を実行する時に,
– 複製と現在のメモリを比較して差分を作成する
– 差分を遠隔プロセッサに送信する
差分を作成
仮想プロセッサ1
Write X to p
Write Y to q
Write Z to r
mfence
p
qr
仮想プロセッサ2
残りの発表の流れ
•
•
•
•
•
•
VMMの設計
基本的な実装方針
共有メモリの一貫性制御の仮想化
予備実験
関連研究
まとめと今後の課題
VMMの性能測定
• 特権命令などの仮想化処理によるオーバヘッド
 仮想シングルプロセッサマシン上での
逐次プログラムの実行時間を測定
• 共有メモリの仮想化によるオーバヘッド
 仮想SMPマシン上での
並列プログラムの実行時間を測定
仮想シングルプロセッサマシン上での
逐次プログラムの実行
プログラム名
実マシン上での 仮想マシン上で オーバヘッド
(V / P)
実行時間 (P) の実行時間 (V)
fib
22.6
22.1
0.97
getpid
0.05
18.1
354
ls
0.03
6.64
255
gcc
0.14
0.98
6.81
fib: システムコール呼び出しや
フィボナッチ数を計算する
(単位:秒)
I/Oデバイスへのアクセスの
getpid:
システムコールを100,000回実行する
ls: オーバヘッドが非常に大きい
数百のファイルの情報を表示する
gcc: Cプログラムをコンパイルする
CPU: Intel Xeon 2.4 GHz
Memory: 2GB
Host & Guest OS: Linux 2.4
仮想SMPマシン上での
並列プログラムの実行
• 互いに独立したプロセスを8つ並列に実行
8
fib(46)
fib(44)
fib(42)
fib(40)
fib(38)
Speedup
6
4
2
0
1
2
4
Number of processors
8
CPU: Intel Xeon 2.4 GHz
Memory: 2GB
Network: 1 Gigabit Ethernet
Host & Guest OS: Linux 2.4
fib(44)の実行時間の内訳
共有メモリの仮想化の
オーバヘッドが増大
プロセッサ数
全実行時間 Native Shmem
Misc
Idle
1
180.0
177.8
0.0
2.2
0.0
2
90.3
87.9
1.0
1.1
0.3
4
52.4
43.7
3.0
0.4
5.3
8
27.9
22.1
3.7
0.1
2.0
Native: ゲストOSがnativeに実行されていた時間
ゲストOSがスケジューリングに
Shmem:失敗している
共有メモリの一貫性制御にかかる時間
Misc: 一貫性制御以外のVMMの処理時間
Idle: 仮想マシンがhlt命令を実行していた時間
(単位:秒)
残りの発表の流れ
•
•
•
•
•
•
VMMの概要
基本的な実装方針
共有メモリの一貫性制御の仮想化
予備実験
関連研究
まとめと今後の課題
関連研究 (1/3)
• クラスタ上に仮想ccNUMAを構築するVMM
例)vNUMA [1]、Virtual Iron [2]
• 以下の点が異なる
– 対象とするアーキテクチャ
– VMMの実装方式
– メモリの一貫性制御
 詳細な性能比較は今後の課題
[1] M. Chapman USENIX’05
[2] http://www.virtualiron.com/
関連研究 (1/3)
• クラスタ上に仮想ccNUMAを構築するVMM
例)vNUMA [1]、Virtual Iron [2]
詳細が未公開のため、
十分な比較は行えていない
[1] M. Chapman USENIX’05
[2] http://www.virtualiron.com/
関連研究 (2/3)
• Linuxカーネルを改変した分散OS
例)MOSIX [3]、Kerighed [4]、 OpenSSI [5]
– カーネル改変に多大な手間を必要とする
我々のVMMが必要とする
カーネルの改変はごく一部
[3] A. Barak et al. FGCS’98
[4] C. Morin et al. Euro-Par’03
[5] http://openssi.org/
関連研究 (3/3)
• クラスタ用ミドルウェアシステム
例)Score [6]、Condor [7]、GLUnix [8]
– 個々のシステムの仕様に精通する必要がある
我々のVMMでは、
既存のLinux等のOSの
インターフェースをそのまま使用できる
[6] http://www.pccluster.org/
[7] M. Litzkow et al. ICDCS’88
[8] D. P. Ghormely et al. Software
Practice and Experinece‘98
残りの発表の流れ
•
•
•
•
•
•
VMMの概要
基本的な実装方針
共有メモリの一貫性制御の仮想化
予備実験
関連研究
まとめと今後の課題
まとめ
• 単一システムイメージを提供するための
仮想マシンモニタ
– クラスタ上に仮想SMPマシンを構築
– 共有メモリへのアクセスが少ない粗粒度タスクで
高性能を達成
今後の課題
• メモリの一貫性制御アルゴリズムの改良
• 動的な物理マシンの増減の隠蔽
– 物理マシン数が動的に変化しても
常に一定数の仮想プロセッサを提供
• 耐故障性の導入
ご清聴ありがとうございました
ソースコードは、以下のURLから取得可能
http://www.yl.is.s.u-tokyo.ac.jp/projects/vincs/