第 5 章 VMM レベルでの資源管理ポリシー変更手法 59
5.2 実装
FoxyTechniqueの有効性を示すために,2つのFoxyモジュールを実装した.1つ
めはFoxyVegas,2つめはFoxyIdleである.それぞれ異なる資源管理ポリシーを対
象としており,FoxyVegasではTCP輻輳制御ポリシーを,FoxyIdleではディスク スケジューリングポリシーを対象としている.これらの詳細は5.3章,5.4章で述
べる.
5.2.1 Xen
実装を行うVMMとして,Xen [62]を用いた.Xenはx86アーキテクチャ上で 動作するVMMである.Xenでは,仮想化のオーバーヘッドを削減するために準 仮想化(paravirtualization) [96]と呼ばれる仮想化方式を採用している.準仮想化方 式では,VMMは通常のハードウェアとは異なるインターフェースをゲストOSに 提供する.具体的には,複雑なエミュレーションを要するゲストOSの処理をハイ パーコール(hypercall)と呼ばれるシステムコールのようなインターフェースに修 正する.これにより,仮想化のオーバーヘッドを削減するだけでなく,VMMの構 造が複雑になることを防いでいる.しかし,通常のハードウェアとは異なるイン ターフェースを利用するため,準仮想化機能を利用するためには,ゲスト OSが ハイパーコールを呼び出すようにカーネルコードを修正する必要がある.
また,Xenの特徴の1つとして,スプリットドライバ方式[97]を採用している ことが挙げられる.従来,ゲストOSがデバイスにアクセスすると,そのリクエス トはVMMに送信され,VMMがデバイスにアクセスしていた.そのため,VMM がデバイスドライバを保持する必要があり,様々なデバイスドライバをVMM用 に再開発する必要があった.スプリットドライバ方式では,ドライバドメインと呼 ばれる特権VMが物理デバイスへのアクセスを直接行う.ここで,物理デバイス に直接アクセスするデバイスドライバをバックエンドドライバと呼ぶ.他の VM (ゲストドメイン)がデバイスにアクセスすると,そのリクエストはVMMによっ てドライバドメインに送られ,ドライバドメインによってアクセスが行われる.ゲ ストドメインで動作しているデバイスドライバをフロントエンドドライバと呼ぶ.
スプリットドライバ方式により,特権 VM上で動作するOSの元々保持している デバイスドライバを利用することができ,VMM上に新たなデバイスドライバを 開発する必要はない.また,ゲストドメインで稼働しているOSによるデバイス アクセスを全て特権VMで監視できるため,ファイアウォール等のセキュリティ 機能を特権VM上で動作させることで,一括でアクセス管理をすることができる.
また,VMM上でデバイスドライバを保持する必要がないので,VMMの構造の複 雑化を避けることができる.しかし,一旦,VMMがドライバドメインにリクエス トを送信するのでオーバーヘッドが生じてしまう.そのため,現在このオーバー ヘッドを削減する研究が活発に行われている[98, 99, 100, 101, 102].
図 5.2: Implementation. This figure shows our implementation. A foxy module runs inside the back-end driver. It monitors requests from front-end drivers, and controls the response to the guest OS to change its behavior. It also communicates with a sub module running on Xen hypervisor, which bridges the semantic gap between guests and VMM.
FoxyVegas,ならびにFoxyIdle をXen 3.0.2-2上に実装した.これらのFoxyモ ジュールはバックエンドドライバ上で動作する.フロントエンドドライバからの リクエストやそれに通知するイベントをFoxyモジュールが変更することで,ゲス トドメインで稼働するOSの動作を変更する.また,OS-VMM間のセマンティッ クギャップを埋めるために,必要であればXenハイパーバイザ内で動作するサブ モジュールとハイパーコールを経由して通信を行い,OS に関する情報を取得す る.ここで,XenハイパーバイザはメモリやCPUの仮想化を行うソフトウェアレ イヤであり,Xen上で稼働するVMすべてを管理する.サブモジュールはXenハ イパーバイザ内で動作するFoxyモジュールと通信するモジュールである.
ここで,Foxyモジュールは準仮想化を活用することなく実現可能である.準仮想 化方式を採用したXen上で実装を行ったが,実際に実現したFoxyモジュールは準 仮想化に関するAPIを用いることなく実装されている.そのため,FoxyTechnique
はVMware [86, 63]といった他のVMMにも原理上適用可能である.