Document

単一システムイメージを
提供するための仮想マシンモニタ
金田憲二 大山恵弘 米澤明憲
(東京大学)
コモディティクラスタの普及
• かつてないほど一般に浸透
– 個人・ワークグループ用として
4~32ノード程度のクラスタを所有するのが、
普通になっている
クラスタの利用における問題点
• 利便性が低い
例)複数のマシンに分散したCPUやディスクを
大域的に管理する機構の欠如
– 一般のクラスタ利用者には、致命的な問題
本研究の目標
• クラスタ上に単一システムイメージを構築
– 大域プロセス空間
– 大域ファイルシステム
–…
計算機科学を専門としない一般の人でも、
小・中規模クラスタを簡便に利用できるようにする
本研究のアプローチ
• 仮想マシンモニタを利用する
実機と同等の処理が可能な仮想マシンを
構築するミドルウェアシステム
例)VMware Workstation
我々が提案する仮想マシンモニタ
• ネットワークで結合された複数のマシン上に
SMPマシンを仮想的に構築する
Nプロセッサからなる仮想SMPマシン
仮想化
N台のシングルプロセッサマシン
仮想マシンの動作デモ
• 8台の物理マシン上に8-wayのSMPマシンを仮想
的に構築する
• ゲストOS上で立ち上げたプロセスが、
それぞれ異なる物理マシン上で並列に実行される
プロセス
プロセス
プロセッサ プロセッサ
仮想マシン
物理マシン群
…
プロセス
プロセッサ
メモリ
プロセッサ
プロセッサ
メモリ
メモリ
…
プロセッサ
メモリ
それぞれの実マシンのCPU
負荷
仮想マシンの動作デモ
仮想SMPマシン上で動いている
Linuxの端末
我々のアプローチの利点 (その1)
• 既存の並列プログラムを(ほとんどの場合)
無変更のまま、実行可能
– 科学技術計算からWebサーバまで
– 多少の改変でLinuxカーネルも
• プロセス管理機構やファイルシステムを
分散環境上で利用可能
我々のアプローチの利点 (その2)
• 仮想マシンを様々な目的に応用可能
– サンドボックスとしての利用
– 仮想マシンの実行状態の保存・復元
–…
残りの発表の流れ
•
•
•
•
•
•
我々の仮想マシンモニタの概要
ハードウェアの仮想化
共有メモリの一貫性制御の仮想化
予備実験
関連研究
まとめと今後の課題
我々の仮想マシンモニタの概要
•提供される仮想マシンの特徴
•仮想資源と実資源の対応付け
仮想マシンの特徴 (その1)
• ISAレベルの仮想化
※VMWare,Xenなどと同様
ユーザアプリ
システムコール
ゲストOS
仮想マシン
仮想マシンモニタ
ISA
仮想マシンの特徴 (その2)
• 仮想マシンのISA ≒ 実マシンのISA
ユーザアプリ
ゲストOS
仮想マシンのISA
仮想マシン
仮想マシンモニタ
ユーザアプリ
ホストOS
実マシン
実マシンのISA
仮想マシンの特徴 (その2)
• 既存のOSを仮想マシン上で走らせるためには
カーネルに修正を加える必要がある
• ただし、ほとんどの修正は自動化できる
– 手動で加える変更も、ほぼ自明のもの
例)カーネル空間のベースアドレスの変更
※LilyVM [H. Eiraku et al. BSDCon’03]と同様の設計
仮想マシンの特徴 (その3)
• 仮想マシン・実マシン共にLinux/IA-32を対象
– 一般に広く普及しているので
– 既存研究の資産が利用しやすいので
仮想資源と実資源の対応例
プロセッサ
プロセッサ
仮想SMP
メモリ
プロセッサ
メモリ
ディスク
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
仮想資源と実資源の対応例
プロセッサ
プロセッサ
仮想SMP
メモリ
プロセッサ
メモリ
ディスク
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
仮想資源と実資源の対応例
プロセッサ
プロセッサ
仮想SMP
メモリ
プロセッサ
メモリ
ディスク
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
仮想資源と実資源の対応例
プロセッサ
プロセッサ
仮想SMP
メモリ
モニタプロセス
プロセッサ
メモリ
ディスク
モニタプロセス
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
ハードウェアの仮想化
ハードウェアの仮想化
以下の資源をユーザレベルで仮想化
• プロセッサ
– 特権命令、割り込み、…
• 共有メモリ
– ページング、一貫性制御、…
• I/Oデバイス
– ハードディスク、APIC、タイマー、…
ハードウェアの仮想化
以下の資源をユーザレベルで仮想化
• プロセッサ
LiLyVMとほぼ同様
– 特権命令、割り込み、…
• 共有メモリ
– ページング、一貫性制御、…
• I/Oデバイス
– ハードディスク、APIC、タイマー、…
ハードウェアの仮想化
以下の資源をユーザレベルで仮想化
• プロセッサ
LiLyVMとほぼ同様
– 特権命令、割り込み、…
• 共有メモリ
– ページング、一貫性制御、…
我々独自の点
• I/Oデバイス
– ハードディスク、APIC、タイマー、…
基本的な実装方針
• 一つの仮想プロセッサごとに,
以下の2つのユーザプロセスを用意
ゲストOSをnativeに実行する
VMプロセス
モニタプロセス
VMプロセスの実行を監視し、
必要に応じて仮想化処理を
エミュレーションする
システムの基本動作サイクル
ゲストOSをnative実行
VMプロセス
実行を捕捉
実行を再開
モニタプロセス
命令などの実行を
エミュレーション
システムの動作例
…
lgdtl 0xa01002c2
…
シグナル発生
特権命令の実行
(GDTRへの
書き込み)
シグナル
を捕捉
VMプロセス
VMプロセスの
実行を再開
モニタプロセス
実マシンのメモリ上のどこかに
仮想マシンのGDTRの値を格納
共有メモリの一貫性制御の仮想化
•IA-32のメモリモデルの概要
•Simpleな一貫性制御アルゴリズム
•アルゴリズムの改良にむけて
共有メモリの一貫性制御の仮想化
• ある仮想プロセッサが行った書き込みを、
他の仮想プロセッサに反映させる必要がある
– IA-32メモリモデルを満たすように
IA-32のメモリモデルの概要
• 以下の制約を満たす
– Processor consistency
– Write atomicity
• 同期命令を提供する
– 一時的にメモリ一貫性を強めることが可能
Processor Consistency (1/2)
• あるプロセッサが行った書き込みは,
– 同一プロセッサには,すぐに反映される
– 異なるプロセッサには,遅れて反映されうる
PU1
PU2
write X to p
=
X
=
read from p
read from p
=
?
read from p
X
Processor Consistency (2/2)
• あるプロセッサが行った書き込みは,
同じ順序でリモートプロセッサに反映される
PU1
write X to p
write Y to q
write Z to r
PU2
PU3
Write Atomicity
• 書き込みはリモートプロセッサにatomicに
反映される
PU1
write X to p
(アドレスpに対する)
読み書きは,この間に
発生しない
PU2
PU3
同期命令
• 一時的にメモリ一貫性を強める
例) mfence命令
• 書き込みがリモートプロセッサに反映されたことを保障
PU1
write X to p
write Y to q
mfence
PU2
PU3
Simpleな一貫性制御アルゴリズム
• 特にIA-32のメモリモデルに特化しない
– ページ単位での、メモリの共有・非共有の管理
– Write invalidateプロトコル
– single writer, multiple readers
• 同一ページへ読み込みは、
複数のプロセッサが同時に行える
• 同一ページへの書き込みは、
1つのプロセッサしか同時に行えない
各ページに割り当てられる状態
• RW:読み書き共に可能
• RD:読み込みのみ可能
• INV:読み書き共に不可能
各ページに割り当てられる状態
• RW:読み書き共に可能
• RD:読み込みのみ可能
• INV:読み書き共に不可能
プロセッサ0のメモリ
ページ0 ページ1 ページ2
RW
RD
INV
…
プロセッサ1のメモリ
INV
RD
RW
…
プロセッサ2のメモリ
INV
INV
INV
…
各ページに割り当てられる状態
• RW:読み書き共に可能
• RD:読み込みのみ可能
ページの状態がRWである
他のプロセッサの
• INV:読み書き共に不可能
プロセッサは同時に一つ
ページの状態はINV
プロセッサ0のメモリ
ページ0 ページ1 ページ2
RW
RD
INV
…
プロセッサ1のメモリ
INV
RD
RW
…
プロセッサ2のメモリ
INV
INV
INV
…
各ページに割り当てられる状態
• RW:読み書き共に可能
• RD:読み込みのみ可能
ページの状態がRDであるプロセッサは
• INV:読み書き共に不可能
複数存在する場合がある
プロセッサ0のメモリ
ページ0 ページ1 ページ2
RW
RD
INV
…
プロセッサ1のメモリ
INV
RD
RW
…
プロセッサ2のメモリ
INV
INV
INV
…
ページの状態の更新
• 以下のアクセスが発生した際に、
ページの状態が更新される
– 状態がINVであるページへの読み書き
– 状態がRDであるページへの書き込み
仮想プロセッサ0がページ2に
読み込みを行った場合
(ii) プロセッサ0のページ2を
読み込みのみ可能にする
プロセッサ0のメモリ
ページ0 ページ1 ページ2
RW
RD
INV
RD
…
プロセッサ1のメモリ
INV
RD
RW
RD
…
プロセッサ2のメモリ
INV
INV
INV
…
(i) プロセッサ0以外のページ2を
書き込み禁止にする
仮想プロセッサ0がページ2に
書き込みを行った場合
(ii) プロセッサ0のページ2を
読み込み書き可能にする
プロセッサ0のメモリ
ページ0 ページ1 ページ2
RW
RD
RD
RW
…
プロセッサ1のメモリ
INV
RD
INV
RD
…
プロセッサ2のメモリ
INV
INV
INV
…
(i) プロセッサ0以外のページ2を
読み書き禁止にする
アルゴリズムの改良にむけて
• IA-32のメモリモデルを考慮した
より効率的なアルゴリズムにしたい
アルゴリズムの最適化の例
• Multiple writes
– 同一ページに対して複数の仮想プロセッサが
同時に書き込み可能にする
– ただし、Processor Consistencyは満たしつつ
Multiple Writesの実現方法 (1/4)
• 直列化命令実行時に,ローカルの書き込みを
他の全てのマシンに反映させる
PU1
Write X to p
PU2
Write Y to q
Write Z to r
mfence
p, q, rへの書き込み
結果を送信
書き込み結果を
反映
Multiple Writesの実現方法 (2/4)
1. 全てのページを書き込み禁止にする
PU1
Memory
Write X to p
Write Y to q
Write Z to r
mfence
PU2
Memory
…
Multiple Writesの実現方法 (3/4)
2. ページに対して書き込みがあると
– そのページのコピー(= twin)を作成する
– そのページへの書き込みを許可する
PU1
PU2
Twins
Memory
Memory
Write X to p
Write Y to q
Write Z to r
mfence
p
X
q
Y
r
Z
Multiple Writesの実現方法 (4/4)
3. mfence命令を実行する時に,
– twinと現在のメモリを比較してdiffを作成する
– diffをリモートマシンに送信する
PU1
PU2
Twins
Memory
Memory
Write X to p
Write Y to q
Write Z to r
mfence
p
X
q
Y
r
Z
予備実験
予備実験
システムの基本性能の評価
実験内容
– 仮想マシン上で、互いに独立なタスクを並列実行
• フィボナッチ x 8プロセス
実験環境
–
–
–
–
CPU: Intel Xeon 2.4 GHz
メモリ: 2GB
ネットワーク: 1000Base
ゲスト・ホストOS: Linux 2.4
並列フィボナッチの性質
• 主に、以下の処理で仮想化が必要となる
– forkなどのシステムコールの発行
– ライブラリの読み込みなどによる
ハードディスクへのアクセス
– 共有メモリの一貫性制御
例)プロセススケジューリングを行う際に、
異なるプロセッサが同一ページにアクセスする
並列フィボナッチの速度向上
• タスクの粒度が粗ければ、台数効果が出た
– fib(46)の時、8プロセッサで約6.6倍の速度向上
7
速度向上比
6
fib(46)
5
fib(44)
4
fib(42)
3
fib(40)
2
fib(38)
1
0
1
2
4
プロセッサ数
8
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
(単位:秒)
Page fetchにかかる時間の分布
• 大半のfetch処理は、数ミリ秒以内に完了
• 一部のfetch処理だけ、数十ミリ秒必要
Fetchされた仮想アドレスの分布
カーネル空間
ユーザ空間
実験の考察
• False sharingによるオーバヘッドが大きい
– 当然といえば当然
• 改善案はいくつか考えられる
– 一貫性制御アルゴリズムの改良
• Multiple writesの実現
– ゲストOSの改変
• ゲストOSをLinux2.6にするだけでも、
性能が改善するかも
関連研究
仮想マシンモニタ (1/2)
• vNUMA [M. Chapman USENIX’05]
– 複数のItaniumマシン上にccNUMAを仮想的に構築
– ただし、メモリ一貫性制御がsequential consistency
仮想マシンモニタ (2/2)
• VMWare ESX Server [1]、Disco [2]
– 仮想的にSMPマシンを構築
– ただし、実機もSMPマシンであることが必須
[1] C. Waldspurger et al. OSDI’02
[2] E. Bugnion et al. SOSP’97
クラスタミドルウェア (1/2)
• Score [3]、Condor [4]
– クラスタへの並列ジョブ投入などが可能になる
– ただし、それぞれのシステム特有の操作に、
利用者は習熟する必要がある
[3] http:// www.pccluster.org
[4] http://www.cs.wisc.edu/condor
クラスタミドルウェア (2/2)
• MOSIX [5]、Kerighed [6]
– Linuxカーネルを改変した分散OS
– ただし、カーネル改変に多大な手間を必要とする
[5] A. Barak et al. FGCS’98
[6] C. Morin et al. Euro-Par’03
ソフトウェアDSM
• Shasta [7]、cJVM [8]
– 共有メモリを仮定して書かれた並列アプリを、
ソースコードの改変なしに分散環境上で実行可能
– ただし、ユーザプログラムのみ対象としている
• OSカーネルなどは実行不可能
[7] D.J. Scales et al. ASPLOS-VII’96
[8] Y. Aridor et al. ICPP’99
まとめと今後の課題
まとめ
• 単一システムイメージを提供するための
仮想マシンモニタ
– ネットワークで結合された複数のマシン上に
仮想SMPマシンを構築
– 共有メモリへのアクセスが少ない粗粒度タスク
であれば、高性能を達成
今後の課題 (1/2)
• メモリの一貫性制御アルゴリズムの改良
• より詳細な性能評価
– 現実的なアプリケーションを利用して
例)SPLASH-2、Apache
今後の課題 (2/2)
• 仮想資源と実資源の柔軟な対応付け
– 物理的なマシンの構成によらず、
常に一定数の仮想プロセッサを提供
N-way SMPマシン
N-way SMPマシン
N-way SMPマシン
仮想化
N台のシングルプロセッサマシン
より将来的な課題
• 耐故障性
• CPU性能などがヘテロな環境への適応