1 / 38

仮想環境における最適化を支援するための API

仮想環境における最適化を支援するための API. 大山 恵弘 1,3 加藤 和彦 2,3 米澤 明憲 1,3 1 東京大学 2 筑波大学 3 JST CREST. 背景. 仮想的な計算環境を提供する システムが広まりつつある bochs, QEMU, PearPC VMware, VirtualPC, Xen, Plex86 User-Mode Linux, coLinux FreeBSD jail, SoftwarePot. 仮想環境システムの利点と欠点. 利点 一つの物理計算機上に多くの計算環境を作れる

lonna
Download Presentation

仮想環境における最適化を支援するための API

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. 仮想環境における最適化を支援するためのAPI 大山 恵弘1,3 加藤 和彦2,3 米澤 明憲1,3 1東京大学 2筑波大学 3JST CREST

  2. 背景 • 仮想的な計算環境を提供するシステムが広まりつつある • bochs, QEMU, PearPC • VMware, VirtualPC, Xen, Plex86 • User-Mode Linux, coLinux • FreeBSD jail, SoftwarePot

  3. 仮想環境システムの利点と欠点 • 利点 • 一つの物理計算機上に多くの計算環境を作れる • 実環境と異なるOS・CPU・ファイル階層を持つ計算環境を作れる • 重要な資源から隔離した計算環境を作れる • 欠点 • オーバヘッドが加わる • 資源使用量が増える

  4. 仮想環境システムのオーバヘッド 多 仮想化する対象 少 QEMU 非常に遅い 体感的にわかるくらい遅い (最悪で100%を超える性能低下 [Barham et al. ’03]) VMware UML SoftwarePot 数十%の性能低下

  5. 単純な最適化は全部組み込んだ…もう限界か?単純な最適化は全部組み込んだ…もう限界か? いや、アプリケーション プログラマの力を借りれば、まだまだいける!!! 本研究の動機 オーバヘッドを減らしたい。 どうしよう?

  6. 本研究の(長期的な)目的 • アプリケーションと仮想環境システムの協調によって実現する最適化の追求 • Slogan:“VM-aware applications”“Sandbox-aware applications” • 例: Apache optimized for VMware • 例: sendmail optimized for SoftwarePot • 各アプリケーションが仮想環境の動きを自分用に「カスタマイズ」して使う

  7. 「動作、変われ!」 イメージ アプリケーション 仮想計算環境 仮想化処理 安全性検査 隠し機能 OS

  8. 本研究の概要 • 仮想環境システムの最適化を支援するための仮想システムコールの設計 • APIを通じてアプリケーションが自身の内部情報を仮想環境に伝達 • SoftwarePot [Kato et al. ’03] を対象に設計 • ただし他のシステムにも適用が可能なように一般性を持たせる • 本発表では投機実行に関するものを紹介

  9. 発表の流れ • SoftwarePotの概要 • オーバヘッドの原因とその解消法 • 提案するAPIその1 • 提案するAPIその2 • 議論 • 関連研究 • まとめと今後の課題

  10. SoftwarePot • 仮想計算環境(pot)を提供 • pot内で動くプロセスに資源の仮想ビューを見せる • OS(カーネル)は実環境と共有 • 仮想環境内に独自ファイル階層を構築 • ネットワークの見え方も仮想化

  11. SoftwarePot 実環境 仮想環境 プロセス プロセス プロセス プロセス

  12. 実装方式 open(“/etc/passwd”) • 仮想化処理 • 安全性検査 SoftwarePot open(“/tmp/_root3841/etc/passwd”) OS

  13. SoftwarePotの性能(2002年冬)

  14. SoftwarePotの性能(2003年) 6~21%のオーバヘッド

  15. Apache Benchmarkのスループット計測結果 半分以下の性能 • [Peter et al. ’04] の報告 file size (1物理ノードに1仮想ノードを載せた場合) 性能12%減

  16. オーバヘッドの原因 • 仮想化処理にかかる時間が丸ごとオーバヘッドとして実行時間に加わる app SoftwarePot OS 時間

  17. もうやった! もうやった! どうすればこのオーバヘッドを減らせるか? 投機実行 仮想化コードの チューニング システムコールフックを (OHが大きい)ptraceでなく カーネルモジュールで実装

  18. 投機実行 • 将来のアプリケーションの動作を予測 • 仮想化処理を投機的に並列実行 app SoftwarePot OS

  19. 投機実行 • 将来のアプリケーションの動作を予測 • 仮想化処理を投機的に並列実行 app SoftwarePot OS

  20. 投機実行で本当に高速化するのか? • 条件によっては高速化が可能 [尾上ら ’04] 投機実行なし 実行時間 投機実行あり 仮想化処理の量

  21. 高速化のための必要条件 • 高い精度でアプリケーションの将来動作を予測 • 次に呼び出されるシステムコール • 次にアクセスされるファイル • etc [尾上 ’04]の評価では、100%当たると仮定

  22. しかし、SoftwarePotにとってアプリケーションはblackbox!しかし、SoftwarePotにとってアプリケーションはblackbox! potの中の動きを うかがい知れない… open(“/etc/passwd”) SoftwarePot

  23. 提案するAPIその1 • 将来呼び出されるシステムコールを予測する規則を与える • sc_predict2(psysid, sysid1); • sc_predict3(psysid, sysid1, sysid2) • sc_predict4(psysid, sysid1, sysid2, sysid3)

  24. • sc_predict3(open, mmap, stat) mmap stat open execve unlink write

  25. 提案するAPIその2 • 将来アクセスされるファイルを予測する規則を与える • fadvise(dir, advice)fadvise(file, advice)s.t. advice = { RANDOM, ばらばらなアクセス SEQUENTIAL, 順番アクセスWILLNEED, 近い将来アクセスDONTNEED, 近い将来アクセスしないFREE もうアクセスしない}

  26. APIの支援に基づいて行う処理 • 仮想化処理・安全性検査の投機実行 • 遠隔ファイルの投機フェッチ • ファイルキャッシュの削除

  27. APIの支援にもとづいて投機すべき処理を判断 次にstatが実行される可能性が高い 次に/doc/f.txtがアクセス される可能性が高い ∧ stat(“/doc/f.txt”)の仮想化処理・ 安全性検査を投機実行

  28. フェッチ 遠隔にマップされたファイルへのアクセス 投機

  29. APIの支援にもとづいて投機フェッチ 次に/doc/f.txtがアクセス される可能性が高い /doc/f.txtが遠隔に マップされている ∧ /doc/f.txtの実体を投機フェッチ

  30. Potごとのファイル容量制限 1M 50K 10K Potファイル(仮想ディスク) SoftwarePot OS

  31. 容量オーバー時:一時ファイルの削除 • 一時ファイルを以下の優先度で順に削除 • FREE属性 • DONTNEED属性 • SEQUENTIAL属性かつアクセス済み 50K 49.9K

  32. 議論: 仮想環境システムでなくOSが提供すればいいのでは? • 確かにOSが提供する手段もある • 仮想環境システムの最適化を考えてAPIを設計したが、OS自身への適用も可能

  33. 議論: プログラマに書かせずに学習させればいいのでは? • 確かに学習でもある程度高い精度で予測可能 • 本研究は、プログラマの支援により、非常に高い精度で予測することが狙い • 今後両者を実装して定量的に比較したい

  34. 関連研究(1) • ゲストOSとVMMの協調a.k.a. para-virtualization • Denali [Whitaker et al. ’02],Xen [Barham et al. ’03], LilyVM [榮樂ら’03] アプリケーション ゲストOS アプリケーション 協調 協調 VMM SoftwarePot ホストOS OS

  35. 関連研究(2) • ディスクの投機フェッチ [Fraser et al. ’03] • Pagingのためのhintをコンパイラが自動挿入[Brown et al. ’00] • 効率的なページングのためのガイドAPI • madvise(addr, len, advice)s.t. advice = { RANDOM, ばらばらなアクセス SEQUENTIAL, 順番アクセスWILLNEED, 近い将来アクセスDONTNEED, 近い将来アクセスしないFREE もうアクセスしない}

  36. まとめ • 仮想環境システムが投機実行するのを支援するためのAPIを提案した • sc_predict(): 将来のシステムコール挙動を 予測する規則を与える • fadvise(): 将来アクセスされるファイルを 予測する規則を与える 既存の有用な要素技術を仮想環境の 文脈で見直していく!

  37. 今後の課題 • 性能評価 • 「学習アプローチ」「静的解析アプローチ」との比較 • APIの追加 • 例: 耐故障のためのAPI • Checkpoint機能 [横山ら ’04] の挙動をアプリケーション内から制御 • 侵入検知システムへの応用 • 侵入の有無を投機的にチェック • システムコール自体の投機実行への応用

  38. Fin.

More Related