(57)【要約】  本発明を適用した１システムでは、情報処理装置上に作成される仮想計算機に割り当てるディスパッチ時間を複数、設定し、設定したディスパッチ時間を順次、割り当て、情報処理装置を構成する外部記憶装置、及び通信装置等の入出力用装置を用いた入出力に要する応答時間を仮想計算機が測定し、測定した応答時間のディスパッチ時間による変化を基に、仮想計算機の最適なディスパッチ時間を特定して適用する。その最適なディスパッチ時間の適用により、高いレスポンス性能を維持しつつ、仮想計算機の実行効率の低下を抑える。
2010089808.tif 000002
【特許請求の範囲】
【請求項１】
仮想計算機監視部を有するとともに、入出力装置に接続される情報処理装置が備える演算処理装置に対する仮想計算機の割当方法において、
前記情報処理装置に、
前記仮想計算機監視部が、前記演算処理装置を、複数の分割演算処理装置に分割するステップと、
前記仮想計算機監視部が、前記分割演算処理装置に、前記仮想計算機の割当時間を複数設定するステップと、
前記仮想計算機監視部が、複数の前記割当時間に基づいて、前記分割演算処理装置に、前記仮想計算機を割り当てるステップと、
前記仮想計算機を割り当てられた前記分割演算処理装置が、前記入出力装置に入出力要求を出力してから、前記分割演算処理装置に、前記入出力装置から前記入出力要求に対する応答が入力されるまでの応答時間を、前記複数の割当時間毎に測定するステップと、
前記設定された複数の割当時間と前記測定された複数の応答時間に基づいて、所定の範囲内の応答時間に対応する割当時間のうち、最大の割当時間である最適割当時間を抽出するステップと、
前記抽出された最適割当時間を、前記仮想計算機に割り当てるステップとを実行させることを特徴とする仮想計算機の割当方法。
【請求項２】
前記応答時間を、前記複数の割当時間毎に測定するステップは、
一の前記分割演算処理装置に対して、前記仮想計算機を固定して割り当てることを特徴とする請求項１記載の仮想計算機の割当方法。
【請求項３】
前記情報処理装置に、
前記複数の分割演算処理装置に分割するステップと、
前記仮想計算機の割当時間を複数設定するステップと、
前記分割演算処理装置に、前記仮想計算機を割り当てるステップと、
前記応答時間を、前記複数の割当時間毎に測定するステップと、
前記最大の割当時間である最適割当時間を抽出するステップを周期的に実行させることにより、前記抽出された最適割当時間を周期的に変更することを特徴とする請求項１記載の仮想計算機の割当方法。
【請求項４】
前記仮想計算機の割当時間を複数設定するステップは、
前記最適割当時間に基づいて、前記分割演算処理装置に、前記仮想計算機を割り当てる順序を決定することを特徴とする請求項１〜３の何れか１項に記載の仮想計算機の割当方法。
【請求項５】
仮想計算機監視部を有するとともに、入出力装置に接続される情報処理装置が備える演算処理装置に対する仮想計算機の割当プログラムにおいて、
前記情報処理装置に、
前記仮想計算機監視部が、前記演算処理装置を、複数の分割演算処理装置に分割するステップと、
前記仮想計算機監視部が、前記分割演算処理装置に、前記仮想計算機の割当時間を複数設定するステップと、
前記仮想計算機監視部が、複数の前記割当時間に基づいて、前記分割演算処理装置に、前記仮想計算機を割り当てるステップと、
前記仮想計算機を割り当てられた前記分割演算処理装置が、前記入出力装置に入出力要求を出力してから、前記分割演算処理装置に、前記入出力装置から前記入出力要求に対する応答が入力されるまでの応答時間を、前記複数の割当時間毎に測定するステップと、
前記設定された複数の割当時間と前記測定された複数の応答時間に基づいて、所定の範囲内の応答時間に対応する割当時間のうち、最大の割当時間である最適割当時間を抽出するステップと、
前記抽出された最適割当時間を、前記仮想計算機に割り当てるステップとを実行させることを特徴とする仮想計算機の割当プログラム。
【請求項６】
前記応答時間を、前記複数の割当時間毎に測定するステップは、
一の前記分割演算処理装置に対して、前記仮想計算機を固定して割り当てることを特徴とする請求項５記載の仮想計算機の割当プログラム。
【請求項７】
前記情報処理装置に、
前記複数の分割演算処理装置に分割するステップと、
前記仮想計算機の割当時間を複数設定するステップと、
前記分割演算処理装置に、前記仮想計算機を割り当てるステップと、
前記応答時間を、前記複数の割当時間毎に測定するステップと、
前記最大の割当時間である最適割当時間を抽出するステップを周期的に実行させることにより、前記抽出された最適割当時間を周期的に変更することを特徴とする請求項５記載の仮想計算機の割当プログラム。
【請求項８】
前記仮想計算機の割当時間を複数設定するステップは、
前記最適割当時間に基づいて、前記分割演算処理装置に、前記仮想計算機を割り当てる順序を決定することを特徴とする請求項５〜７の何れか１項に記載の仮想計算機の割当プログラム。
【請求項９】
入出力装置に接続されるとともに、仮想計算機環境を有する情報処理装置において、
演算処理装置と、
前記演算処理装置を、複数の分割演算処理装置に分割する分割手段と、
前記分割演算処理装置に、前記仮想計算機の割当時間を複数設定する設定手段と、
複数の前記割当時間に基づいて、前記分割演算処理装置に、前記仮想計算機を割り当てる割当手段と、
前記仮想計算機を割り当てられた前記分割演算処理装置が、前記入出力装置に入出力要求を出力してから、前記分割演算処理装置に、前記入出力装置から前記入出力要求に対する応答が入力されるまでの応答時間を、前記複数の割当時間毎に測定する測定手段と、
前記設定された複数の割当時間と前記測定された複数の応答時間に基づいて、所定の範囲内の応答時間に対応する割当時間のうち、最大の割当時間である最適割当時間を抽出する抽出手段とを有することを特徴とする情報処理装置。
【請求項１０】
前記測定手段は、
一の前記分割演算処理装置に対して、前記仮想計算機を固定して割り当てることを特徴とする請求項９記載の情報処理装置。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理計算機上に作成される仮想計算機にＣＰＵを割り当てる１回当たりの時間であるディパッチ時間を最適化する技術に関する。
【背景技術】
【０００２】
仮想計算機（ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ））技術は、情報処理装置等のコンピュータが有するハードウェアを論理的又は物理的に分割するとともに、分割したハードウェア上でオペレーティングシステム（ＯＳ）を動作させる技術である。この仮想計算機技術を用いることにより、ハードウェアを分割することにより仮想化したそれぞれのハードウェア上でＯＳを実行することにより、コンピュータ全体として複数のＯＳを実行させることができる。分割したハードウェア上で実行される各ＯＳ（ゲストＯＳ）は、それぞれが１台のコンピュータを論理的に実現する。これは、複数のサーバ等のコンピュータを１台のコンピュータ上に統合できることを意味する。このことから仮想計算機技術では、導入するコンピュータ（物理的な計算機）の数の削減、ネットワーク構成の単純化、といった利点が得られる。【０００３】
仮想計算機技術により論理的に実現されるコンピュータである「仮想計算機」上では、それぞれワークロード（Ｗｏｒｋｌｏａｄ）としてのプログラムが実行される。各仮想計算機では、異なるワークロードが実行されるのが一般的である。そのワークロードは、それらが有する特性から分けることができる。ワークロードの種類の代表例としては、ＣＰＵ（Ｃｅｎｔｒｏｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央演算処理装置）バウンドジョブ、及びＩＯ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ：入出力）バウンドジョブが挙げられる。【０００４】
ＣＰＵバウンドジョブは、ＣＰＵによる計算処理を主に実行するワークロードである。ＣＰＵをワークロードに割り当てる程、ワークロードの処理時間であるＣＰＵがＩＯ装置に対してＩＯ要求を出してから、当該ＩＯ装置がＣＰＵに対してＩＯ応答を返すまでのレスポンス時間（応答時間）が短くなるという特性を有している。【０００５】
他方のＩＯバウンドジョブは、データ保存用の記録媒体（アクセス速度が比較的に遅い記憶装置）、或いはネットワークへのＩＯを比較的に高頻度に行うワークロードである。データベースシステムに代表される。ＩＯの完了に要する時間が短い程、ワークロードの処理時間が短くなるという特性を有している。【０００６】
仮想計算機システム環境が実現されたコンピュータでは、各仮想計算機で特性の異なるワークロードが実行されるのが一般的である。
仮想計算機システムは通常、仮想計算機監視部としての仮想計算機モニタ（Ｈｙｐｅｒｖｉｓｏｒ：ハイパーバイザ）が各仮想計算機に演算資源としてのＣＰＵを割り当てるようになっている。ＣＰＵを割り当てた仮想計算機からＣＰＵの制御をハイパーバイザに取り戻す方法としては、ディスパッチタイマの設定による方法、及びアイドル検出による方法の２つを併用するのが一般的である。【０００７】
ディスパッチタイマの設定による方法は、仮想計算機にＣＰＵを割り当てる際にタイマを設定し、そのタイマによる一定時間（ＣＰＵを割り当てる１回当たりの時間であるディスパッチ時間）の計時によってＣＰＵの制御をハイパーバイザに戻すものである。この方法によりＣＰＵの制御がハイパーバイザに戻った場合、仮想計算機で実行しているワークロードはＣＰＵバウンドジョブであると判断できる。【０００８】
アイドル検出による方法は、仮想計算機が何らかのＩＯの完了待ち状態、つまりアイドル状態となったことを契機に、仮想計算機からＣＰＵの制御をハイパーバイザに戻すものである。この方法によりＣＰＵの制御がハイパーバイザに戻った場合、仮想計算機で実行しているワークロードはＩＯバウンドジョブであると判断できる。【０００９】
上記２つの方法を併用する場合、仮想計算機で実行されているＩＯバウンドジョブの実行効率は、他の仮想計算機が大きく影響する。ＣＰＵバウンドジョブが実行される仮想計算機では、比較的に長いディスパッチ時間を設定する必要がある。このため、ＣＰＵバウンドジョブが実行される他の仮想計算機が多くなるほど、単位時間当たりにＣＰＵが割り当てられる回数は少なくなり、実行効率が低下する。このことから、ＩＯバウンドジョブが実行される仮想計算機では、実行効率の低下を抑えることが重要と考えられる。ここで、実行効率とは，ワークロードが単位時間当たりに有意な処理を実行した割合のことである。【００１０】
ＩＯバウンドジョブが走行する仮想計算機での実行効率の低下を抑える方法として、短いディスパッチ時間を設定する方法、及びＩＯ完了割り込み待ち状態の仮想計算機に優先的にＣＰＵを割り当てる方法が考えられる。しかし、それらの方法には、以下のような不具合があった。【００１１】
短いディスパッチ時間を設定する方法は、仮想計算機にＣＰＵを制御する権利であるＣＰＵ制御権を渡す時間間隔を短くして、ＩＯバウンドジョブが実行される仮想計算機により早くＣＰＵ制御権を渡すようにするものである。しかし、この方法では、単位時間当たりのＣＰＵ制御権の切り換え回数がより多くなって、ハイパーバイザが行う処理が増え、本来の目的以外の部分で計算機資源が消費されるものであるオーバヘッドが増加する。オーバヘッドの増加は、仮想計算機システム全体の性能を低下させるだけでなく、仮想計算機に単位時間当たりにＣＰＵが割り当てられる回数をより少なくさせる。その結果、各仮想計算機の実行効率を却って低下させるため望ましくない。【００１２】
ＩＯ完了割り込み待ち状態の仮想計算機に優先的にＣＰＵを割り当てる方法は、ＩＯの完了を待つ仮想計算機を検出し、その仮想計算機にＩＯの完了を優先して通知するものである。しかし、この方法では、ＩＯバウンドジョブの仮想計算機が多くなると、ＣＰＵバウンドジョブの仮想計算機にＣＰＵ制御権が渡りにくくなる。また、ＩＯ完了割り込み待ちの仮想計算機を検出する必要が生じることから、却ってハイパーバイザが行う処理が増えてオーバヘッドが増加する。このようなことから、この方法も望ましいものではない。
【特許文献１】特開２００２−２１５４０８号公報
【特許文献２】特開２００６−０５９０５２号公報
【特許文献３】特開平０７−１１０７７４号公報
【発明の開示】
【００１３】
本発明は、実行効率の低下を抑えつつ、仮想計算機にＣＰＵ制御権を割り当てるための技術を提供することを目的とする。
本発明を適用した１システムでは、仮想計算機監視部を有し、入出力装置が搭載、或いは接続され、演算処理装置（例えばＣＰＵ）を搭載した情報処理装置上に作成される仮想計算機にディスパッチ時間を割り当てる。その割り当ては、仮想計算機監視部が、演算処理装置を、複数の分割演算処理装置に分割し、仮想計算機監視部が、分割演算処理装置に、仮想計算機の割当時間を複数設定し、仮想計算機監視部が、複数の前記割当時間に基づいて、分割演算処理装置に、仮想計算機を割り当て、仮想計算機を割り当てられた分割演算処理装置が、入出力装置に入出力要求を出力してから、分割演算処理装置に、入出力装置からその入出力要求に対する応答が入力されるまでの応答時間を、複数の割当時間毎に測定し、設定された複数の割当時間と測定された複数の応答時間に基づいて、所定の範囲内の応答時間に対応する割当時間のうち、最大の割当時間である最適割当時間を抽出し、その抽出された最適割当時間を、仮想計算機に割り当てる。
【００１４】
上記入出力用装置とは、情報処理装置がハードウェア資源として用いることが可能なものが相当する。具体的には、搭載、或いは接続等によりアクセス可能な外部記憶装置、及び通信装置等である。  応答時間の変化に着目することにより、レスポンスの悪化を回避する、或いは抑えられるディスパッチ時間の範囲を特定することができる。それにより、高いレスポンス性能が得られる最長、或いは最長に近いディスパッチ時間を特定することもできる。
【００１５】
より長いディスパッチ時間を設定するほど、仮想計算機への演算処理装置（物理ＣＰＵ）の割り当てに要する負荷は軽減される。それにより、ハードウェア資源を仮想計算機に対しより効率的に割り当てられるようになる。特定した最長、或いは最長に近いディスパッチ時間は、高いレスポンス性能を維持させつつ、仮想計算機への物理ＣＰＵの割り当てに要する負荷を最小レベルに抑える。レスポンスの悪化は、情報処理装置（物理計算機）の全体性能を大きく低下させる傾向がある。このようなことから、特定した最長、或いは最長に近いディスパッチ時間は、ディスパッチ時間として最適なものとなる。その最適なディスパッチ時間に自動調整することにより、走行するワークロードの種類に係わらず、実行効率の低下を抑えつつ、仮想計算機にＣＰＵ制御権を割り当てられることとなる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態によるコンピュータのシステム構成を示す図である。
【図２】ハイパーバイザ１２と仮想計算機１４のプログラム構成を示す図である。
【図３】ディスパッチ時間とＩＯレスポンスの関係を示す図である。
【図４】ＩＯレスポンス時間測定データの構造を示す図である。
【図５】ハイパーバイザ通知用ＩＯレスポンスのデータ構造を示す図である。
【図６】平均ＩＯレスポンス累積データの構造を示す図である。
【図７】評価項目毎に、本実施形態と各従来技術の評価内容を示す図である。
【図８】ディスパッチ時間設定に係わる処理のフローチャートである。
【図９】他のディスパッチ時間変更処理のフローチャートである。
【図１０】ハードウェア構成の実施形態の一例を示す図である。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態による仮想計算機システムが実現された情報処理装置としてのコンピュータのシステム構成を示す図である。図１に示すシステム構成は、コンピュータ１の動作時の環境を表したものである。コンピュータ１を構成するハードウェア１１は、仮想計算機監視部としての仮想計算機モニタ（ハイパーバイザ）１２によって分割されることにより仮想計算機環境が実現され、分割されたハードウェアが、ハイパーバイザ１２によりワークロードに対して、動的、透過的に割り当てられる。【００１８】
仮想計算機１３は、ハイパーバイザ１２の起動時に自動で起動される。この仮想計算機１３では、ホストＯＳ（オペレーティングシステム）が動作する。このホストＯＳは、ゲストＯＳが動作する仮想計算機１４の起動、停止等の制御を行う。また、ハードウェア１１を動作させるための各種ドライバを搭載している。【００１９】
ハイパーバイザ１２は、起動させた仮想計算機１４毎に、制御権を割り当てるＣＰＵ、その制御権を割り当てるディスパッチ時間を決定し、その決定に従って制御権を割り当てるスケジューリングを行う。ディスパッチ時間は、以下のようにして決定する。図３を参照して具体的に説明する。【００２０】
図３は、ディスパッチ時間とＩＯレスポンス時間（ＩＯ応答時間）の関係を示す図である。横軸にディスパッチ時間、縦軸にＩＯレスポンス時間を取っている。ＩＯレスポンス時間は、ＩＯ実際の実行時間である。【００２１】
ＩＯを実際に実行するには時間を要する。このため図３に示すように、ＩＯレスポンス時間は、ディスパッチ時間を長くさせても或る程度までは一定となる。ディスパッチ時間をそれ以上長くすると、ＩＯによる割り込み待ち時間が発生するため、ＩＯレスポンス時間は悪く（長く）なる。【００２２】
ディスパッチ時間とＩＯレスポンス時間の間には、上記のような関係が存在する。本実施形態では、その関係に着目し、仮想計算機１４毎にディスパッチ時間を決定する。それにより、図３中、矢印で示すＩＯレスポンス時間が変化する点を特定し、特定した変化点のディスパッチ時間を仮想計算機１４に設定する。【００２３】
このようにして本実施形態では、ＩＯレスポンス時間を指針として、ディスパッチ時間を決定（設定）する。その理由は、仮想計算機システムでは、１つのＨＤＤ又はネットワークカード等のＩＯ資源に対して同時に複数の分割されたハードウェア資源がアクセスすることがあるため、ＩＯレスポンスが全体性能に大きく影響するからである。つまりＩＯレスポンスが悪ければ、複数の分割されたハードウェア資源にＩＯ待ち時間が発生し、コンピュータ全体の性能も大きく低下する傾向があるからである。それにより、ＩＯレスポンス性能を高く維持させつつ、なるべく長いディスパッチ時間を割り当てるようにしている。【００２４】
より長いディスパッチ時間を割り当てるほど、単位時間当たりのＣＰＵ制御権の切り換え回数は少なくなる。従って、ハイパーバイザ１２のオーバヘッドはより抑えられるようになる。このことから、オーバヘッドの増大による各仮想計算機１４での実行効率の低下も抑えることができる。それにより、最適なディスパッチ時間を設定することとなる。【００２５】
図３に示すような関係は、ＩＯ資源の種類に係わらずに存在する。このため、ＩＯ資源については特に限定するものではない。また、仮想計算機で実行されるプロセスは、複種類のＩＯ資源を使用する場合がある。そのようなプロセスでは、実行効率に最も影響が大きい種類のＩＯ資源に着目して、ディスパッチ時間を決定することが望ましい。
以降は、図２、及び図４〜図１０を参照して、ディスパッチ時間を最適化するための動作について説明する。【００２６】
図２は、ハイパーバイザ１２と仮想計算機１４のプログラム構成を示す図である。図２には、ディスパッチ時間の設定に特に重要なプログラム、及びデータを抜粋して示している。【００２７】
仮想計算機１４−１で動作するゲストＯＳ１には、測定プログラム３１が搭載されている。この測定プログラム３１は、ゲストＯＳ１上で実行中のプロセス３２を対象にＩＯレスポンス時間、つまりＩＯに実際に要した時間（ＩＯレスポンス時間）を測定するプログラムである。その測定結果は、ＩＯレスポンス時間測定データ３３として保存される。プロセス３２は、実行中のワークロード自体のプロセスに相当する。仮想計算機１４−２にも同様に、測定プログラム３１を搭載したゲストＯＳ２、ゲストＯＳ２上で実行中のプロセス３２、及びＩＯレスポンス時間測定データ３３が存在する。プロセス３２は一つのみ示しているが、多くの場合、複数のプロセス３２が存在する。【００２８】
測定プログラム３１は、実際にはＩＯ資源別にＩＯレスポンス時間を測定する。しかし、ここでは説明上、便宜的に、１種類のＩＯ資源のみを想定する。想定するＩＯ資源は、実行効率に最も影響を及ぼす種類である。【００２９】
図４は、ＩＯレスポンス時間測定データ３３の構造を示す図である。
測定プログラム３１は、プロセス３２のＩＯレスポンス時間を測定する。このことから図４に示すように、ＩＯレスポンス時間測定データ３３は、過去の測定結果を格納したものとなっている。各測定結果には、測定を行った時刻である測定時間が付されている。それにより、測定１回分のデータは、測定時間、及びＩＯレスポンス時間の２つの項目のデータを有する。図４中、測定結果は「ＩＯ  ＴｉｍｅＮ」（Ｎは整数）、測定時間は「ＴｉｍｅＮ」（Ｎは整数）と表記している。この「Ｎ」は、測定を行った順序を表している。【００３０】
ハイパーバイザ１２は、各仮想計算機１４にＣＰＵ制御権を与えるスケジューリングを行うスケジューラ２１、及び各仮想計算機１４のディスパッチ時間を設定するディスパッチ時間設定プログラム２２を有する。【００３１】
スケジューラ２１は、仮想計算機１４毎に、割り当てる物理的なＣＰＵである物理ＣＰＵ（実ＣＰＵ）を設定する。２３は、各仮想計算機１４に割り当てた物理ＣＰＵを示す設定データである。２３−１は仮想計算機１４−１用の設定データ、２３−２は仮想計算機１４−２用の設定データである。【００３２】
設定データ１４−１には「物理ＣＰＵ１」、設定データ１４−２には「物理ＣＰＵ２」がそれぞれ表記されている。本実施形態では、そのようにして、仮想計算機１４毎に異なる物理ＣＰＵを固定的に割り当てるようにしている。これは、複数の仮想計算機１４を同じ物理ＣＰＵで動作させると、他の仮想計算機１４の動作がＩＯレスポンスに影響するためである。言い換えれば、他の仮想計算機の動作による影響を排除して、ＩＯレスポンス時間をより正確に測定するためである。【００３３】
ハイパーバイザ１２は、各仮想計算機１４から、測定されたＩＯレスポンス時間を格納したハイパーバイザ通知用ＩＯレスポンス２４（以降「ＩＯレスポンス２４」と略記）を取得する。図５は、そのデータ構造を示す図である。図５に示すように本実施形態では、ＩＯレスポンス２４に、測定されたＩＯレスポンス時間の平均値（ＩＯレスポンス平均時間）を格納するようにしている。これは図４に示すように、ＩＯレスポンス時間はＩＯの負荷状況によって変動するため、常に同じではないからである。他には、複数の時間範囲である複数の期間を区切り、当該期間毎に対応するＩＯレスポンス時間（測定結果）の数を計数し、計数値の最も多い期間に対応するＩＯレスポンス時間、つまり最も頻度が高いと期待できるＩＯレスポンス時間を通知することも考えられる。【００３４】
ＩＯレスポンス２４の取得、言い換えれば仮想計算機１４からのＩＯレスポンス２４の通知は、ハイパーバイザ・コール又はシステムコール等の既存の方法を用いることができる。測定プログラム３１は標準的なＯＳに搭載されている。このことから、既存の方法を用いる場合、ゲストＯＳは変更しなくとも済むことになる。ゲストＯＳを変更するのであれば、既存の方法を用いなくとも良い。【００３５】
測定プログラム３１は、例えばハイパーバイザ１２からの所定のコマンドにより起動され、測定を開始する。その測定は、ハイパーバイザ１２から終了を指示するコマンドにより終了する。少なくとも最適なディスパッチ時間を設定するのに必要な期間、測定プログラム３１は動作させることとなる。【００３６】
ディスパッチ時間設定プログラム（以降「時間設定プログラム」と略記）２２は、仮想計算機１４毎に、ディスパッチ時間を設定する。最適なディスパッチ時間を特定するために、順次、異なるディスパッチ時間を設定する。スケジューラ２１は、設定されたディスパッチ時間でＣＰＵ制御権を対応する仮想計算機１４を割り当てる。最適なディスパッチ時間を特定するために設定するディスパッチ時間は、暫定的に設定されるものであることから、以降、便宜的に「暫定ディスパッチ時間」と呼び、区別する。【００３７】
各仮想計算機１４は、プロセス３２でのＩＯレスポンス時間の測定を測定プログラム３１に行わせ、その測定結果を測定時間（現在時刻）と共にＩＯレスポンス時間測定データ３３に格納する。その測定データ３３から得られるＩＯレスポンス平均時間を格納したＩＯレスポンス２４は、例えば測定結果が得られる度ごとに、又は所定回数の測定結果が得られる度に、若しくは一定時間が経過する度に、測定結果をハイパーバイザ１２に渡す。ここでは、ＩＯレスポンス２４は一定時間が経過する度に、測定結果をハイパーバイザ１２に渡すと想定する。【００３８】
時間設定プログラム２２は、ＩＯレスポンス２４を取得した後に、暫定ディスパッチ時間を変更する。それにより、設定した暫定ディスパッチ時間と、その暫定ディスパッチ時間の設定により得られたＩＯレスポンス平均時間の組み合わせを平均ＩＯレスポンス累積データ２５として保存する。この累積データ２５は、仮想計算機１４毎に保存する。累積データ２５−１は仮想計算機１４−１用、累積データ２５−２は仮想計算機１４−２用である。【００３９】
図６は、平均ＩＯレスポンス累積データの構造を示す図である。項目名として表記の「ドメイン」（ｄｏｍａｉｎ）は仮想計算機１４を表す固有の識別データに相当する。格納例として表記の「ｄｏｍａｉｎ１」中の「１」は、仮想計算機１４に割り当てられたドメインＩＤを表している。【００４０】
項目名として表記の「Ｄｉｓｐａｔｃｈ１」及び「ＩＯ  Ｔｉｍｅ１」はそれぞれ、１回目に設定した暫定ディスパッチ時間、及び得られたＩＯレスポンス平均時間が対応するデータであることを表している。それにより表記された「１」は、暫定ディスパッチ時間を設定した順序を表している。これは、他の数値も同様である。【００４１】
「Ｄｉｓｐａｔｃｈ１」及び「Ｄｉｓｐａｔｃｈ１」での実際の暫定ディスパッチ時間は一例としてそれぞれ、１ｍｓ、及び１．５ｍｓとなっている。それにより本実施形態では、暫定ディスパッチ時間は初期値を例えば１ｍｓとし、その初期値から例えば０．５ｍｓずつ増加させるようにしている。【００４２】
ＩＯレスポンス平均時間は、２回目の暫定ディスパッチ時間の設定時には５．２３ｍｓ、１０回目の暫定ディスパッチ時間の設定時には７．０ｍｓとなっている。１１回目の暫定ディスパッチ時間の設定時には７．５ｍｓである。このことから、ＩＯレスポンスが悪化したのは、図３に示す関係から、７回目あたりで設定した暫定ディスパッチ時間であると推測することができる。【００４３】
時間設定プログラム２２は、例えばＩＯレスポンスが明らかに悪化した暫定ディスパッチ時間、その暫定ディスパッチ時間の直前に設定したディスパッチ時間、或いはそれら暫定ディスパッチ時間の間の時間を最適なディスパッチ時間として選択する。そのようにして選択したディスパッチ時間は、以後、最適なディスパッチ時間として設定する。二つの暫定ディスパッチ時間の間の時間としては、例えば、ＩＯレスポンスが悪化している暫定ディスパッチ時間でのＩＯレスポンス時間を結ぶ直線と、一定と見なすべきＩＯレスポンス時間を結ぶ直線とを想定し、それらの直線が交差する時間が考えられる。ここでは、ＩＯレスポンスが悪化する直前の暫定ディスパッチ時間を最適なディスパッチ時間として選択するものとする。【００４４】
このようにして選択するディスパッチ時間の設定は、予め定めた一定時間、有効と設定する。設定から一定時間が経過した後は、再度、最適なディスパッチ時間の特定を行う。これは、時間経過により、仮想計算機１４で実行されるワークロードが変化する可能性があるためである。それにより、実行されるワークロードの種類、或いは数等による最適なディスパッチ時間の変化に対応するようにしている。高いＩＯレスポンス性能を維持しつつ、ハイパーバイザ１２のオーバヘッドを抑えられることから、実行するワークロードに係わらず、最適なディスパッチ時間を設定することができる。【００４５】
図７は、評価項目毎に、本実施形態と各従来技術の評価内容を示す図である。評価項目としては、ハイパーバイザのオーバヘッド、ＩＯレスポンス、ワークロード混在時の最適化、及びワークロード変化への対応、の４つを選択している。ハイパーバイザのオーバヘッドの評価は、「大」「中」「小」で表している。ＩＯレスポンスの評価は、「長」「中」「短」で表している。ワークロード混在時の最適化、及びワークロード変化への対応の各評価は共に、「良」「中」「悪」で表している。各評価項目において、最良の評価には図７中「○」を付して示している。【００４６】
図７中の「（１）」〜「（４）」はそれぞれ、評価を行った対象を表している。具体的には、（１）は一般的な方法、つまりディスパッチタイマの設定による方法、及びアイドル検出による方法を併用したものを示している。（２）は短いディスパッチ時間を設定する方法を示している。（３）はＩＯ完了割り込み待ちの仮想計算機に優先的にＣＰＵを割り当てる方法を示している。（４）は本実施形態を示している。このようなことから、（１）〜（３）は何れも上記した従来技術に相当する。【００４７】
図７に示すように、本実施形態では、他の従来技術とは異なり、全ての評価項目で評価は最良となっている。このことから、本実施形態のようなディスパッチ時間の設定（自動調整）は、ディスパッチ時間を最適化するうえで極めて有効であることが分かる。【００４８】
図８は、ディスパッチ時間設定に係わる処理のフローチャートである。このフローチャートは、ハイパーバイザ１２及び仮想計算機１４上のゲストＯＳのそれぞれがディスパッチ時間設定のために実行する処理を抽出してその流れを示したものである。次に図８を参照して、ハイパーバイザ１２及び仮想計算機１４上のゲストＯＳの動作について詳細に説明する。図８に示すハイパーバイザ１２の一連の処理は、仮想計算機１４の起動、或いは管理者による指示を契機に実行される。【００４９】
ハイパーバイザ１２は、先ず、ディスパッチ時間の設定対象とする仮想計算機（図中「ゲストＯＳ」と表記）に割り当てる物理ＣＰＵを選択し、１回目に設定する暫定ディスパッチ時間を決定する（ステップＳＨ１）。物理ＣＰＵの選択により、図２に示す設定データ２３が保存される。【００５０】
物理ＣＰＵを選択した後は、決定した暫定ディスパッチ時間で物理ＣＰＵを仮想計算機１４に割り当てるディスパッチを行う（ステップＳＨ２）。その後は、仮想計算機１４からＩＯレスポンス２４が通知されるのを待つ待機状態に移行する。【００５１】
一方、仮想計算機１４のゲストＯＳは、ディスパッチにより測定プログラム３１を用いたＩＯレスポンス時間の測定を行い、その測定結果の保存、及び測定結果からＩＯレスポンス平均時間を算出するための集計を行う（ステップＳＧ１）。その後は、一定時間が経過したか否かを判定する（ステップＳＧ２）。この一定時間とは、ＩＯレスポンス２４を定期的に通知するために設定した時間である。この一定時間は、例えば起動終了時、或いは前回ＩＯレスポンス２４を通知した時点から経過した時間と比較される。それにより、経過時間が一定時間以上であった場合、判定はＹＥＳとなり、ＩＯレスポンス２４の作成および通知を行い（ステップＳＧ３）、一連の処理を終了する。その経過時間が一定時間より短い場合には、判定はＮＯとなって、ここで一連の処理を終了する。【００５２】
上記したようにハイパーバイザ１２側では、ＩＯレスポンス２４を取得した後に、暫定ディスパッチ時間を変更する。このため、仮想計算機１４側では、一定時間が経過するまでの間、ＩＯレスポンス時間の測定、及び測定結果の集計を繰り返し行うこととなる。それにより、図４に示すＩＯレスポンス時間測定データ３３は、例えばＩＯレスポンス２４の通知により削除する。そのようにして、割り当てられた暫定ディスパッチ時間毎に、時間測定データ３３を保存する。時間測定データ３３中の測定回数（ｃｏｕｎｔ）は、集計時に更新される。【００５３】
ＩＯレスポンス２４が通知されたハイパーバイザ１２は、そのＩＯレスポンス２４中のＩＯレスポンス平均時間を暫定ディスパッチ時間と共に平均ＩＯレスポンス累積データ２５として保存する（ステップＳＨ３）。その保存後は、ステップＳＨ４に移行して、あらかじめ決定したデータ数を取得したか否かを判定する。図６に示すように、暫定ディスパッチ時間は予め定めた時間分だけ、順次長くさせるようにしている。このことから、暫定ディスパッチ時間として最大とする時間を設定していた場合、判定はＹＥＳとなってステップＳＨ６に移行する。暫定ディスパッチ時間が最大時間でなかった場合には、判定はＮＯとなり、暫定ディスパッチ時間を変更するディスパッチ時間変更処理を実行してから（ステップＳＨ５）、上記ステップＳＨ２に戻る。それにより、変更後の暫定ディスパッチ時間でのＩＯレスポンス時間の測定を仮想計算機１４に行わせる。【００５４】
ステップＳＨ６では、収集したデータ、つまり保存した平均ＩＯレスポンス累積データ２５から最適なディスパッチ時間を選択する。選択したディスパッチ時間は、一定時間が経過するまでの間、仮想計算機１４のディスパッチ時間として有効とさせる（ステップＳＨ７及びＳＨ８）。【００５５】
この一定時間は、最適とするディスパッチ時間を更新（リフレッシュ）すべきタイミングを判定するために設定した時間である。この更新は、仮想計算機１４で実行されるワークロードの変化に対応するためのものである。この一定時間は、前回、最適とするディスパッチ時間を設定してから経過した時間と比較される。それにより、経過時間が一定時間以上となった場合、ステップＳＨ８の判定はＹＥＳとなり、ステップＳＨ９で１回目に設定する暫定ディスパッチ時間を決定した後、上記ステップＳＨ２に戻る。経過時間が一定時間より短い場合には、ステップＳＨ８の判定はＮＯとなり、ステップＳＨ７に戻る。それにより、ステップＳＨ７及びＳＨ８で形成される処理ループの実行を継続して、最適とするディスパッチ時間の設定を維持させる。【００５６】
仮想計算機１４で実行されるワークロードは、時間帯等によって変化する場合がある。このことから、一定時間ではなく、ディスパッチ時間を更新すべき時刻等を設定しても良い。それらを組み合わせても良い。【００５７】
ハイパーバイザ１２が実行する処理において、例えばステップＳＨ１及びＳＨ２はスケジューラ２１が用いられ、他のステップＳＨ３〜ＳＨ９は時間設定プログラム２２が用いられる。そのようにして、最適なディスパッチ時間の設定、つまりディスパッチ時間の自動調整にスケジューラ２１、及び時間設定プログラム２２は係わっている。このことから、本実施形態による最適なディスパッチ時間を自動調整するプログラムは、スケジューラ２１、及び時間設定プログラム２２を有するハイパーバイザ１２として実現されている。【００５８】
本実施形態では、暫定ディスパッチ時間の変更は、予め定めた時間分、前回の暫定ディスパッチ時間を長くすることにより行っている（図６）。しかし、最適なディスパッチ時間は、前回、設定したディスパッチ時間と同じか、或いはあまり変化していない可能性がある。このことから、前回、設定したディスパッチ時間の付近を優先してＩＯレスポンス時間の測定を行わせるようにしても良い。この時点で最適なディスパッチ時間が前回のディスパッチ時間と同じか、或いは変化の幅が所定の幅以下である場合には、最適なディスパッチ時間をより少ない測定回数で特定できるようになる。【００５９】
前回、設定したディスパッチ時間の付近を優先してＩＯレスポンス時間の測定を行わせる場合、例えば図９に示すような他のディスパッチ時間変更処理を実行させれば良い。この変更処理は、最適なディスパッチ時間を設定したことを条件に実行することから、ステップＳＨ４の判定がＮＯとなった場合、最適なディスパッチ時間を設定したか否かを判定する判定処理を実行する必要がある。その判定処理により、最適なディスパッチ時間を設定したと判定した場合に、図９に示す他のディスパッチ時間変更処理を実行させる。最適なディスパッチ時間を設定していない場合には、ステップＳＨ５のディスパッチ時間変更処理を実行させる。ステップＳＨ９では、有効としていたディスパッチ時間を暫定ディスパッチ時間として設定させる変更を行うことが望ましい。【００６０】
図９に示す他のディスパッチ時間変更処理を実行させる場合、あらかじめ決定した回数、ＩＯレスポンス時間の測定を行わせる途中で最適なディスパッチ時間を特定できる可能性が高い。このため、他のディスパッチ時間変更処理の前に、最適なディスパッチ時間を選択（特定）するための処理、及びその処理により最適なディスパッチ時間を選択できたか否かを判定する判定処理を配置させることが望ましい。つまり、最適なディスパッチ時間が選択できなかった場合にのみ、他のディスパッチ時間変更処理を実行させることが望ましい。最適なディスパッチ時間が選択できた場合には、ステップＳＨ７に移行させれば良い。【００６１】
図９に示す他のディスパッチ時間変更処理では、先ず、ステップＳＨ２１で１回目の測定か否かを判定する。ステップＳＨ３で保存した測定結果が１回目のものであった場合、判定はＹＥＳとなり、ステップＳＨ２２で次回の暫定ディスパッチ時間として、前回、設定した暫定ディスパッチ時間に予め定めた時間分だけ長くしたものを設定する。その設定後にこの変更処理を終了する。一方、測定結果が１回目のものでなかった場合には、判定はＮＯとなり、ステップＳＨ２３で前回、最適としたディスパッチ時間を中心点として増減させた時間を次回の暫定ディスパッチ時間として設定する。その設定後にこの変更処理を終了する。【００６２】
例えば前回、最適とするディスパッチ時間が５．０ｍｓであった場合、上記他のディスパッチ時間変更処理を実行することにより、２回目以降、暫定ディスパッチ時間は５．５ｍｓ→４．５ｍｓ→６．０ｍｓ→４．０ｍｓ→・・・と順次、変更される。それにより、今回、最適とすべきディスパッチ時間の前回、最適としたディスパッチ時間からの変化の幅が比較的に小さい場合には、その最適とすべきディスパッチ時間をより少ない測定回数で特定できるようになる。平均ＩＯレスポンス累積データ２５の内容が図６に示すようなものであった場合、最適なディスパッチ時間として５．０ｍｓが設定される。【００６３】
図１０は、ハードウェア構成の実施形態の一例を示す図である。ここで図１０を参照して、上記コンピュータ１の構成例について具体的に説明する。
図１０に示すコンピュータは、ＣＰＵ６１、メモリ６２、入力装置６３、外部記憶装置６４、媒体駆動装置６５、及びネットワーク接続装置６６を有し、これらがバス６７によって互いに接続された構成となっている。同図に示す構成は一例であり、これに限定されるものではない。【００６４】
ＣＰＵ６１は、当該コンピュータ全体の制御を行う演算処理装置である。仮想計算機１４に制御権を与える物理ＣＰＵに相当する。図１０には一つのみ示しているが、実際には複数、搭載される。搭載されるＣＰＵ６１がマルチコア型であった場合、各コアはそれぞれ１物理ＣＰＵとして扱われる。【００６５】
メモリ６２は、プログラム実行、データ更新等の際に、外部記憶装置６４（あるいは可搬型の記録媒体Ｍ）に記憶されているプログラムあるいはデータを一時的に格納するＲＡＭ等の半導体メモリである。ＣＰＵ６１は、プログラムをメモリ６２に読み出して実行することにより、全体の制御を行う。【００６６】
入力装置６３は、例えば管理者が操作するコンソールとの接続用のインターフェースである。コンソールとの間でデータを送受信し、受信したデータはＣＰＵ６１に送る。それにより、コンソールを介した指示に従ってコンピュータ１は動作する。【００６７】
ネットワーク接続装置６６は、ネットワークとの通信を行うものである。外部記憶装置６４は、例えばハードディスク装置である。主に各種データやプログラムの保存に用いられる。【００６８】
媒体駆動装置６５は、光ディスクや光磁気ディスク等の可搬型の記録媒体Ｍにアクセスするものである。
図１０に示す構成要素６１〜６６は、ハイパーバイザ１２によって仮想化されるハードウェア１１に相当する。図１０に示す構成では、ＩＯは外部記憶装置６４へのアクセス、或いはネットワーク接続装置６６を介した通信によって発生する。このことから、外部記憶装置６４及びネットワーク接続装置６６は共にＩＯ資源である。【００６９】
ハイパーバイザ１２、仮想計算機１３で動作するホストＯＳ、各仮想計算機１４で動作するゲストＯＳは例えば外部記憶装置６４に格納されている。図１に示すシステム構成は、ＣＰＵ６１がハイパーバイザ１２をメモリ６２に読み出して起動し、そのハイパーバイザ１２の制御で各仮想計算機１３、１４用のプログラムをメモリ６２に読み出して実行することで実現される。図８及び図９に示す各種処理は、ＣＰＵ６１がハイパーバイザ１２、仮想計算機１３用のプログラム（主にホストＯＳ）及び仮想計算機１４用のプログラム（ゲストＯＳやワークロード等）を実行することで実現される。ハイパーバイザ１２並びに仮想計算機１３及び１４用の各プログラムは、記録媒体Ｍに記録して配布しても良く、或いはネットワーク接続装置６６により取得できるようにしても良い。【００７０】
なお、本実施形態では、時間設定プログラム２２をハイパーバイザ１２に組み込んでいるが、組み込まないようにしても良い。つまり、時間設定プログラム２２により設定する暫定ディスパッチ時間の割り当て、及び特定した最適なディスパッチ時間の適用が可能であれば、時間設定プログラム２２はどのような形で搭載させても良い。【００７１】
本実施形態は、１台のコンピュータ１に本発明を適用したものであるが、２台以上のコンピュータを用いて構築されたコンピュータシステムでも本発明は適用可能である。このこともあり、本発明は幅広くコンピュータ（コンピュータシステムを構成するコンピュータを含む）に適用することが可能である。その適用は、本実施形態に限定されるものではない。
【図１】
2010089808.tif 000003
【図２】
2010089808.tif 000004
【図３】
2010089808.tif 000005
【図４】
2010089808.tif 000006
【図５】
2010089808.tif 000007
【図６】
2010089808.tif 000008
【図７】
2010089808.tif 000009
【図８】
2010089808.tif 000010
【図９】
2010089808.tif 000011
【図１０】
2010089808.tif 000012
【国際調査報告】
2010089808.tif 000013
2010089808.tif 000014
2010089808.tif 000015
2010089808.tif 000016