Disco: Running Commodity Operating Systems on Scalable Multiprocessors
発表の概要 導入 実装の概要 実装の効率化 実験 拡張 (Cellular Disco) まとめ
導入
目標 大規模マルチプロセッサマシン上で 効率良くCommodity OSを動作させたい 少ない開発コストで
アプローチ 新しいOSを開発する ハードウェアを分割する VMで分割する 多大な開発コストを必要とする OSがスケールする程度に 柔軟に資源を管理することができない VMで分割する 少ない開発コストで済む 柔軟に資源管理することができる
Disco Virtual Machine Monitor マルチプロセッサマシン上に 仮想マルチプロセッサマシンを構築 OS OS マルチプロセッサマシン上に 仮想マルチプロセッサマシンを構築 OS OS SMP-OS Thin-OS DISCO PE PE PE PE PE PE CC-NUMA Multiprocessor
Disco FLASHマルチプロセッサマシンを対象 MIPS R10000プロセッサ CC-NUMA
Discoの利点 スケーラビリティの向上 故障の封じ込め 複数のOSの同時実行 一つのマシンを複数のVMに分割する OSを改変する必要がない たとえひとつのcommodity OSのscalabityでたりないアプリケーションでも、 OSに変更を加え、VM間のメモリ共有などを可能にすることによって解決 NFSなどによりVM間で資源を共有 Resource-intensive applicationには、specialized OSを利用
実装の概要
実装の概要 以下の資源を仮想化 CPU メモリ I/Oデバイス ※普通のVMの実装とほぼ同様
CPUの仮想化 基本的には物理CPU上でdirectに実行 特権命令のみVMMがエミュレーション (1)特権レジスタへのアクセスを捕捉 OS (2) エミュレーション実行
CPUの仮想化 以下のモードで動作 [VMM] カーネルモード [VM上のOS] スーパーバイザモード [VM上のアプリ] ユーザモード ハードウェアにフルアクセス可能 [VM上のOS] スーパーバイザモード 特権命令や物理メモリにはアクセスできない [VM上のアプリ] ユーザモード スーパーバイザモードだと スーパーバイザアドレスという特殊なアドレス空間にアクセス可能
仮想CPUのスケジューリング 時分割で各仮想CPUを物理CPUに割り当て データの局所性を考慮したAffinityスケジューリング
物理メモリの仮想化 各VMに個別の物理アドレス空間を提供 VM1の物理アドレス空間 VM2の物理アドレス空間 実機の物理アドレス空間 216 216 240 実機の物理アドレス空間 (マシンアドレス空間と呼ぶ)
物理メモリの仮想化 ゲストOSのTLBへのアクセスを捕捉 エントリ<v,p>の挿入<v,m>の挿入に変更 ※MIPSはソフトウェアでTLBを操作可能 v 216 VMの仮想アドレス空間 p 216 VMの物理アドレス空間 m 216 マシンアドレス空間
メモリの仮想化の限界と、 それへの対処方法 メモリの仮想化の限界と、 それへの対処方法 MIPSでは、特殊なセグメント領域が存在 TLBをbypassして直に物理メモリにアクセスできる カーネルコード・データなどが置かれる 効率良くエミュレーションできない セグメント領域を使わないように、 カーネルのソースコードを変更 Supervisor modeからはaceessできない これでは効率的にエミュレーションできないので、する
I/Oデバイスの仮想化 特殊なデバイスドライバを用意 DMAリクエストを捕捉して、物理アドレスを マシンアドレスに変換 ※DMAリクエスト=I/O操作のソース(またはデスティネーション)を指定する、物理アドレスと長さのペア 排他制御と物理アドレスの変換のみ行う 以上の仕組みにより system-wide cache of disk blocks in memory
実装の効率化
実装の効率化 HAL (Hardware Abstraction Level)の改変 物理メモリの仮想化の高速化 VM間の効率的な資源共有 TLBミスのエミュレーションの高速化 NUMA性の考慮 VM間の効率的な資源共有 科学技術計算専用OSの提供
HALの改変(その1) 一部の特権命令をトラップ無しで実行可能にする 例)特権レジスタへの読み書き 特権レジスタの値を保持しているメモリへのロード・ストア
HALの改変(その2) 資源管理に関するヒントを、 OSがVMMに与えられるようにする Zeroed pageの要求 VMMがどうせクリアするので、OSの手間が省ける OSの空ページリストに挿入された、再利用されないページの通知 今現在idleであることの通知
TLBミスのエミュレーションの 高速化 ソフトウェアで2次TLBを用意 2次TLBに存在しない場合のみ、OSに例外を送る
NUMAの考慮 ローカルメモリとリモートメモリとでアクセス 速度が異なる なるべくローカルメモリだけを参照したい ローカルメモリとリモートメモリとでアクセス 速度が異なる なるべくローカルメモリだけを参照したい 頻繁にリモートからアクセスされるページを、動的に移動・複製する
ページの複製・移動 一つのノードからのみアクセスされるページ 複数のノードからreadアクセスされるページ それ以外 移動 複製 何もしない キャッシュミス回数を測定する
ページの移動 TLBを無効化する 物理アドレスとマシンアドレスのmappingを変更する Node 0 Node 1 仮想ページ 仮想ページ 物理ページ マシンページ
ページの複製 ページを書き込み禁止にする ページをローカルノードにコピーする 物理アドレスとマシンアドレスのmappingを変更する Node 0 Node 1 仮想ページ 仮想ページ 物理ページ マシンページ
VM間の効率的な資源共有 Copy-on-writeディスク 仮想ネットワークインターフェース
Copy-on-writeディスク Non-persistent ルートディスクなどを対象としている readの効率が良い
Copy-on-writeディスク readの効率が良い 同じディスクブロックへの2回目以降のDMAリクエストは、ページをマップするだけ VM 0 VM 1 物理メモリ マシンメモリ
Copy-on-writeディスク 書き込み時にページを複製する あるVMが行った書き込みを、他のVMからは見えないようにするため Non-persistentディスクのみを対象 ルートディスク 書き込みログを保存
仮想ネットワークインターフェース メモリのコピーをすることなくマッピングを変更するだけで通信できる Copy-on-writeディスクと同様の仕組み NFSなどで利用 特殊なVM間で共有できるメモリ領域を提供 Copy-on-write disksの仕組みを利用 NFSなどでbuffer cache 実際にcopyしなくてmappingを変更することにより実現 Page replicationによる効率向上
科学技術計算専用OSの提供 SPLASHOS SPLASH-2を走らせるのに必要なサービス のみ提供する ○スレッド、libcルーチン、… ×仮想メモリ
実験
実験環境 ほとんどの実験はSimOS上で行われた 実機が未完成だったので
実験に使用したWorkload ソフトウェア開発 (Pmake) ハードウェア開発 (Engineering) OS & I/O intensive ハードウェア開発 (Engineering) Large memory footprint Little use of OS services 科学計算 (Raytrace, Radix) 商用データベース Memory intensive
実験1:仮想化のオーバヘッド 結果 考察 表1、図6 オーはベッドの主な原因は、TLBミスのエミュレーション カーネルの実行時間が減っているのは、VMMがカーネル処理を肩代わりしているため ページの初期化 2次TLB TLBmissは増える VMMも使用する 仮想CPU切り替え時にflushされるので
実験2:メモリオーバヘッド 結果 図7参照 考察 カーネルコードなどの共有がうまく機能した
実験3:スケーラビリティ 結果 図8参照 考察 pmakeの実行時間が60%に短縮された
実験4:ページ移動と複製 結果 図9参照 考察 NUMAの考慮により性能が向上した
拡張 (Cellular Disco)
Cellular Disco Discoに以下の機能を追加 実機上で性能評価 Fault containment Global resource management 実機上で性能評価
Fault Containment ハードウェアを複数のセルに分割 各セルごとにVMMの状態を保持 一つのセルの故障しても、他のセルは動作し続ける OS OS SMP-OS Thin-OS ハードウェアの支援はある程度必要 どのノードがcrashしたかの検出 DISCO PE PE PE PE PE PE
Global Resource Management ~ CPU管理 ~ ギャングスケジューリング idleな物理CPUは、仮想CPUをsteal 定期的に大域的なロードを調整
Global Resource Management ~ メモリ管理 ~ 空きメモリ量の少なくなったVMは、他のVMからメモリを借りる Redundant pagingの回避などもしている C.f.) VMWare GSX 3つの最適化 アクティブに使用されているページの特定 異なるVMによって共有されるページの扱い OSのページングによるディスクアクセスとそれ以外を区別して扱う
Global Resource Management なるべくセル内で閉じたスケジューリングをする 故障を封じ込めるため 異なるセル間で資源のやり取りをした場合は、それを記憶しておいて、故障時に依存関係を検出する
まとめ Disco Cellar Disco VMMのオーバヘッドは小さい セルごとに故障を封じ込め Pmakeにおいて、IRIXより1.7倍の性能向上 Cellar Disco セルごとに故障を封じ込め
参考文献 Disco: Running Commodity Operating Systems on Scalable Multiprocessors Eduoard Bugnion, Scott Devine, Kinshuk Govil, and Mendel Rosenblum SOSP (1997) and TOCS (1997) Cellular Disco: resource management using virtual clusters on shared-memory multiprocessors Kinshuk Govil, Dan Teodosiu, Yongqiang Huang, and Mendel Rosenblum SOSP (1999)
仮想化する上での課題点 VM間の効率的な資源の共有 NUMA-nessの考慮 NFS Disk, memory Page placement Dynamic page migration Non-NUMA-aware Memory Management policiesのOSにも、NUMA上で動作させることを可能にする
Challenges 仮想化によるオーバヘッド Resource management VM間の共有 Guest OSの知識なしにスケジューリング VM間の共有
Disco 仮想的なプロセッサ 仮想的なメモリ I/Oデバイス 多少MIPSハードウェアに少し変更を加えている 普通と一緒 全仮想マシンからmountできるvirtual diskが存在する Special netowork device フラグメンテーションがおきない
たった一つのノードによって頻繁にアクセスされるページは、そのノードに移動する Read-sharedは複製 移動回数を制限
手順 ハードウェアのcache missカウンタを参照 Hot page を発見したら、migration or replication Chage the physical-to-real machine mamiing Invalidate ALL TLB entreise Cop Replicationの場合 Downgrade TLB entries Read-onlyにする