1 / 67

単一システムイメージを 提供するための仮想マシンモニタ

単一システムイメージを 提供するための仮想マシンモニタ. 金田憲二 大山恵弘 米澤明憲  (東京大学). コモディティクラスタの普及. かつてないほど一般に浸透 個人・ワークグループ用として                       4~32 ノード程度のクラスタを所有するのが、 普通になっている. クラスタの利用における問題点. 利便性が低い 例)複数のマシンに分散した CPU やディスクを大域的に管理する機構の欠如 一般のクラスタ利用者には、致命的な問題. 本研究の目標. クラスタ上に 単一システムイメージ を構築 大域プロセス空間 大域ファイルシステム

asta
Download Presentation

単一システムイメージを 提供するための仮想マシンモニタ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 単一システムイメージを提供するための仮想マシンモニタ単一システムイメージを提供するための仮想マシンモニタ 金田憲二 大山恵弘 米澤明憲  (東京大学)

  2. コモディティクラスタの普及 • かつてないほど一般に浸透 • 個人・ワークグループ用として                      4~32ノード程度のクラスタを所有するのが、 普通になっている

  3. クラスタの利用における問題点 • 利便性が低い 例)複数のマシンに分散したCPUやディスクを大域的に管理する機構の欠如 • 一般のクラスタ利用者には、致命的な問題

  4. 本研究の目標 • クラスタ上に単一システムイメージを構築 • 大域プロセス空間 • 大域ファイルシステム • … 計算機科学を専門としない一般の人でも、 小・中規模クラスタを簡便に利用できるようにする

  5. 本研究のアプローチ • 仮想マシンモニタを利用する • 実機と同等の処理が可能な仮想マシンを構築するミドルウェアシステム • 例)VMware Workstation

  6. 我々が提案する仮想マシンモニタ • ネットワークで結合された複数のマシン上に                     SMPマシンを仮想的に構築する Nプロセッサからなる仮想SMPマシン 仮想化 N台のシングルプロセッサマシン

  7. 8台の物理マシン上に8-wayのSMPマシンを仮想的に構築する8台の物理マシン上に8-wayのSMPマシンを仮想的に構築する ゲストOS上で立ち上げたプロセスが、それぞれ異なる物理マシン上で並列に実行される プロセス プロセス プロセス … プロセッサ プロセッサ プロセッサ メモリ 仮想マシンの動作デモ 仮想マシン プロセッサ プロセッサ プロセッサ 物理マシン群 … メモリ メモリ メモリ

  8. それぞれの実マシンのCPU負荷 仮想マシンの動作デモ 仮想SMPマシン上で動いているLinuxの端末

  9. 我々のアプローチの利点 (その1) • 既存の並列プログラムを(ほとんどの場合)無変更のまま、実行可能 • 科学技術計算からWebサーバまで • 多少の改変でLinuxカーネルも • プロセス管理機構やファイルシステムを分散環境上で利用可能

  10. 我々のアプローチの利点 (その2) • 仮想マシンを様々な目的に応用可能 • サンドボックスとしての利用 • 仮想マシンの実行状態の保存・復元 • …

  11. 残りの発表の流れ • 我々の仮想マシンモニタの概要 • ハードウェアの仮想化 • 共有メモリの一貫性制御の仮想化 • 予備実験 • 関連研究 • まとめと今後の課題

  12. 我々の仮想マシンモニタの概要 提供される仮想マシンの特徴 仮想資源と実資源の対応付け

  13. 仮想マシンの特徴 (その1) • ISAレベルの仮想化 ※VMWare,Xenなどと同様 ユーザアプリ システムコール ゲストOS ISA 仮想マシン 仮想マシンモニタ

  14. ユーザアプリ ゲストOS 仮想マシン 仮想マシンモニタ ユーザアプリ ホストOS 実マシン 仮想マシンの特徴 (その2) • 仮想マシンのISA ≒ 実マシンのISA 仮想マシンのISA 実マシンのISA

  15. 仮想マシンの特徴 (その2) • 既存のOSを仮想マシン上で走らせるためにはカーネルに修正を加える必要がある • ただし、ほとんどの修正は自動化できる • 手動で加える変更も、ほぼ自明のもの 例)カーネル空間のベースアドレスの変更 ※LilyVM [H. Eiraku et al. BSDCon’03]と同様の設計

  16. 仮想マシンの特徴 (その3) • 仮想マシン・実マシン共にLinux/IA-32を対象 • 一般に広く普及しているので • 既存研究の資産が利用しやすいので

  17. 仮想資源と実資源の対応例 プロセッサ プロセッサ ディスク 仮想SMP メモリ プロセッサ プロセッサ ディスク ディスク メモリ メモリ 実マシン 実マシン

  18. 仮想資源と実資源の対応例 プロセッサ プロセッサ ディスク 仮想SMP メモリ プロセッサ プロセッサ ディスク ディスク メモリ メモリ 実マシン 実マシン

  19. 仮想資源と実資源の対応例 プロセッサ プロセッサ ディスク 仮想SMP メモリ プロセッサ プロセッサ ディスク ディスク メモリ メモリ 実マシン 実マシン

  20. 仮想資源と実資源の対応例 プロセッサ プロセッサ 仮想SMP ディスク メモリ モニタプロセス モニタプロセス プロセッサ プロセッサ ディスク ディスク メモリ メモリ 実マシン 実マシン

  21. ハードウェアの仮想化

  22. ハードウェアの仮想化 以下の資源をユーザレベルで仮想化 • プロセッサ • 特権命令、割り込み、… • 共有メモリ • ページング、一貫性制御、… • I/Oデバイス • ハードディスク、APIC、タイマー、…

  23. ハードウェアの仮想化 以下の資源をユーザレベルで仮想化 • プロセッサ • 特権命令、割り込み、… • 共有メモリ • ページング、一貫性制御、… • I/Oデバイス • ハードディスク、APIC、タイマー、… LiLyVMとほぼ同様 LiLyVMとほぼ同様

  24. ハードウェアの仮想化 以下の資源をユーザレベルで仮想化 • プロセッサ • 特権命令、割り込み、… • 共有メモリ • ページング、一貫性制御、… • I/Oデバイス • ハードディスク、APIC、タイマー、… LiLyVMとほぼ同様 LiLyVMとほぼ同様 我々独自の点

  25. 基本的な実装方針 • 一つの仮想プロセッサごとに,                  以下の2つのユーザプロセスを用意 ゲストOSをnativeに実行する VMプロセス VMプロセスの実行を監視し、必要に応じて仮想化処理をエミュレーションする モニタプロセス

  26. システムの基本動作サイクル ゲストOSをnative実行 VMプロセス 実行を捕捉 実行を再開 モニタプロセス 命令などの実行をエミュレーション

  27. システムの動作例 … lgdtl 0xa01002c2 … 特権命令の実行(GDTRへの書き込み) シグナル発生 VMプロセス シグナルを捕捉 VMプロセスの実行を再開 モニタプロセス 実マシンのメモリ上のどこかに仮想マシンのGDTRの値を格納

  28. 共有メモリの一貫性制御の仮想化 IA-32のメモリモデルの概要 Simpleな一貫性制御アルゴリズム アルゴリズムの改良にむけて

  29. 共有メモリの一貫性制御の仮想化 • ある仮想プロセッサが行った書き込みを、他の仮想プロセッサに反映させる必要がある • IA-32メモリモデルを満たすように

  30. IA-32のメモリモデルの概要 • 以下の制約を満たす • Processor consistency • Write atomicity • 同期命令を提供する • 一時的にメモリ一貫性を強めることが可能

  31. = = = X X ? Processor Consistency (1/2) • あるプロセッサが行った書き込みは, • 同一プロセッサには,すぐに反映される • 異なるプロセッサには,遅れて反映されうる PU1 PU2 write X to p 書き込み反映 read from p read from p read from p

  32. Processor Consistency (2/2) • あるプロセッサが行った書き込みは, 同じ順序でリモートプロセッサに反映される PU1 PU2 PU3 write X to p write Y to q write Z to r

  33. Write Atomicity • 書き込みはリモートプロセッサにatomicに        反映される PU1 PU2 PU3 write X to p (アドレスpに対する)読み書きは,この間に          発生しない

  34. 同期命令 • 一時的にメモリ一貫性を強める 例)mfence命令 • 書き込みがリモートプロセッサに反映されたことを保障 PU1 PU2 PU3 write X to p write Y to q mfence

  35. Simpleな一貫性制御アルゴリズム • 特にIA-32のメモリモデルに特化しない • ページ単位での、メモリの共有・非共有の管理 • Write invalidateプロトコル • single writer, multiple readers • 同一ページへ読み込みは、 複数のプロセッサが同時に行える • 同一ページへの書き込みは、 1つのプロセッサしか同時に行えない

  36. 各ページに割り当てられる状態 • RW:読み書き共に可能 • RD:読み込みのみ可能 • INV:読み書き共に不可能

  37. 各ページに割り当てられる状態 • RW:読み書き共に可能 • RD:読み込みのみ可能 • INV:読み書き共に不可能 ページ0 ページ1 ページ2 … プロセッサ0のメモリ RW RD INV … プロセッサ1のメモリ INV RD RW … プロセッサ2のメモリ INV INV INV

  38. 各ページに割り当てられる状態 • RW:読み書き共に可能 • RD:読み込みのみ可能 • INV:読み書き共に不可能 ページの状態がRWであるプロセッサは同時に一つ 他のプロセッサのページの状態はINV ページ0 ページ1 ページ2 … プロセッサ0のメモリ RW RD INV … プロセッサ1のメモリ INV RD RW … プロセッサ2のメモリ INV INV INV

  39. 各ページに割り当てられる状態 • RW:読み書き共に可能 • RD:読み込みのみ可能 • INV:読み書き共に不可能 ページの状態がRDであるプロセッサは複数存在する場合がある ページ0 ページ1 ページ2 … プロセッサ0のメモリ RW RD INV … プロセッサ1のメモリ INV RD RW … プロセッサ2のメモリ INV INV INV

  40. ページの状態の更新 • 以下のアクセスが発生した際に、ページの状態が更新される • 状態がINVであるページへの読み書き • 状態がRDであるページへの書き込み

  41. 仮想プロセッサ0がページ2に読み込みを行った場合仮想プロセッサ0がページ2に読み込みを行った場合 (ii) プロセッサ0のページ2を読み込みのみ可能にする ページ0 ページ1 ページ2 … プロセッサ0のメモリ RW RD INV RD … プロセッサ1のメモリ INV RD RW RD … プロセッサ2のメモリ INV INV INV (i) プロセッサ0以外のページ2を書き込み禁止にする

  42. 仮想プロセッサ0がページ2に書き込みを行った場合仮想プロセッサ0がページ2に書き込みを行った場合 (ii) プロセッサ0のページ2を読み込み書き可能にする ページ0 ページ1 ページ2 … プロセッサ0のメモリ RW RD RD RW … プロセッサ1のメモリ INV RD RD INV … プロセッサ2のメモリ INV INV INV (i) プロセッサ0以外のページ2を読み書き禁止にする

  43. アルゴリズムの改良にむけて • IA-32のメモリモデルを考慮したより効率的なアルゴリズムにしたい

  44. アルゴリズムの最適化の例 • Multiple writes • 同一ページに対して複数の仮想プロセッサが同時に書き込み可能にする • ただし、Processor Consistencyは満たしつつ

  45. Multiple Writesの実現方法 (1/4) • 直列化命令実行時に,ローカルの書き込みを他の全てのマシンに反映させる PU1 PU2 Write X to p Write Y to q p, q, rへの書き込み結果を送信 Write Z to r 書き込み結果を反映 mfence

  46. Multiple Writesの実現方法 (2/4) • 全てのページを書き込み禁止にする PU1 PU2 Memory Memory Write X to p Write Y to q Write Z to r mfence …

  47. Multiple Writesの実現方法 (3/4) • ページに対して書き込みがあると  • そのページのコピー(= 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

  48. X Y Z Multiple Writesの実現方法 (4/4) • mfence命令を実行する時に, • twinと現在のメモリを比較してdiffを作成する • diffをリモートマシンに送信する PU1 PU2 Twins Memory Memory Write X to p Write Y to q Write Z to r mfence p q r

  49. 予備実験

  50. 予備実験 システムの基本性能の評価  実験内容 • 仮想マシン上で、互いに独立なタスクを並列実行 • フィボナッチ x 8プロセス  実験環境 • CPU: Intel Xeon 2.4 GHz • メモリ: 2GB • ネットワーク: 1000Base • ゲスト・ホストOS: Linux 2.4

More Related