510 likes | 644 Views
単一システムイメージを 提供するための仮想マシンモニタ. 金田憲二* # 大山恵弘* 米澤明憲* * 東京大学 # 日本学術振興会. クラスタが隆盛を極める. PC の性能向上・価格低下 数台の PC で, 10 年前のスパコンに近い性能 TOP500 中の 70% 以上をクラスタが占める 個人・グループで小・中規模クラスタを所有. クラスタの利便性は著しく低い. 計算資源の管理が困難 例)クラスタ上の全プロセスの状態を取得するには? 並列アプリの開発が困難 例) MPI や PVM などのメッセージパッシング型が大半 ….
E N D
単一システムイメージを提供するための仮想マシンモニタ単一システムイメージを提供するための仮想マシンモニタ 金田憲二*#大山恵弘* 米澤明憲* * 東京大学 #日本学術振興会
クラスタが隆盛を極める 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
仮想SMPマシン 仮想化 クラスタ 設計・実装するVMM クラスタ上に仮想的にSMPマシンを構築する
本アプローチの利点 • 既存のOSが仮想マシン上で動作する 分散資源を簡便に管理できる 例)psコマンドやkillコマンドによるプロセス管理 • 共有メモリ用の並列アプリが動作する 並列アプリを簡便に記述・実行できる • 科学技術計算からwebサーバまで 例)makeコマンドやシェルスクリプトの利用
並列タスクの実行デモ ゲストOS (Linux) 仮想マシン VMM ホストOS ホストOS ホストOS 実マシン …
残りの発表の流れ • VMMの設計 • 基本的な実装方針 • 共有メモリの一貫性制御の仮想化 • 予備実験 • 関連研究 • まとめと今後の課題
残りの発表の流れ • VMMの設計 • 基本的な実装方針 • 共有メモリの一貫性制御の仮想化 • 予備実験 • 関連研究 • まとめと今後の課題
仮想マシン 仮想マシンISA ≒ 実マシンISA 実マシン 仮想マシンの特徴 • ISAレベルでの仮想化 • IA-32アーキテクチャを対象 • Para-virtualization C.f.) Xen、LilyVM ユーザアプリ ゲストOS 仮想マシンモニタ 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 • 同期命令を提供する • 一時的にメモリ一貫性を強めることが可能
= = = X X ? Processor Consistency (1/2) • あるプロセッサが行った書き込みは, • 同一プロセッサには,すぐに反映される • 異なるプロセッサには,遅れて反映されうる プロセッサ1 プロセッサ2 write X to p 書き込み反映 read from p read from p read from p
Processor Consistency (2/2) • あるプロセッサが行った書き込みは, 同じ順序でリモートプロセッサに反映される プロセッサ1 プロセッサ2 プロセッサ3 write X to p write Y to q write Z to r
Write Atomicity • 書き込みはリモートプロセッサにatomicに 反映される プロセッサ2 プロセッサ1 プロセッサ3 write X to p (アドレスpに対する)読み書きは,この間に 発生しない
同期命令 • 一時的にメモリ一貫性を強める 例) mfence命令 • 書き込みがリモートプロセッサに反映されたことを保障 プロセッサ1 プロセッサ2 プロセッサ3 write X to p write Y to q mfence
現在の一貫性制御アルゴリズム • ページ単位での、メモリの共有・非共有の管理 • Multiple-reader/single-writer • 同一ページへ読み込みは、複数のプロセッサが同時に行える • 同一ページへの書き込みは、1つのプロセッサしか同時に行えない • Write invalidate
議論~アルゴリズムの改良にむけて~ • IA-32のメモリモデルを考慮したより効率的なアルゴリズムにしたい
アルゴリズムの最適化の例 • Multiple writes • 同一ページに対して複数の仮想プロセッサが同時に書き込み可能にする • ただし、IA-32のメモリモデルは満たしつつ
Multiple Writesの実現方法 (1/4) • 直列化命令実行時に,ローカルの書き込みを他の全てのマシンに反映させる プロセッサ1 プロセッサ2 Write X to p Write Y to q p, q, rへの書き込み結果を送信 Write Z to r 書き込み結果を反映 mfence
Multiple Writesの実現方法 (2/4) • 全ページを書き込み禁止にする 仮想プロセッサ1 仮想プロセッサ2 Write X to p Write Y to q Write Z to r mfence ローカルメモリ ローカルメモリ
Multiple Writesの実現方法 (3/4) • ページに対して書き込みがあると • そのページの複製を作成する • そのページへの書き込みを許可する 仮想プロセッサ1 仮想プロセッサ2 Write X to p Write Y to q Write Z to r mfence p q r ページの複製
差分を作成 Multiple Writesの実現方法 (4/4) • mfence命令を実行する時に, • 複製と現在のメモリを比較して差分を作成する • 差分を遠隔プロセッサに送信する 仮想プロセッサ1 仮想プロセッサ2 Write X to p Write Y to q Write Z to r mfence p q r
残りの発表の流れ • VMMの設計 • 基本的な実装方針 • 共有メモリの一貫性制御の仮想化 • 予備実験 • 関連研究 • まとめと今後の課題
VMMの性能測定 • 特権命令などの仮想化処理によるオーバヘッド 仮想シングルプロセッサマシン上での逐次プログラムの実行時間を測定 • 共有メモリの仮想化によるオーバヘッド 仮想SMPマシン上での並列プログラムの実行時間を測定
仮想シングルプロセッサマシン上での逐次プログラムの実行仮想シングルプロセッサマシン上での逐次プログラムの実行 (単位:秒) システムコール呼び出しやI/Oデバイスへのアクセスのオーバヘッドが非常に大きい fib: フィボナッチ数を計算する getpid: システムコールを100,000回実行する ls: 数百のファイルの情報を表示する gcc: Cプログラムをコンパイルする • CPU: Intel Xeon 2.4 GHz • Memory: 2GB • Host & Guest OS: Linux 2.4
仮想SMPマシン上での並列プログラムの実行 • 互いに独立したプロセスを8つ並列に実行 • CPU: Intel Xeon 2.4 GHz • Memory: 2GB • Network: 1 Gigabit Ethernet • Host & Guest OS: Linux 2.4
fib(44)の実行時間の内訳 共有メモリの仮想化のオーバヘッドが増大 (単位:秒) ゲストOSがスケジューリングに失敗している Native: ゲストOSがnativeに実行されていた時間 Shmem: 共有メモリの一貫性制御にかかる時間 Misc: 一貫性制御以外のVMMの処理時間 Idle: 仮想マシンがhlt命令を実行していた時間
残りの発表の流れ • VMMの概要 • 基本的な実装方針 • 共有メモリの一貫性制御の仮想化 • 予備実験 • 関連研究 • まとめと今後の課題
以下の点が異なる • 対象とするアーキテクチャ • VMMの実装方式 • メモリの一貫性制御 詳細な性能比較は今後の課題 関連研究 (1/3) • クラスタ上に仮想ccNUMAを構築するVMM 例)vNUMA [1]、Virtual Iron [2] • [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/