仮想マシン(VM)間の時間的分離またはパフォーマンス分離とは、複数の VM が同じ物理ホスト上で実行され、プロセッサ、メモリ、ディスクなどの物理リソース セットを共有しているにもかかわらず、複数の VM 間の時間的な動作を分離する (または時間的な干渉を制限する) 機能を指します。
問題の紹介
サーバー統合で仮想化を使用する主な利点の 1 つは、複数の十分に活用されていないシステムを 1 つの物理ホストにシームレスに「パック」し、利用可能なハードウェア リソースの全体的な利用率を向上させることができることです。実際、オペレーティング システム(OS) 全体と、その中で実行されるアプリケーションを、仮想マシン(VM) で実行できます。ただし、複数の VM が同じ物理ホストで同時に実行される場合、CPU、ネットワーク アダプター、ディスク、メモリなどの利用可能な物理リソースが共有されます。これにより、各 VM のパフォーマンスが、期待されるものよりも予測不可能になります。たとえば、一時的にコンピューティング負荷がピークになる VM は、実行中の他の VM に悪影響を与え、パフォーマンスが大幅に一時的に低下する可能性があります。クラウド コンピューティングパラダイムへと移行しつつあるコンピューティングの世界では、リソース (コンピューティング、ストレージ、ネットワーク) が正確なサービス レベル契約に基づいて仮想化された形式でリモートでレンタルされる可能性があるため、仮想化されたリソースのパフォーマンスが可能な限り安定し、予測可能であることが非常に望まれます。
考えられる解決策
前述の問題に対処するために、複数の手法が使用される可能性があります。これらの手法は、 CPU スケジューリング、ネットワーク スケジューリング、ディスク スケジューリングなど、さまざまな重要なスケジューリングレベルで、同時に実行されている VM 間である程度の時間的分離を実現することを目的としています。
CPUについては、ハイパーバイザレベルで適切なスケジューリング技術を使用して、各VMが共有物理CPUまたはコアに課す計算量を抑えることができます。たとえば、Xenハイパーバイザでは、競合するVM間で計算能力をどのように分配するかを制御するために、BVT、クレジットベース、およびS-EDFスケジューラが提案されています。[1]仮想化アプリケーションで安定したパフォーマンスを得るには、作業を保存し ないスケジューラ構成を使用する必要があります。また、KVMハイパーバイザでは、 仮想化アプリケーションの安定した予測可能なパフォーマンスを維持するために、EDFベースのスケジューリング戦略[2]を使用することが提案されています。 [3] [4]最後に、マルチコアまたはマルチプロセッサの物理ホストでは、各VMを別のプロセッサまたはコアに展開して、さまざまなVMのパフォーマンスを一時的に分離することができます。
ネットワークについては、トラフィック シェーピング技術を使用して、各 VM がホストに課すトラフィックの量を制限することができます。また、同じ物理ホストに複数のネットワーク アダプターをインストールし、各 VM がそれぞれに排他的アクセスを許可できるように仮想化レイヤーを構成することもできます。たとえば、これは Xen ハイパーバイザーのドライバー ドメインで可能です。ハードウェア レベルで複数の VM をサポートするマルチキュー ネットワーク アダプターがあり、ホストされている異なる VM に個別のパケット キューが関連付けられています (VM の IP アドレスを使用)。たとえば、Intelの仮想マシン デバイス キュー (VMDq) デバイスがあります。[5]最後に、CPU のリアルタイム スケジューリングを使用して、同じ CPU に展開された複数の VM からのネットワーク トラフィックの時間的分離を強化することもできます。[6]
各 VM に予約される CPU リソースの量を制御するためにリアルタイム スケジューリングを使用する場合、システム全体のアクティビティに適用可能な CPU 時間を適切に計算することが難しい問題です。たとえば、Xen スケジューラの場合、Dom0 およびドライバ ドメイン サービスは、それらにアクセスする複数の VM 間で共有される可能性があります。同様に、KVM ハイパーバイザの場合、個々のゲスト OS のネットワーク トラフィックを処理するためにホスト OS に課せられるワークロードは、主にカーネル レベルのデバイス ドライバとネットワーク インフラストラクチャ (ホスト OS 上) に関係するため、簡単に区別できない可能性があります。Xen の場合、このような問題を軽減するいくつかの手法が提案されています。[7]
適応型予約の考え方に沿って、フィードバック制御戦略を適用して、各仮想マシンに予約されるリソースの量を動的に適応させ、仮想化アプリケーションの安定したパフォーマンスを維持することが可能です。[8] 適応性の傾向に従い、仮想化システムが期待されるパフォーマンス レベルを満たしていない場合 (同時に実行されている他の VM による予期しない干渉、またはハードウェア リソースが不十分なマシンを単に選択した不適切な展開戦略が原因で)、仮想マシンを実行中にライブ マイグレーションして、より能力の高い (または負荷の少ない) 物理ホストにホストすることが可能です。
参考文献
- ^ Ludmila Cherkasova、Diwaker Gupta、Amin Vahdat (2007 年 9 月 3 日)、「Xen の 3 つの CPU スケジューラの比較」(PDF)、Performance Evaluation Review。第 35 巻、第 2 号、 2010 年6 月 30 日閲覧
- ^ Fabio Checconi、Tommaso Cucinotta、Dario Faggioli、Giuseppe Lipari、「Linux カーネルの階層型マルチプロセッサ CPU 予約」、組み込みリアルタイム アプリケーション向けオペレーティング システム プラットフォームに関する第 5 回国際ワークショップ (OSPERT 2009) の議事録、アイルランド、ダブリン、2009 年 6 月
- ^ Tommaso Cucinotta、Gaetano Anastasi、Luca Abeni、「仮想化サービスにおける時間的制約の尊重」、第 2 回 IEEE 国際ワークショップ「リアルタイム サービス指向アーキテクチャとアプリケーション (RTSOAA 2009)」の議事録、ワシントン州シアトル、2009 年 7 月
- ^ Tommaso Cucinotta、Gaetano Anastasi、Luca Abeni、「リアルタイム仮想マシン」、第 29 回リアルタイム システム シンポジウム (RTSS 2008) の議事録 -- 進行中の作業セッション、バルセロナ、2008 年 12 月
- ^ Shefali Chinni、Radhakrishna Hiremane、「仮想マシンデバイスキュー」、Intel 仮想化テクノロジホワイトペーパー、2007
- ^ Tommaso Cucinotta、Dhaval Giani、Dario Faggioli、Fabio Checconi、「リアルタイム スケジューリングを使用した仮想マシンへのパフォーマンス保証の提供」、第 5 回仮想化および高性能クラウド コンピューティング ワークショップ (VHPC 2010) の議事録、イタリア、イスキア (ナポリ)、2010 年 8 月。
- ^ Diwaker Gupta、Lucy Cherkasova、Robert Gardner、Amin Vahdat、「Xen での仮想マシン間のパフォーマンス分離の強制」、第 7 回国際ミドルウェア会議 (Middleware 2006) の議事録、コンピュータ サイエンスの講義ノート、第 4290/2006 巻、pp.342-362、メルボルン、オーストラリア、2006 年 11 月
- ^ Ripal Nathuji、Aman Kansal、Alireza Ghaffarkhah (2010 年 4 月)、「Q-Clouds: QoS 対応クラウドのパフォーマンス干渉効果の管理」、第 5 回ヨーロッパ コンピュータ システム会議 (EuroSys 2010) の議事録、パリ、フランス
