(57)【要約】【課題】              仮想計算機システムにおいて、複数のゲストＯＳをまたがった優先制御を実現し、ＣＰＵの効率的な利用を実現することを目的とする。【解決手段】          この発明に係る仮想計算機システムは、複数のゲストＯＳが実装され、ＣＰＵの処理時間を時分割して複数のゲストＯＳに割り当てることにより処理を実行する仮想計算機システムであって、受信した複数の処理要求の優先度を識別する優先度識別手段８と、複数の処理要求についての処理を実行する場合に、複数のゲストＯＳが必要とする負荷についての負荷情報を格納する負荷情報格納手段７と、優先度識別手段による識別結果および負荷情報格納手段に格納された負荷情報に基づいて、ゲストＯＳに割り当てるＣＰＵの処理時間を決定する割当決定手段５と、を備える。【選択図】          図１
2013041485.tif 000002
【特許請求の範囲】
【請求項１】
複数のゲストＯＳが実装され、ＣＰＵの処理時間を時分割して前記複数のゲストＯＳに割り当てることにより処理を実行する仮想計算機システムであって、
複数の処理要求を受信する処理要求受信手段と、
前記処理要求受信手段により受信した複数の処理要求の優先度を識別する優先度識別手段と、
前記複数の処理要求についての処理を実行する場合に、前記複数のゲストＯＳがそれぞれ必要とする負荷についての負荷情報を格納する負荷情報格納手段と、
前記優先度識別手段による識別結果および前記負荷情報格納手段に格納された負荷情報に基づいて、前記ゲストＯＳに割り当てる前記ＣＰＵの処理時間を決定する割当決定手段と、
を備えることを特徴とする仮想計算機システム。
【請求項２】
前記割当決定手段は、優先度の最も高い処理要求の前記負荷算出結果に基づいて、前記ゲストＯＳに割り当てる前記ＣＰＵの処理時間を決定すること、
を特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記優先度識別手段は、前記複数の処理要求をその優先度に基づいて、複数のグループに分類し、
前記割当決定手段は、前記複数のグループのうち最も高い優先度が設定されたグループの負荷算出結果に基づいて、前記ゲストＯＳに割り当てる前記ＣＰＵの処理時間を決定すること、
を特徴とする請求項１記載の仮想計算機システム。
【請求項４】
前記割当決定手段は、前記優先度識別手段により識別した優先度に応じて重みづけを行った前記負荷情報に基づいて前記ゲストＯＳに割り当てる前記ＣＰＵの処理時間を決定すること、
を特徴とする請求項１〜３のいずれか１項に記載の仮想計算機システム。
【請求項５】
前記処理要求の処理を前記ＣＰＵが実行するのに要する時間を計測する応答時間計測手段をさらに備え、
前記負荷情報格納手段は、前記応答時間計測手段により計測された応答時間が、予め定められた範囲外である場合に、対応する処理要求についての負荷情報を更新すること、
を特徴とする請求項１〜４のいずれか１項に記載の仮想計算機システム。
【請求項６】
計算機に複数のゲストＯＳが実装され、前記計算機のＣＰＵの処理時間を時分割して前記複数のゲストＯＳに割り当てることにより処理を実行する仮想計算機システムに適用可能な資源割り当て制御方法であって、
複数の処理要求を受信する処理要求受信ステップと、
前記処理要求受信ステップにおいて受信した複数の処理要求の優先度を識別する優先度識別ステップと、
前記処理要求受信ステップにおいて受信した複数の処理要求についての処理を実行する場合に前記複数のゲストＯＳが必要とする負荷を算出する負荷算出ステップと、
前記優先度識別ステップにおける識別結果および前記負荷算出ステップにおける負荷算出結果に基づいて、前記ゲストＯＳに割り当てる前記ＣＰＵの処理時間を決定する割当決定ステップと、
を備えることを特徴とする資源割り当て制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想計算機が動作する仮想計算機システム、およびこの仮想計算機システムの資源、例えばＣＰＵ（Central Processing Unit）の使用割り当てを制御する資源割り当て制御方法に関する。
【背景技術】
【０００２】
従来から、計算機上で複数の仮想計算機が動作する仮想計算機システムが知られているが、近年、パーソナルコンピュータのような小型の計算機においても、仮想計算機システムの技術が適用されている。典型的な仮想計算機システムの実装形式では、コンピュータのハードウェア上にハイパーバイザと呼ばれる制御プログラムを実装し、ハイパーバイザの機能によりＣＰＵ、メモリ、デバイスといったハードウェアを管理および制御を行い、ハイパーバイザ上に実装されるゲストＯＳに対して、仮想的な計算機（仮想計算機）の環境を提供する。ハイパーバイザを用いた仮想計算機システムを構築することで、物理的には１台のコンピュータ上で複数のＯＳを動作させることが可能になり、システムの運用コストの点からも、消費電力の抑制の点からもメリットがある。
【０００３】
ハイパーバイザ上には複数のゲストＯＳが実装され、物理ＣＰＵはハイパーバイザによるスケジューリング機能により、各ゲストＯＳに対応する仮想計算機間で時分割に使用される。従来の仮想計算機システムにおいて、ハイパーバイザは各ゲストＯＳへのＣＰＵ割当のスケジュールを決定する為に、各ゲストＯＳから提示されるＣＰＵ使用率の情報を使用する方式が提案されている（例えば、特許文献１参照）。
【０００４】
特許文献１では、システム外部からの処理要求に対応して、同一ハイパーバイザ上の別のゲストＯＳに対して処理を依頼するゲストＯＳをクライアントＯＳと呼び、クライアントＯＳからの要求を受け処理を行うゲストＯＳをサーバＯＳと呼ぶ。サーバＯＳはクライアントＯＳに対して、自分に割り当てられたＣＰＵ時間のうち、実際にＣＰＵを使用している率であるＣＰＵ使用率の情報を提供し、各クライアントＯＳで実際にＣＰＵを使用している量を把握し、実際のＣＰＵ使用量に基づいて各ＣＰＵに対して適切にＣＰＵ割当のスケジュールを行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２１８１５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の仮想計算機システムでは、ハイパーバイザ上に実装されている各ゲストＯＳに対するＣＰＵ割当時間を動的に変更することができ、各ゲストＯＳのＣＰＵの使用時間に着目したスケジューリングには対応可能であるが、リアルタイム性を意識した処理に対応することができなかった。
【０００７】
例えば、ハイパーバイザが割り当てるＣＰＵの割当時間には、実際にＣＰＵを使用している処理の優先度を反映することができない。同一ゲストＯＳ上では優先度の高い処理が先に実行されるため、優先度の高い処理に多くＣＰＵの処理時間が割り当てられる。しかし、異なるゲストＯＳ上で同程度のＣＰＵ使用率の優先度の低い処理と優先度の高い処理が動作していた場合には、ＣＰＵ使用率がその優先度に関係なく同程度と評価され、優先度の高い処理が動作しているゲストＯＳに対するＣＰＵ割当時間と優先度の低い処理が動作しているゲストＯＳに対しても、優先度の高い処理を実行しているゲストＯＳと同程度の処理時間が割り当てられてしまうことになる。
【０００８】
これらの問題から、従来の仮想計算機システムにおいては、ゲストＯＳをまたがった優先度を考慮することができず、結果としてシステム全体として優先制御を実現することができず、リアルタイム性を要求される処理に対して効率的にＣＰＵ時間を割当てることができなかった。
【０００９】
この発明は上記のような問題点を解決するためになされたもので、複数のゲストＯＳをまたがった優先制御を実現し、ＣＰＵの効率的な利用を実現することを目的とする。
【課題を解決するための手段】
【００１０】
この発明に係る仮想計算機システムは、複数のゲストＯＳが実装され、ＣＰＵの処理時間を時分割して複数のゲストＯＳに割り当てることにより処理を実行する仮想計算機システムであって、複数の処理要求を受信する処理要求受信手段と、処理要求受信手段により受信した複数の処理要求の優先度を識別する優先度識別手段と、複数の処理要求についての処理を実行する場合に、複数のゲストＯＳがそれぞれ必要とする負荷についての負荷情報を格納する負荷情報格納手段と、優先度識別手段による識別結果および負荷情報格納手段に格納された負荷情報に基づいて、ゲストＯＳに割り当てるＣＰＵの処理時間を決定する割当決定手段と、を備える。
【００１１】
また、この発明に係る資源割り当て制御方法は、計算機に複数のゲストＯＳが実装され、計算機のＣＰＵの処理時間を時分割して複数のゲストＯＳに割り当てることにより処理を実行する仮想計算機システムに適用可能な資源割り当て制御方法であって、複数の処理要求を受信する処理要求受信ステップと、処理要求受信ステップにおいて受信した複数の処理要求の優先度を識別する優先度識別ステップと、処理要求受信ステップにおいて受信した複数の処理要求についての処理を実行する場合に複数のゲストＯＳが必要とする負荷を算出する負荷算出ステップと、優先度識別ステップにおける識別結果および負荷算出ステップにおける負荷算出結果に基づいて、ゲストＯＳに割り当てるＣＰＵの処理時間を決定する割当決定ステップと、を備える
【発明の効果】
【００１２】
本発明によれば、ゲストＯＳをまたがった優先制御を行うことが可能となり、ＣＰＵの効率的な使用を実現することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に示す仮想計算機システムの構成を示すブロック図である。
【図２】実施の形態１に示す要求データベースの構成を示す図である。
【図３】実施の形態１に示す種別テーブルの構成を示す図である。
【図４】実施の形態１に示すＣＰＵ処理時間の割当動作を示すフローチャートである。
【図５】実施の形態１に示す要求データベースの構成例を示す図である。
【図６】実施の形態１に示す種別テーブルの構成例を示す図である。
【図７】実施の形態１に示す要求データベースの構成例を示す図である。
【図８】実施の形態２に示す種別テーブルの構成例を示す図である。
【図９】実施の形態３に示す要求データベースの構成を示す図である。
【図１０】実施の形態３に示す種別テーブルの構成を示す図である。
【図１１】実施の形態３に示す要求データベースの構成例を示す図である。
【図１２】実施の形態３に示す種別テーブルの構成例を示す図である。
【図１３】実施の形態３に示す要求データベースの更新動作について示す図である。
【図１４】実施の形態３に示す種別テーブルの更新例を示す図である。
【発明を実施するための形態】
【００１４】
実施の形態１．
本発明を適用した仮想計算機システムについて、ハイパーバイザを実装した仮想計算機システムを例にとり説明する。図１はこの発明の実施の形態１に係る仮想計算機システムの構成図である。図１において仮想計算機システム１は、実施の形態１に係る仮想計算機システムのシステム全体を示しており、例えば、パーソナルコンピュータやサーバコンピュータのような計算機を用いて実現される。図１においては、１台の計算機を用いて仮想計算機システムを構成する場合について示しているが、複数の計算機により構成するようにしてもよい。また、図１においては図示しないが入出力デバイスおよびネットワーク等を介して外部にユーザ端末等が接続されている。
【００１５】
物理資源部２は仮想計算機システム１を構成する物理的な構成要素であり、物理資源２はＣＰＵ１１、および、図１では図示しない主記憶装置や入出力デバイス等を備えている。ハイパーバイザ３は複数のゲストＯＳ４に対して、仮想的な計算機環境を提供し仮想マシンを実現する。ハイパーバイザ３はそれぞれのゲストＯＳ４に対して、物理資源部２に対するアクセスを制御するＣＰＵ割当部１０を備えており、また、各ゲストＯＳが主記憶や入出力デバイスといった物理資源２に対するアクセスする機能を有している。
【００１６】
ＣＰＵ割当決定部５は、仮想計算機システム１において１つだけ存在し、仮想計算機システム１が外部からの処理依頼を受け付ける機能を有する受付アプリケーション８と同一のゲストＯＳ上に実装される。要求データベース（ＤＢ）６は、受付アプリケーション８が受け付けた外部からの処理要求のリストを管理するデータベースである。種別テーブル（ＴＢＬ）７は、受付アプリケーション８が受け付ける可能性のある要求処理について、その種別ごとの処理負荷と優先度を管理するテーブルである。ここで、種別ごとの処理負荷とは、処理要求についての処理を実行する場合に、各ゲストＯＳが必要とする処理の負荷をいう。受付アプリケーション８およびその他の個別アプリケーション（ＡＰＬ）９は各ゲストＯＳ上で動作するアプリケーションであり、受付アプリケーションは仮想計算機システム１に接続されたユーザ端末からの処理要求の受付を行う。
【００１７】
（構成の説明１）
図２は要求データベース６の論理的な構成を示した図である。要求データベース６は、受付アプリケーションが受け付けた処理要求を一意に管理するための識別子である要求ＩＤ６０１と、受け付けた処理要求の処理内容を示す要求処理種別６０２の情報により構成されるエントリの集合である。
【００１８】
図３は種別テーブル７の論理的な構成を示した図である。種別テーブル７は、要求処理種別毎の情報を示す要求処理種別７０１毎と仮想計算機システム１に実装されるゲストＯＳ４ごとの負荷を管理するテーブルである。図３では要求処理種別７０１がＦＩＤ＃１で示される処理では、ゲストＯＳ＃１の負荷７０２はＷ＃１−１、ゲストＯＳ＃２の負荷７０３はＷ＃２−１、ゲストＯＳ＃３の負荷７０４はＷ＃３−１で定義されている。また要求処理種別７０１がＦＩＤ＃１で示される処理の優先度７０５はＰＲＩ＃１で定義されている。
【００１９】
次に動作について説明する。まず、本発明の実施の形態１に係る仮想計算機システムの全体的な動作について説明する。本発明の実施の形態１に係る仮想計算機システムは、外部の装置／ユーザから処理要求を受け付け、仮想計算機システム１内で各処理要求の負荷および優先度に基づいて、各ゲストＯＳが使用する資源（ここでは、ＣＰＵの処理時間）の割り当ての決定を行い、割当てられた処理時間に各ゲストＯＳがＣＰＵを用いて処理を行う。処理が終了した場合、外部の装置／ユーザに対して処理結果を送信する。なお、仮想計算機システム１が処理結果を送信する先は、処理要求を入力した要求元のユーザ端末とは限らない。
【００２０】
次に、各ゲストＯＳが使用するＣＰＵの処理時間の割当動作について図４を参照して説明する。外部の装置／ユーザから仮想計算機システム１に処理要求が入力された場合、受付アプリケーション８へ転送され（ステップＳ１）、受付アプリケーション８では受信した処理要求の情報を精査し、必要な処理の種別を示す要求処理種別を判定する（ステップＳ２）。要求処理種別が判定できたら、受付アプリケーション８は当該要求処理を実現するために必要なアプリケーション９に対して処理の依頼を行う。その後、受付アプリケーション８は現在処理中の処理要求の内容に識別子を割り当てて要求データベース６に登録し、要求データベースを更新する（ステップＳ３）。要求データベース６への登録が終わった後、受付アプリケーション８は新しい要求が登録されたことで要求データベース６の内容が変更されことをＣＰＵ割当決定機能５に対して通知する（ステップＳ４）。要求データベース６の更新が通知された際には、ＣＰＵ割当決定機能５は要求データベース６の内容と種別テーブル７の内容を基に、ハイパーバイザ３が各ゲストＯＳに対してどのようにＣＰＵを割り当てるかを計算する（ステップＳ６）。要求ＤＢに処理要求がある場合には、ステップＳ１に戻り、ＣＰＵによる処理が終了し処理要求が全て処理された場合には終了する（ステップＳ７）。
【００２１】
ＣＰＵ１１は、割当スケジュールに基づいて処理要求の内容についてアプリケーション９を実行することにより、要求された処理を実行し、処理結果を外部の装置／ユーザに対して送信することができる。以下に、発明の特徴となる動作について詳述する。
【００２２】
要求データベース６への登録動作（ステップＳ４）について説明する。外部のユーザ端末から処理要求が入力された場合、受付アプリケーション８がその処理要求を受け付ける。受付アプリケーション８は、受け付けた処理要求に対して要求ＩＤを振り、要求データベース６に登録する。また、受け付けた処理要求の種別を判定し、その種別を要求ＩＤに対応させて要求データベース６に登録する。要求データベース６の設定例を図５に示す。図５に示す設定例では要求ＩＤが１、２、３、４の４つの要求が登録されており、それぞれの要求種別はＡ、Ａ、Ｄ、Ｃである。
【００２３】
図６に、種別テーブル７の設定例を示す。図５では、Ａ〜Ｅの処理要求の種別が登録されている。それぞれの種別で、各ＯＳ（＃１〜＃３）の負荷が格納されており、例えば、要求処理種別Ａでは、各ゲストＯＳの負荷は（ＯＳ＃１，ＯＳ＃２，ＯＳ＃３）＝（１，０，１）となっている。また、要求処理種別ごとに優先度が格納されており、優先度は（Ａ，Ｂ，Ｃ，Ｄ，Ｅ）＝（低、高、低、低、高）である。
【００２４】
ＣＰＵ割当スケジュールの決定方法（ステップＳ６）について説明する。まず、図４に示すように要求データベース６に高優先度の処理要求（最も高い優先度の処理要求）が格納されていない場合の割当決定動作について説明する。
要求データベース６の更新が通知された場合、ＣＰＵ割当決定部１０は要求データベース６の登録内容を確認する。仮想計算機システム１で処理中の要求の要求種別はＡ、Ｃ、Ｄの３種類である。ＣＰＵ割当決定部１０は、現在仮想計算機システム１で処理中のＡ、Ｃ、Ｄの３種類の処理について、種別テーブル７を参照し、それぞれに対応する優先度と各ゲストＯＳへの負荷を算出する。図５の設定例では、要求種別がＡの処理については、優先度が低、各ゲストＯＳの負荷が（ＯＳ＃１，ＯＳ＃２，ＯＳ＃３）＝（１，０，１）となっている。同様に要求種別がＣの場合には優先度低、（ＯＳ＃１，ＯＳ＃２，ＯＳ＃３）＝（１，１，１）、要求種別がＤの場合には優先度低、（ＯＳ＃１，ＯＳ＃２，ＯＳ＃３）＝（１，０，２）となる。
【００２５】
この結果から現在処理中の要求に対応する要求種別Ａ、Ｃ、Ｄは全て優先度が低で定義されており、同一の優先度を持つことがわかる。全ての処理要求が同一の優先度を持つ場合には、定義された各ゲストＯＳの負荷に対応した比率で各ＯＳのＣＰＵ割当比率を決定する。現在処理中の要求はＡ、Ａ、Ｄ、Ｃであるため、それらの処理に必要とされる各ＯＳの処理負荷の値を加算すると（ＯＳ＃１，ＯＳ＃２，ＯＳ＃３）＝Ａ＋Ａ＋Ｄ＋Ｃ＝（１，０，１）＋（１，０，１）＋（１，０，２）＋（１，１，１）＝（４，１，５）となり、ＯＳ＃１：ＯＳ＃２：ＯＳ＃３＝４：１：５の比率でＣＰＵの割当を行うように決定する。
【００２６】
要求データベース６に対応したＣＰＵ割当スケジュールを決定したＣＰＵ割当決定部５は、結果をハイパーバイザ３内に実装されているＣＰＵ割当部１０へ設定する。ＣＰＵ割当部１０は、設定されたＣＰＵ割当スケジュールに基づき、各ゲストＯＳ４のＣＰＵ割当スケジュールを制御する。
【００２７】
受付アプリケーション８から他のアプリケーション９に依頼していた処理が完了し、受付アプリケーション８へ応答が返ってきた場合には、受付アプリケーションは応答の内容を確認し、要求データベース６に登録された内容から、対応する要求ＩＤ６０１の登録情報を削除し、ＣＰＵ割当決定機能５へ要求データベース６が変更されたことを通知する。ＣＰＵ割当決定機能５は現在の最新の要求データベース６の情報を基にＣＰＵ割当スケジュールを決定し、ハイパーバイザ３内のＣＰＵ割当部１０に設定する。この動作により仮想計算機システム１外部から要求された処理の要求種別に基づき、各ゲストＯＳへのＣＰＵ割当スケジュールを変更する。
【００２８】
次に、高優先度の処理要求（最も優先度の高い処理要求）を受け付けた場合の割当決定動作（ステップＳ６）について説明する。すなわち、要求データベース６が図５に示す設定状態であった場合に、外部から要求処理種別がＢとＥの処理要求が入力された場合の動作について説明する。
要求データベース６の更新が通知され、ＣＰＵ割当決定機能５が割り当てスケジュールを決定する際、要求データベース６から登録されている処理要求の要求処理種別を検索するとＡ、Ｂ、Ｃ、Ｄ、Ｅが登録されているということがわかる。図５に示された種別テーブル７から要求種別Ａ、Ｂ、Ｃ、Ｄ、Ｅに対応する情報を検索すると、Ｂ、Ｅの優先度が高、Ａ、Ｃ、Ｄの優先度は低として設定されていることがわかる。
【００２９】
ここで優先度７０５が異なる要求が要求データベース６に登録されていることがわかるため、ＣＰＵ割当決定機能５は優先度７０５の最も高い処理要求に基づいてＣＰＵ割当スケジュールを決定する。登録されているＡ、Ｂ、Ｃ、Ｄ、Ｅの要求処理種別の優先度は「高」「低」の２種類に分類される。このうち最も優先度が高いグループは優先度「高」と設定されたものである。
【００３０】
この結果からＣＰＵ割当決定機能５は優先度「高」に該当する要求処理種別のＢ、Ｅの情報を用いてＣＰＵ割当スケジュールの決定を行う。すなわち、この場合各ＯＳの負荷は（ＯＳ＃１，ＯＳ＃２，ＯＳ＃３）＝Ｂ＋Ｅ＝（１，１，０）＋（１，０，２）＝（２，１，２）となり、ＯＳ＃１：ＯＳ＃２：ＯＳ＃３＝２：１：２の比率でＣＰＵの割当を行うように決定する。
【００３１】
ＣＰＵ１１は、設定された割当スケジュールに基づいて処理要求の内容についてアプリケーション９を実行して要求された処理を行い、処理結果を外部の装置／ユーザに対して送信する。
【００３２】
これらの動作によりゲストＯＳをまたがった優先度を考慮することが可能となり、システム全体として優先制御を実現することができ、リアルタイム性を要求される処理に対して効率的にＣＰＵ時間を割当てることができるようになる。
【００３３】
なお、ここでは、優先度が最も高い処理要求に基づいて割当スケジュールを決定する場合について示したが、優先度が３つ以上設けられている場合（例えば、高・中・低）には、２以上の優先度の処理要求（例えば、高・中）に基づいて割当スケジュールを決定するようにしても良い。また、本実施の形態では、処理要求を受け付けた場合にＣＰＵの処理時間の割当を行う場合について示したが、処理要求の受付の有無にかかわらず定期的に要求データベースの内容に基づいてＣＰＵの処理時間の割当を行う構成としてもよい。
【００３４】
実施の形態２．
実施の形態１では、ＣＰＵ割当決定部１０において、最も高い優先度の処理要求の情報に基づいてＣＰＵ割当スケジュールを決定する場合について示したが、実施の形態２では優先度の比率に対応してＣＰＵ割当時間を割り振る場合について示す。実施の形態２に係る仮想計算機システムの構成は、図１に示す実施の形態１の仮想計算機システムと同様であり、説明を省略する。図８は本実施の形態に関わる種別テーブル７の設定例について示している。図８に示す種別テーブル７では、実施の形態１で示した種別テーブルと異なり、優先度は数値（１〜３）で設定されている。
【００３５】
次に、動作について説明する。実施の形態２に係る仮想計算機システムの全体の動作およびＣＰＵ割当決定動作は、実施の形態１に示す場合と同様であり、図４に示すとおりである。ここでは、実施の形態１に示す仮想計算機システムと動作が異なるＣＰＵ割当スケジュールの決定（ステップＳ６）について説明する。
【００３６】
要求データベース６が更新され、図７のように設定された場合、ＣＰＵ割当決定機能５では要求データベース６に登録されている処理要求の要求処理種別Ａ、Ｂ、Ｃ、Ｄ、Ｅを種別テーブル７から検索し、各要求処理種別の優先度を識別し、各ゲストＯＳに対する付加を算出する。要求種別がＡの処理について優先度は１、各ゲストＯＳの負荷は（ＯＳ＃１，ＯＳ＃２，ＯＳ＃３）＝（１，０，１）となっている。同様に、要求種別がＢの場合には優先度は２、（１，１，０）、要求種別がＣの場合には優先度が１、（１，１，１）、要求種別がＤの場合には優先度が１、（１，０，２）、要求種別がＥの場合には優先度が２、（１，０，２）となる。これらの結果から各ゲストＯＳへの負荷に対して、優先度に応じて重み付け、すなわち、優先度を乗算した情報を加算して各ゲストＯＳへのＣＰＵ割当時間を決定する。
【００３７】
具体的には、（ＯＳ＃１，ＯＳ＃２，ＯＳ＃３）＝Ａ＋Ａ＋Ｄ＋Ｃ＋Ｂ＋Ｅ＝（１，１，０）＋（１，１，０）＋（１，０，２）＋（１，１，１）＋２×（１，１，０）＋３×（１，０，２）＝（９，５，９）となり、ＯＳ＃１：ＯＳ＃２：ＯＳ＃３＝９：５：９の比率でＣＰＵの割当を行うように決定する。
【００３８】
ＣＰＵ１１は、設定された割当スケジュールに基づいて処理要求の内容についてアプリケーション９を実行して要求された処理を行い、処理結果を外部の装置／ユーザに対して送信する。
【００３９】
実施の形態２に係る仮想計算機システムでは、上述のような構成となっているため、ゲストＯＳをまたがった優先度を考慮することが可能となり、システム全体として優先制御を実現することができ、リアルタイム性を要求される処理に対して効率的にＣＰＵ時間を割当てることができるようになる。
【００４０】
実施の形態３．
実施の形態１および２は、種別テーブル７において予め定められた処理要求種別ごとの各ゲストＯＳに対するＣＰＵ負荷に基づいてＣＰＵ割当スケジュールの決定する場合について示したが、実施の形態３では処理要求種別の実際の応答時間に基づいて、種別テーブル７を修正し、修正された種別テーブル７に基づいてＣＰＵ割り当てを決定する場合について説明する。実施の形態３に係る計算機システムの構成は、実施の形態１に示す場合と同様であり、図１に示す通りである。
【００４１】
図９に、実施の形態３に係る仮想計算機システムの要求データベース６の構成を示す。図８において、各エントリには要求ＩＤ６０１に対応する要求実施時刻６０３を保存する項目が設定されている。要求実施時刻６０３には受付アプリケーション８が他のアプリケーション９に対して要求を依頼した時刻を格納する。
【００４２】
図９に、実施の形態３に係る仮想計算機システムの種別テーブル７の構成を示す。各エントリには要求処理種別７０１に対応する応答時間下限７０６、応答時間上限７０７の情報を設定する。ここで、応答時間下限７０６とは、予め設定された応答時間の下限値であり、同様に、応答時間上限７０７とは、予め設定された応答時間の上限値である。また、ここでの応答時間とは、各処理要求の処理に要する時間を指し、ここでは、受付アプリケーション８が他のアプリケーション９に対して要求を依頼してから、要求を依頼された他のアプリケーション９から応答を受け取るまでの時間をいうものとする。
【００４３】
次に動作について説明する。実施の形態３に係る仮想計算機システムの全体の動作については図４に示す場合と同様である。仮想計算機システム１が外部から処理要求を受信する（ステップＳ１）と、受付アプリケーション８がその処理要求を受け付け、他のアプリケーション９に要求を依頼し（ステップＳ２）、要求データベース６を更新する。その際、実施の形態３においては、要求ＩＤ６０１に対応する要求依頼時の時刻情報を要求実施時刻６０３に格納する。その後、受け付けアプリケーション８はＣＰＵ割当決定機能５に対して、要求データベース６の更新があったことを通知し（ステップＳ５）、ＣＰＵ割当決定機能５は各ゲストＯＳ４に対するＣＰＵ割当時間のスケジュールを再計算し、再計算された割当時間に基づいて各ゲストＯＳが処理を実行する（ステップＳ６）。
【００４４】
他のアプリケーション９から応答を受信した場合には、該当する処理要求を要求データベース６から削除し、ＣＰＵ割当決定機能５は更新された要求データベース５を基に応答時間の計算を行うが、その後要求データベース５に登録されていた該当する処理要求の要求実施時刻６０３の情報と、要求された処理を実行したアプリケーション９から応答を受信した時刻の情報を用いて処理要求の実行にかかった時間（応答時間）を算出し、該当する要求処理種別７０１に対応する応答時間下限７０６、応答時間上限７０７の値と比較を行う。実行にかかった時間が応答時間下限７０６より小さい場合、あるいは実行にかかった時間が応答時間上限７０７より大きい場合には、対象となる要求処理種別７０１の各ゲストＯＳの処理負荷７０２〜７０４の値を変更する。
【００４５】
図１１は実施の形態３に対応する要求データベース６の設定例である。図１２は実施の形態３に対応する種別テーブル７の設定例である。図１１では現在仮想計算機システム１で要求処理種別６０２がＡの要求を１件処理している。要求ＩＤ６０１のその処理要求は０１：０２：０３  ０００に受付アプリケーション８から他のアプリケーション９へ転送している。図１３は受付アプリケーション８が処理要求の応答を受信した場合の動作について示している。
【００４６】
この状態で受付アプリケーション８が要求ＩＤ６０１に１が設定されている処理要求の応答を、他のアプリケーションから受信した場合には、該当する要求データベース６のエントリを一時格納エリア１２に、要求完了時刻１２０４の情報を付加して保存し、要求データベース６の該当する要求ＩＤ６０１に対応するエントリを削除する動作を示したものである。ＣＰＵ割当決定機能５は更新された要求データベース６に基づきＣＰＵ割当スケジュールの再計算をした後、一時格納エリア１２の情報を基に種別テーブル７の更新を行う。
【００４７】
図１３の例では、要求ＩＤ６０１の値が１を持った処理要求の、受付アプリケーション８における処理時間の計測では要求完了時刻１２０４から要求実施時刻１２０３の値を減算すると８ｍｓｅｃ経過していることがわかる。ここで要求処理種別７０１がＡの場合の処理時間下限７０６、処理時間上限７０７を見ると、今回の処理時間が処理時間上限７０７の値である５よりも大きいため、次回からの要求処理種別Ａに対する各ゲストＯＳのＣＰＵ時間の割当を増やすために、図１４に示すとおり種別テーブル７の要求処理種別Ａに対する各ゲストＯＳの負荷７０２〜７０４を例えば１０％ずつ増やして再設定する。もし、処理時間下限７０６よりも処理時間が小さい場合には、各ゲストＯＳの負荷７０２〜７０４を例えば１０％ずつ減らす。
【００４８】
これらの動作によりＣＰＵ使用率の割当に使用する処理負荷の見積もりを、現状のシステムの稼動状況に応じて適切化することで、優先される処理に対しても過剰に資源を割り当てることではなく、適切な資源分配を実現することができる。
【符号の説明】
【００４９】
１  仮想計算機システム、２  物理資源部、３  ハイパーバイザ、４  ゲストＯＳ、５  ＣＰＵ割当決定部、６  要求データベース、７  種別テーブル、８  受付アプリケーション、９  アプリケーション、１０  ＣＰＵ割当部、１１  ＣＰＵ、１２  一時格納エリア、６０１  要求ＩＤ、６０２  要求処理種別、６０３  要求実施時刻、７０１  要求処理種別、７０２〜７０４  ＯＳ＃１〜３の負荷、７０５  優先度、７０６  応答時間下限、７０７  応答時間上限、１２０１  要求ID、１２０２  要求処理種別、１２０３  要求実施時刻、１２０４  要求完了時刻
【図１】
2013041485.tif 000003
【図２】
2013041485.tif 000004
【図３】
2013041485.tif 000005
【図４】
2013041485.tif 000006
【図５】
2013041485.tif 000007
【図６】
2013041485.tif 000008
【図７】
2013041485.tif 000009
【図８】
2013041485.tif 000010
【図９】
2013041485.tif 000011
【図１０】
2013041485.tif 000012
【図１１】
2013041485.tif 000013
【図１２】
2013041485.tif 000014
【図１３】
2013041485.tif 000015
【図１４】
2013041485.tif 000016