1 / 75

Virtualizing a Multiprocessor Machine on a Network of Computers

Virtualizing a Multiprocessor Machine on a Network of Computers. 東京大学米澤研究室 D2 金田憲二. 発表の流れ. 背景 基本設計 VMM の実装 共有メ モリの一貫性制御 関連研究 まとめと今後の課題. 発表の流れ. 背景 基本設計 VMM の実装 共有メ モリの一貫性制御 関連研究 まとめと今後の課題. グリッド計算. 広域に分散した多数の計算資源上での並列計算 例)複数の地理的に分散したクラスタ上で高性能計算 例)多数の遊休 PC 群を利用して地球外生命体を探索.

hadar
Download Presentation

Virtualizing a Multiprocessor Machine on a Network of Computers

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. Virtualizing a Multiprocessor Machine on a Network of Computers 東京大学米澤研究室D2 金田憲二

  2. 発表の流れ • 背景 • 基本設計 • VMMの実装 • 共有メモリの一貫性制御 • 関連研究 • まとめと今後の課題

  3. 発表の流れ • 背景 • 基本設計 • VMMの実装 • 共有メモリの一貫性制御 • 関連研究 • まとめと今後の課題

  4. グリッド計算 広域に分散した多数の計算資源上での並列計算 例)複数の地理的に分散したクラスタ上で高性能計算 例)多数の遊休PC群を利用して地球外生命体を探索

  5. グリッド計算の実現には… • Customizableかつ安全な実行環境が必須 • ヘテロ環境上に、自分に適した環境を構築したい 例)全計算機に同一OS・ライブラリをインストールしたい • 信頼できないプログラムを安全に実行したい Linux2.6 Linux2.4 Solaris Win2000

  6. 一つのアプローチ • Virtual Machine Monitor (VMM)の利用 • 個々のユーザは、それぞれ別々の仮想機械上でプログラムを実行するようにする

  7. VMMによるアプローチの利点 • 仮想機械は実機械から独立しているので • 各ユーザごとに使用するOS・ライブラリを     カスタマイズ可能 • 仮想機械をサンドボックスとして利用可能 Linux2.6 Linux2.6 Linux2.6 Linux2.6 Linux2.6 Linux2.4 Solaris Win2000

  8. 既存研究 • [1~5]など 例)VMPlant [3] • 仮想機械の柔軟な生成 • 仮想機械の設定の自動化

  9. 既存研究の問題点 • 並列計算のための枠組みとしては不十分 • VMM自体は、遠隔ジョブ投入・スケジューリングなどの機能を提供しない • 既存の並列計算ツールとの組み合わせが必須 • 計算機の利用にかかる手間が増大

  10. 本研究の目的 • より並列計算の実行に適したVMMの実現 • 分散した資源を非常に簡便に利用できるようにする

  11. 提案するシステム • 複数の分散した計算機上に                     仮想的な並列計算機を構築するシステム 仮想空間 Nプロセッサのマルチプロセッサマシン 実空間 N台のシングルプロセッサマシン

  12. 本システムの利点 • 分散資源の簡便な利用 • ゲストOSのスケジューラが、個々の計算機にプロセスを 自動的に割り振ってくれる 仮想空間 プロセス プロセス プロセス プロセス プロセス プロセス プロセス プロセス Nプロセッサのマルチプロセッサマシン 実空間 N台のシングルプロセッサマシン

  13. 動作デモ • 2台のラップトップPC(シングルプロセッサ)上に仮想デュアルプロセッサマシンを構築 • その仮想機械上でLinuxをブートさせる • まだ実装がナイーブなため非常に遅いが イメージ図

  14. 目標とする性能 VMWareとの性能比 100% 1 2 4 8 16 32 プロセッサ数

  15. 発表の流れ • 背景 • 基本設計 • VMMの実装 • 共有メモリの一貫性制御 • 関連研究 • まとめと今後の課題

  16. 基本設計 • 仮想機械のインターフェース • 対象とするプロセッサ • システム構成 • 仮想ハードウェアと実ハードウェアの対応

  17. 仮想機械のインターフェース • Instruction Set Architecture (ISA)を仮想化 • IA-32を対象とする • Paravirtualization • 仮想機械と実機械は基本的には同一アーキテクチャ • ただし、一部カーネルコードの改変が必要 • 仮想機械のプロセッサ数 = 実機の総プロセッサ数

  18. 対象とするプロセッサの詳細 • Pentium 4, Intel® XeonTM, P6 • Pentium®, Intel486TM ゆるい メモリの          一貫性 厳しい

  19. プロセッサ プロセッサ プロセッサ プロセッサ 仮想機械 メモリ VMM VMM VMM VMM ホストOS ホストOS ホストOS ホストOS システムの構成 • Hosted architecture • VMMはホストOS上のユーザプロセス ゲストOS プロセッサ プロセッサ プロセッサ プロセッサ 実機械 メモリ メモリ メモリ メモリ

  20. Hosted Architectureの特徴 • IA-32の仮想化に適している • sensitiveな特権命令の扱い(後述) • 数多くの周辺デバイスを扱うのに適している • ホストOSのドライバが利用可能なので • インストール済みのホストOSとゲストOSとを共存させることができる ※ハードウェアの上に直にVMMが置かれる場合と比較すると、性能面では劣る

  21. ゲストOS プロセッサ プロセッサ プロセッサ プロセッサ 仮想機械 メモリ VMM VMM VMM VMM ホストOS ホストOS ホストOS ホストOS プロセッサ プロセッサ プロセッサ プロセッサ 実機械 メモリ メモリ メモリ メモリ 仮想ハードウェアと実ハードウェアの対応 • プロセッサ  1対1対応 • メモリ、I/Oデバイス  1対多

  22. ゲストOS プロセッサ プロセッサ プロセッサ プロセッサ 仮想機械 メモリ VMM VMM VMM VMM ホストOS ホストOS ホストOS ホストOS プロセッサ プロセッサ プロセッサ プロセッサ 実機械 メモリ メモリ メモリ メモリ 仮想ハードウェアと実ハードウェアの対応 • プロセッサ  1対1対応 • メモリ、I/Oデバイス  1対多

  23. 発表の流れ • 背景 • 基本設計 • VMMの実装 • 共有メモリの一貫性制御 • 関連研究 • まとめと今後の課題

  24. VMMの実装 • 以下のハードウェアを仮想化する • プロセッサ • (共有)メモリ • I/Oデバイス

  25. プロセッサの仮想化 • ほとんどの命令は、実機上でNative実行 • 実機やホストOSの状態と干渉する命令のみ、ソフトウェアでエミュレーション実行 • 以降、エミュレーションを必要とする特殊な命令をsensitive命令と呼ぶ

  26. Sensitive命令の例 • in命令、out命令 • I/Oポートへの入出力 • mov cr3命令 • ページディレクトリを指す物理アドレスの書き換え • invtlb命令 • TLBのフラッシュ

  27. Sensitive命令の分類 • 特権命令 例)lgdt命令(GDTRレジスタへの書き込み) • CPUの特権レベルがもっとも高い時のみ実行可能 • 低い特権レベルで実行すると、例外が発生 • 非特権命令 例)sgdt命令(GDTRレジスタからの読み込み) • CPUの特権レベルに関わらず実行可能

  28. Sensitive命令のエミュレーション • 以下の2つのプロセスを用意する • VMプロセス • ゲストOS上のコードをNativeに実行 • モニタプロセス • VMプロセスを監視 • sensitive命令の実行を捕捉し エミュレーション VMプロセス 監視 モニタプロセス

  29. Sensitive命令の実行の捕捉 • 特権命令の場合 • 実行時に発生する例外を捕捉 ※ユーザプロセスなので、特権レベルが低い • 非特権命令の場合 • カーネルコードを(静的に)書き換え、        実行時に例外が発生するようにする • そうして発生した例外を捕捉 ※LiLyVMと基本的には同じ手法

  30. Sensitiveな非特権命令のエミュレーション (1/4) • カーネルのコードをコンパイル時に変換 • 非特権命令の直前にundefined instructionを挿入 ※アセンブリからアセンブリへの簡単な変換器を作成 変換前 変換後 … sgdt 0x012345 … … ud2a sgdt 0x012345 …

  31. Sensitiveな非特権命令のエミュレーション (2/4) • VMプロセスがundefined instructionを実行  シグナルが発生する シグナル … ud2a sgdt 0x012345 … VMプロセス 監視 モニタプロセス

  32. Sensitiveな非特権命令のエミュレーション (3/4) • 発生したシグナルをモニタプロセスが捕捉 • ptraceシステムコールを利用 シグナル … ud2a sgdt 0x012345 … VMプロセス 監視 モニタプロセス

  33. Sensitiveな非特権命令のエミュレーション (4/4) • 命令をデコードし、エミュレーション実行 • エミュレーション終了後、VMプロセスの実行を再開 0f 0b … ud2a sgdt 0x012345 … VMプロセス 監視 0f 01 05 45 23 01 00 モニタプロセス

  34. メモリの仮想化 • ページング機構の仮想化 • LiLyVMとほぼ同様 • 共有メモリ機構の仮想化

  35. ページング機構の仮想化 • ページの物理メモリへのマップ • 仮想機械のページディレクトリ・テーブルを参照 • カーネル空間の重複の回避 • ゲストOSのカーネルコードを書き換え • ページフォルトのエミュレーション • SIGSEGVシグナルを捕捉

  36. ページの物理メモリへのマップ (1/3) • ユーザアドレス空間を以下のよう分割 仮想機械のリニアアドレス空間 仮想機械の物理メモリを 保持するための領域 0x00000000 0xc0000000 0xffffffff ユーザ空間 (ホストOSの)カーネル空間

  37. ページの物理メモリへのマップ (1/3) • ユーザアドレス空間を以下のよう分割 仮想機械のリニアアドレス空間 リニアアドレス空間の開始アドレス 物理メモリの開始アドレス 仮想機械の物理メモリを 保持するための領域 0x00000000 0x00000000 0x00000000 0xc0000000 0xffffffff ユーザ空間 (ホストOSの)カーネル空間

  38. ページの物理メモリへのマップ (2/3) • 仮想機械のページディレクトリ・テーブルを 参照し、ページのマッピングを行う • mmap、munmapシステムコールを利用 0x10001000 0x00001000 0x00000000 0x00000000 リニアアドレス空間 物理メモリ 0x00000000 0xc0000000 0xffffffff

  39. ページの物理メモリへのマップ (2/3) • 仮想機械のページディレクトリ・テーブルを 参照し、ページのマッピングを行う • mmap、munmapシステムコールを利用 0x90002000 0x00002000 0x00000000 0x00000000 リニアアドレス空間 物理メモリ 0x00000000 0xc0000000 0xffffffff

  40. ページの物理メモリへのマップ (3/3) • ページディレクトリ・テーブルの更新にあわせてマッピングも更新 例)cr3レジスタの値が更新された際 例)TLBのフラッシュされた際

  41. カーネル空間の重複の回避 • ゲストOSとホストOSのカーネル空間が同じ領域を使用 • ゲスト・ホストともにLinuxの場合  ゲストOSのカーネル空間のベースアドレスを変更 ゲストOSのカーネル空間 0x00000000 0xa0000000 リニアアドレス空間 物理メモリ ホストOSの カーネル空間 0x00000000 0xc0000000 0xffffffff

  42. 共有メモリ機構の仮想化 • ソフトウェアDSMと同様の仕組みで実現 • ハードウェアのメモリ保護機能を利用

  43. Naïveな実装 (1/2) • ページごとに以下の状態を管理 • Exclusively Shared • (自プロセッサのみが)最新の状態をローカルに保持しているページ • 読み込み・書き込み可能 • Shared • (複数プロセッサが)最新の状態をローカルに保持しているページ • 読み込みのみ可能なページ • Invalid • 読み込み・書き込み共に不可能なページ

  44. Naïveな実装 (2/2) • 動作例 • Invalidなページへの読み込み 仮想プロセッサ1 仮想プロセッサ2 Invalid Ex. shared shared shared メモリ メモリ VMプロセス VMプロセス ページの最新の状態を送信 SIGSEGVを捕捉 モニタプロセス モニタプロセス

  45. ~注意~SIGSEGVシグナルの取り扱い • ページフォルトによってもSIGSEGVシグナルは発生する • InvalidなページへのアクセスによるSIGSEGVと、ページフォルトによるSIGSEGVとを、              きちんと区別して扱う必要がある

  46. I/Oデバイスの仮想化 • 全I/Oデバイスの状態を監視するサーバを用意 • 各プロセッサは、I/Oをエミュレーションする際に このサーバと通信する 仮想プロセッサ1 仮想プロセッサ2 I/Oサーバ VMプロセス VMプロセス モニタプロセス モニタプロセス

  47. 基本的な動作例 • I/Oポートからの読み込み … in命令 … I/Oポートへの読み込みをエミュレーション 仮想プロセッサ VMプロセス in命令を捕捉 in命令のソースオペランドに値を格納 I/Oサーバ モニタプロセス サーバに リクエストを送信 読み込み結果を返信

  48. 特殊なI/Oデバイス • Advanced Programmable Interrupt Controller (APIC) • Memory Mapped I/O 例)物理アドレス0xee00020への読み込み  APICのIDを返す 例)物理アドレス0xee0300への書き込み プロセッサ間割り込みを発生 プロセッサ間割り込み = リモートプロセッサに割り込みを発生させる機構 (TLBのフラッシュ要求、CPUの起動要求などに用いる)

  49. APICのエミュレーション • APICのmapされた物理アドレス領域への  読み書きを捕捉し、エミュレーションする • ページを読み書き禁止にしておく • プロセッサ間割り込みなども、適宜マシン間で通信することによりエミュレーションする

  50. 発表の流れ • 背景 • 基本設計 • VMMの実装 • 共有メモリの一貫性制御 • 関連研究 • まとめと今後の課題

More Related