単一システムイメージを 提供するための仮想マシンモニタ 金田憲二*# * 東京大学 大山恵弘* # 米澤明憲* 日本学術振興会 クラスタが隆盛を極める 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/
© Copyright 2024 ExpyDoc