JP4862056B2 - 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法 - Google Patents

仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法 Download PDF

Info

Publication number
JP4862056B2
JP4862056B2 JP2009063275A JP2009063275A JP4862056B2 JP 4862056 B2 JP4862056 B2 JP 4862056B2 JP 2009063275 A JP2009063275 A JP 2009063275A JP 2009063275 A JP2009063275 A JP 2009063275A JP 4862056 B2 JP4862056 B2 JP 4862056B2
Authority
JP
Japan
Prior art keywords
guest
server
cpu
client
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009063275A
Other languages
English (en)
Other versions
JP2010218151A (ja
Inventor
聡 水野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2009063275A priority Critical patent/JP4862056B2/ja
Publication of JP2010218151A publication Critical patent/JP2010218151A/ja
Application granted granted Critical
Publication of JP4862056B2 publication Critical patent/JP4862056B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、複数の仮想計算機が動作する仮想計算機システムに係り、特に、同システムにおいて複数の仮想計算機で実行される複数のゲストOSにCPUを時分割で割り当てるのに好適な仮想計算機管理機構及び仮想計算機システムにおけるCPU時間割り当て制御方法に関する。
古くから、メインフレームにおいてハードウェア(HW)による仮想計算機(Virtual Machine:VM)支援機構を使った仮想計算機システムが知られている。また、近年は、パーソナルコンピュータのような計算機においても仮想計算機の技術を応用した研究や開発が行われている。
典型的な仮想計算機システムでは、計算機(物理計算機)のハードウェア上に仮想計算機管理機構(Virtual Machine Manager/Monitor:VMM)が存在する。物理計算機のハードウェアは、CPU(実CPU)、メモリ(実メモリ)、各種入出力装置(実入出力装置)等で構成されている。VMMは一般にソフトウェアモジュールを用いて構成される。VMMは、ハードウェアを直接管理し、それを仮想化して仮想計算機(仮想マシン)を構築する。仮想計算機は、仮想CPU、仮想入出力(I/O)装置等から構成される。つまりVMMは、仮想CPU、仮想I/O装置のイメージを作り、実CPUや実I/O装置、実メモリ等のHWリソースを時間的、領域的に仮想CPU、仮想I/O装置、仮想計算機のメモリとして割り当てる。このようにしてVMMは仮想計算機を構築する。つまりVMMは、仮想計算機(仮想的な計算機)が実行可能な仮想計算機実行環境を提供する。仮想計算機にはゲストOSと呼ばれるオペレーティングシステム(OS)がロードされる。このゲストOSは、仮想CPU(つまり実CPUを割り当てることによって実現される仮想CPU)により実行される。
このような仮想計算機システムでは、目的に合わせて複数のゲストOSを稼動させることができる。これは、通常の計算機システム(非仮想計算機システム)にはない、仮想計算機システムの利点である。
仮想計算機システムでは、複数のサーバ計算機で実行されていた複数のOSを、例えば特許文献1にも記載されているように、1つの物理計算機を用いて実現される仮想計算機システムの環境(仮想計算機環境)の中で、複数のゲストOSとして動作させることが可能になる。このため、複数のOSを実行させるのに必要な物理計算機(実計算機)の台数を減らすことができ、消費電力を削減することもできる。また、物理計算機の数が減ることにより管理も容易になる。更に、仮想計算機では、必要なときに必要なゲストOSを実行すればよい。
これに対し、複数の物理計算機でそれぞれOSを実行する計算機システムでは、OSによる処理が不要な期間、当該OSがロードされている物理計算機が非稼動状態となることから、当該物理計算機の資源を有効に利用することができない。
特開2008−165410号公報
上述のように、仮想計算機システムでは、物理計算機の数を減らしつつ、物理計算機の資源を複数のゲストOSのうち実行が必要なゲストOSに割り当てることで、当該物理計算機の資源を有効利用することが可能になる。しかし従来の仮想計算機システムでは、当該システム内で動作する複数のゲストOSで、サーバ/クライアント関係を構築する際には、以下に述べるように注意が必要となる。
仮想計算機システム内のVMMは、当該システム内で動作する複数のゲストOSに物理計算機の資源としての例えば実CPUをある割合で時分割で割り当てるのが一般的である。最も単純な実CPUの割り当て手法として、各ゲストOSに実CPUを割り当てる時間の割合を予め静的に決める手法が知られている。
ここで、仮想計算機システム内で4つのゲストOS#0,#1,#2及び#3が動作し、これらのゲストOS#0,#1,#2及び#3に、それぞれ20%,20%,40%及び20%の割合で、CPU時間が割り当てられるものとする。ユーザは、これらのゲストOS毎のCPU時間の割り当て比率(CPU割り当て比率)を、例えば、VMMのためのシステムコンソールを用いて直接指定することができる。
ゲストOS#0,#1及び#2の間にはサーバ/クライアントの関係があるものとする。具体的には、ゲストOS#0及び#1がクライアントとして機能して、ゲストOS#2がデータベースサーバとして機能するものとする。
ゲストOS#0及び#1は処理要求をゲストOS#2に発行し、ゲストOS#2は要求されたデータベースサーバとしての処理を行って結果を要求元に返す。ここで、ゲストOS#0及び#1が、ネットワーク経由で外部から与えられる問い合わせ処理の依頼を受けて、データベースサーバであるゲストOS#2にデータ照合を要求し、結果をネットワーク経由で問い合わせ元に返す処理を実行するものとする。このような処理はOLTP(On Line Transaction Processing)と呼ばれる。
上述のように、ゲストOS毎にCPU割り当て比率が予め静的に決定されていると、ゲストOS#0及び#1からの処理要求に対して、ゲストOS#2の処理が追いつかなくなることがある。このような状態が発生すると、ゲストOS#0及び#1の要求する時間内に処理を終えることができない場合が生じ得る。その場合、ゲストOS#0及び#1はタイムアウト処理などにより、実際には有効な処理を終えることができないまま、エラー処理やリトライ処理を行うことになる。
例えば、ユーザの操作によりユーザ端末のWebインターフェイスからネットワーク経由でクライアントにアクセスすることによって各種サービスをクライアントに要求するシステムでは、システムのレスポンスが遅い場合、更にユーザはWebインターフェイスからクライアントに問い合わせ(サービス要求)を送る傾向がある。これが更なるクライアントの負荷になり、システムの状況を悪化させる。
上述のような状況においてクライアントは、サーバに対して先に出した処理の取り消しを要求したり、或いはタイムアウトエラーを問い合わせ元に返す。すると、更に同じ要求が問い合わせ元からクライアントに送りつけられて、再びサーバに対する問い合わせ処理が発生する。結局、このような状況になると、元々CPU時間が不足しているところに、更にユーザからのリクエストやエラー処理にCPUの時間が使われてしまう割合が大きくなり、システムの効率が非常に悪化する。
一方、上記特許文献1に記載の仮想計算機システムでは、スケジュール周期と呼ばれる一定周期毎に、スケジュール対象となる複数のゲストOSに実CPUが時分割で割り当てられる。この特許文献1に記載の仮想計算機システムでは、当該システム内のVMMが、相互に通信を行うゲストOSの組を特定して、この特定された組に属する各ゲストOSに対して1スケジュール周期内で実CPUを割り当てる回数を、対応する平均通信時間に基づいて動的に決定している。ここで、1スケジュール周期内の割り当て回数が標準(例えば1回)のn倍になれば、1回当たりの実CPUの割り当て時間は1/nとなる。
つまり、特許文献1に記載の仮想計算機システムでは、各ゲストOSに対して1スケジュール周期内に実CPUが割り当てられる回数は動的に決定される一方、各ゲストOSに実CPUが割り当てられる時間の割合は予め静的に決められている。このため、特許文献1に記載の仮想計算機システムでは、ゲストOS間の通信に要する時間の影響が大きい場合には、システム効率を向上することができるものの、上述の各ゲストOSでサーバ/クライアント関係を構築する場合のように、各ゲストOSの処理に要する時間の影響が大きい場合には、システム効率を向上することが困難となる。
本発明は上記事情を考慮してなされたものでその目的は、サーバ/クライアント関係にある複数のゲストOSが動作する場合に当該サーバ/クライアント関係を認識し、各ゲストOSにCPUが割り当てられる時間を当該サーバ/クライアント関係に基づいて調整することによりシステム効率を向上することができる、仮想計算機管理機構及び仮想計算機システムにおけるCPU時間割り当て制御方法を提供することにある。
本発明の1つの観点によれば、CPUを含むハードウェアを仮想化することによって複数の仮想計算機を構築し、当該複数の仮想計算機で複数のゲストOSを時分割で実行させるための管理を行う仮想計算機管理機構が提供される。この仮想計算機管理機構は、前記複数のゲストOSのうちの任意のゲストOSがクライアントとして機能して、前記複数のゲストOSのうちのサーバとして機能する他のゲストOSに処理を要求する際に、処理の要求元のゲストOSがクライアントであり、処理の要求先のゲストOSがサーバであるサーバ/クライアント関係を、前記処理の要求元のゲストOSから前記仮想計算機管理機構に通知するのに用いられるサーバ/クライアント関係通知インターフェイスを含むゲストOSインターフェイス手段と、前記複数のゲストOSに前記CPUを時分割で割り当てるためのスケジュールを管理するスケジューラであって、前記サーバ/クライアント関係通知インターフェイスによって通知されたゲストOS間のサーバ/クライアント関係に基づいて、前記複数のゲストOSに前記CPUを割り当てる時間を調整するスケジューラとを具備する。
本発明によれば、複数のゲストOSを時分割で実行させるための管理を行う仮想計算機管理機構が、複数のゲストOSのサーバ/クライアント関係をサーバ/クライアント関係通知インターフェイスを介して認識して、各ゲストOSにCPUが割り当てられる時間を、その認識した関係に基づいて調整することにより、従来技術においてゲストOS間で密に相互に通信を行いながらサーバ/クライアントの関係で連携して処理を行うような場合に発生していたCPU割り当て時間の不適切な配分による効率悪化の状況を改善して、システム効率を高めることができる。
本発明の一実施形態に係る仮想計算機システムを含むネットワークシステムの構成を示すブロック図。 同仮想計算機システムの構成を示すブロック図。 図2に示されるゲストOS依存関係テーブルの第1のデータ構造の例を示す図。 図2に示されるCPU割り当てテーブルのデータ構造の例を示す図。 単純なサーバ/クライアントの関係を表すゲストOS依存関係ツリー構造の例を示す図。 複雑なサーバ/クライアントの関係を表すゲストOS依存関係ツリー構造の例を示す図。 図2に示されるゲストOS依存関係テーブルの第2のデータ構造の例を示す図。 同実施形態におけるCPU時間再割り当て処理の手順を示すフローチャート。 図4に示されるCPU割り当てテーブルのCPU時間再割り当て処理後の状態の一例を示す図。 同実施形態の変形例で適用されるCPU割り当てテーブルのデータ構造の例を示す図。 同実施形態の変形例におけるCPU時間再割り当て処理の手順を示すフローチャート。
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る仮想計算機システム1を含むネットワークシステムの構成を示すブロック図である。
図1において、仮想計算機システム1は、ネットワーク2に接続されている。このネットワーク2には、1つ以上のユーザ端末、例えば複数のユーザ端末3が接続されている。本実施形態においてユーザ端末3の1つは、仮想計算機システム1のためのシステムコンソールとして用いられる。
図2は、図1に示される仮想計算機システム1の構成を示すブロック図である。仮想計算機システム1は、パーソナルコンピュータやサーバコンピュータのような物理計算機10を用いて実現される。物理計算機10は、仮想計算機(仮想マシン)の実行環境を提供するのに必要なハードウェア11を備えている。ハードウェア11は、CPU(実CPU)110、更には図示せぬI/O(入出力)装置(実I/O装置)及びメモリ(実メモリ)を含む。
物理計算機10のハードウェア11上では、例えばソフトウェアモジュールを用いて構成される仮想計算機管理機構(Virtual Machine Manager/Monitor:VMM)20が動作する。VMM20は、仮想計算機システム1の管理を行い、仮想計算機実行環境を提供する。更に具体的に述べるならば、VMM20は、物理計算機10のハードウェア11を構成する、CPU110を含む物理資源を管理すると共に、当該物理資源の時間的、領域的な配分を管理することにより、複数の仮想計算機が動作する仮想計算機実行環境を提供する。図2の仮想計算機システム1の例では、VMM20は、4台の仮想計算機30-0,30-1,30-2及び30-3が動作する仮想計算機実行環境を提供している。
仮想計算機30-0,30-1,30-2及び30-3上では、それぞれゲストOS310-0(#0),310-1(#1),310-2(#2)及び310-3(#3)が動作する。更に具体的に述べるならば、ゲストOS310-0〜310-3は、それぞれ仮想計算機30-0〜30-3にロードされて、当該仮想計算機30-0〜30-4内の仮想CPUによって実行される。この仮想CPUは、CPU110を割り当てることによって実現される。ゲストOS310-0〜310-3には、それぞれID(ゲストOSID)0〜3が割り当てられている。本実施形態では、ゲストOS310-0〜310-3のうちの2つ以上のゲストOSは、サーバ/クライアント関係にあるように設定されるものとする。
VMM20は、ゲストOSインターフェイス部201、ゲストOS依存関係テーブル202、ゲストOS依存関係作成モジュール203、CPU割り当てテーブル204、ゲストOSスケジューラ205及びディスパッチャ206を含む。
ゲストOSインターフェイス部201は、VMM20が提供する種々のサービスを利用するためのゲストOS310-0〜310-4からの要求を、当該VMM20に通知するのに用いられる、いわゆるシステムコール機構である。ゲストOS310-0〜310-4は、ゲストOSインターフェイス部201が提供するインターフェイスをシステムコールによって利用することにより、VMM20に種々のサービスを要求することができる。そこで、ゲストOSインターフェイス部201が提供するインターフェイスを、HVC(HypervisorCall)と呼ぶこともある。HVCはVMM20がゲストOSに対して行うサービスの種類だけ用意される。本実施形態では特に、第1のHVC(サーバ/クライアント関係通知インターフェイス)が用意される。
第1のHVCは、例えば
HVC_register_server_guestOS()
のような、インターフェイス関数を用いて実現される。括弧内には引数が設定される。
第1のHVCは、クライアントとして機能するゲストOS(以下、クライアントゲストOSと称する)から処理が依頼されるサーバとして機能するゲストOS(以下、サーバゲストOSと称する)が存在する場合に、その関係を、当該クライアントゲストOSが予めVMM20に通知するためのインターフェイスである。第1のHVCの引数により、サーバゲストOSを示すIDが指定される。
例えば、ゲストOS310-0(#0)がクライアントゲストOSであり、当該ゲストOS310-0(#0)がゲストOS310-2(#2)をサーバゲストOSとして指定する場合には、
HVC_register_server_guestOS(2)
のような第1のHVCを呼び出せば(コールすれば)よい。ゲストOS依存関係作成モジュール203はこの第1のHVCを受けることにより、呼び出し元のゲストOS310-0(#0)が「クライアント(クライアントゲストOS)」であり、引数で指定されたゲストOS310-2(#2)が「サーバ(サーバゲストOS)」として位置付けられていること、つまりゲストOS310-0(#0)及び310-2(#2)の間のサーバ/クライアント関係を認識する。この認識結果は、ゲストOS依存関係テーブル202に登録される。
ゲストOSインターフェイス部201は、第1のHVCに基づいてゲストOS依存関係テーブル202に登録された内容を、対応するサーバ/クライアント関係が解消された際にキャンセルするのに用いられるインターフェイスも有する。しかし、このインターフェイスは第1のHVCと同様のHVCで容易に実現できるので、その詳細については省略する。
ゲストOS依存関係テーブル202は、VMM20によって管理される(仮想計算機上で動作する)各ゲストOS相互の依存関係、特にサーバ/クライアント関係を示す情報を格納する関係情報格納手段として用いられる。ゲストOS依存関係テーブル202は、VMM20によって管理される全てのゲストOSの各々に対応付けられるエントリを有する。ゲストOS依存関係テーブル202は、ハードウェア11に含まれているメモリの一部の領域に格納される。
図3は、ゲストOS依存関係テーブル202の第1のデータ構造の例を示す。ゲストOS依存関係テーブル202の各エントリは、ゲストOSIDフィールド202aと、サーバゲストOSIDフィールド202bと、サーバ/クライアントグループIDフィールド202cとの組を含む。
ゲストOSIDフィールド202aは、ゲストOSのIDを例えば予め登録するのに用いられる。サーバゲストOSIDフィールド202bは、当該フィールド202bと同一の組に属するゲストOSIDフィールド202aの示すゲストOSによって呼び出された第1のHVCによって通知されるサーバゲストOSのIDを登録するのに用いられる。サーバ/クライアントグループIDフィールド202cは、第1のHVCによって通知されるサーバ/クライアントの関係を持つゲストOSのグループ(以下、サーバ/クライアントグループと称する)を識別するためのサーバ/クライアントグループIDを登録するのに用いられる。
つまりゲストOS依存関係テーブル202は、VMM20によって管理される全てのゲストOSのうち、クライアントとして機能するゲストOSについて、当該ゲストOS(クライアントゲストOS)に対してサーバの関係にあるサーバゲストOSのIDと、これらサーバ/クライアントの関係にあるゲストOSが属するサーバ/クライアントグループのIDとを登録するのに用いられる。また、ゲストOS依存関係テーブル202は、サーバとして機能するゲストOSについて、当該ゲストOS(サーバゲストOS)のIDと、当該ゲストOSが属するサーバ/クライアントグループのIDとを登録するのに用いられる。
図3のゲストOS依存関係テーブル202の例では、IDが0〜3のゲストOS310-0〜310-3のうち、IDが0〜2のゲストOS310-0〜310-2が、同一のサーバ/クライアントグループに属し、そのグループのサーバ/クライアントグループIDが0であることが示されている。また図3のゲストOS依存関係テーブル202の例では、同一のサーバ/クライアントグループ内で、ゲストOS310-2がサーバとして機能し、ゲストOS310-0及び310-1がクライアントとして機能することも示されている。また、図3のゲストOS依存関係テーブル202の例では、ゲストOS310-2がサーバとして機能することが、ゲストOS310-0及び310-1の各々が呼び出した第1のHVCによって通知されたことも示されている。
ゲストOS依存関係作成モジュール203は、第1のHVCに基づいてゲストOS依存関係テーブル202のエントリ情報を生成して、当該エントリ情報をゲストOS依存関係テーブル202に登録する。つまりゲストOS依存関係作成モジュール203は、ゲストOS間の依存関係(特にサーバ/クライアント関係)を示す情報を作成する関係情報作成手段として機能する。
CPU割り当てテーブル204は、VMM20によって管理される全てのゲストOSの各々に対応付けられるエントリを有する。CPU割り当てテーブル204は、ハードウェア11に含まれているメモリの一部の領域に格納される。
図4はCPU割り当てテーブル204のデータ構造の例を示す。ゲストOS依存関係テーブル202の各エントリは、ゲストOSIDフィールド204aと、CPU割り当て比率初期値フィールド(以下、初期値フィールドと略称する)204bと、CPU利用率フィールド204cと、CPU割り当て比率調整値フィールド(以下、調整値フィールドと略称する)204dとの組を含む。
ゲストOSIDフィールド204aは、ゲストOSのIDを例えば予め登録するのに用いられる。初期値フィールド204bは、当該フィールド204bと同一の組に属するゲストOSIDフィールド204aの示すゲストOSにCPU110が割り当てられる時間(以下、CPU時間と称する)の比率(CPU割り当て比率)の初期値(初期CPU割り当て比率)Ri(%)を登録するのに用いられる。
CPU利用率フィールド204cは、当該フィールド204cと同一の組に属するゲストOSIDフィールド204aの示すゲストOSに割り当てられているCPU110の利用率(以下、CPU利用率と称する)を登録するのに用いられる。調整値フィールド204dは、CPU割り当て比率の調整後の値を示す調整値(調整CPU割り当て比率)Ra(%)を登録するのに用いられる。
CPU利用率フィールド204cに登録されるCPU利用率とは、ゲストOSに割り当てられているCPU時間のうち当該ゲストOSが実際に使用している時間の割合を示す。例えば、CPU割り当て比率が20%のゲストOSが、実際には10%に相当する時間しかCPU110を使用していない場合には、当該ゲストOSのCPU使用率は50%となり、割り当てられたCPU時間の半分しか使用していないことを示す。
本実施形態において、ゲストOS310-0〜310-3は、当該ゲストOSに割り当てられていたCPU時間の途中で実行すべき処理がなくなった場合、その段階で、CPU110を開放して(つまり手放して)VMM20に返す。具体的には、該当するゲストOSは、例えば処理がなくなった際に実行されるアイドルループの処理の中で、CPU110をVMM20に返すための専用のHVCをコールする。VMM20のゲストOSインターフェイス部201には、このようなHVCが用意されている。このHVCが呼び出されると、呼び出し元のゲストOSに対応付けられたCPU割り当てテーブル204のエントリのCPU利用率フィールド204cに登録されているCPU利用率が、ゲストOSスケジューラ205のCPU割り当てテーブル管理部205aによって更新される。上述の例であれば、CPU利用率が50%に更新される。このようにして、各ゲストOSの最新のCPU利用率がCPU割り当てテーブル204に保持される。つまりCPU割り当てテーブル管理部205aは、各ゲストOSのCPU利用率をCPU割り当てテーブル204を用いて管理する管理手段として機能する。
またゲストOS310-0〜310-3は、当該ゲストOSに割り当てられていたCPU時間が経過したにも拘わらずに実行すべき処理が残っていても、その段階で、CPU110をVMM20に返す。つまり、ゲストOS310-0〜310-3は、当該ゲストOSに割り当てられていたCPU時間を超えてCPU110を使用することはできない。この場合、CPU使用率は100%となる。
本実施形態では、ゲストOS310-0〜310-3に割り当てられていたCPU時間を全て利用した際に、CPU110をゲストOS310-0〜310-3からVMM20に返すための専用のHVCもゲストOSインターフェイス部201に用意されている。また、ゲストOS310-0〜310-3からVMM20にCPU110を返す際に、CPU利用率自体を当該ゲストOSからVMM20に通知するのに用いられるHVCがゲストOSインターフェイス部201に用意されていても構わない。この他に、予め定められた周期で、ゲストOS310-0〜310-3からVMM20にその周期における例えば平均のCPU利用率が専用のHVCを用いて通知されてもよい。この周期は、スケジュール周期よりも長い周期に設定される。
図4のCPU割り当てテーブル204の例では、IDが0〜3のゲストOS310-0〜310-3のうち、ゲストOS310-0〜310-2にはそれぞれCPU割り当て比率の初期値として30%が割り当てられ、ゲストOS310-3にはCPU割り当て比率の初期値として10%が割り当てられていることが示されている。また図4のCPU割り当てテーブル204の例では、CPU割り当て比率の調整値は未登録であり、CPU割り当て比率は調整されていない。
ゲストOSスケジューラ205は、適切なタイミングで起動される。本実施形態において、適切なタイミングとは、一定周期である。ゲストOSスケジューラ205は、VMM20が管理する全てのゲストOS(ここではゲストOS310-0〜310-3)の各々にどの程度の時間の割合でCPU110を割り当てるかを、ゲストOS依存関係テーブル202によって示されるサーバ/クライアントの関係及びCPU割り当てテーブル204によって示されるサーバゲストOSのCPU利用率等に基づいて決定して、CPU割り当てテーブル204を更新する。ゲストOSスケジューラ205は、CPU割り当てテーブル管理部205a、判定部205b、クライアントゲストOS探索部205c、サーバゲストOSスケジュール部205d及びクライアントゲストOSスケジュール部205eを含む。これら各部の機能については後述する。
ディスパッチャ206は、CPU割り当てテーブル204によって示されるCPU割り当て比率に基づいて、各ゲストOSに実際にCPU110を割り当てるディスパッチ処理を行う。本実施形態では、予め定められた各スケジュール周期Tを、CPU割り当てテーブル204によって示されるゲストOS310-0(#0)〜310-3(#3)のCPU割り当て比率で分割して、その分割された時間だけCPU110を対応するゲストOS310-0(#0)〜310-3(#3)に割り当てる。図4に示されるCPU割り当てテーブル204の例では、ゲストOS310-0(#0),310-1(#1),310-2(#2)及び310-3(#3)には、それぞれ、0.3T,0.3T,0.3T,0.1TだけCPU110が割り当てられる。
<サーバ/クライアントグループ分け処理>
次に、本実施形態の動作について、VMM20のゲストOS依存関係作成モジュール203によって実行されるサーバ/クライアントグループ分け処理(以下、グループ分け処理と略称する)を例に説明する。
仮想計算機システム1には、複数のサーバ/クライアントグループが存在する可能性がある。そこでゲストOS依存関係作成モジュール203は、VMM20が管理する全てのゲストOSをサーバ/クライアントグループにグループ分けするためのグループ分け処理を、ゲストOS依存関係テーブル202に基づいて実行する。このグループ分け処理が実行されるまでは、ゲストOS依存関係テーブル202の各エントリのサーバ/クライアントグループIDフィールド202cには、有効なサーバ/クライアントグループIDは登録されない。
グループ分け処理は、ゲストOS依存関係テーブル202のサーバゲストOSIDフィールド202bの内容(つまりサーバゲストOSのID)が同一のエントリの群を、ゲストOS依存関係作成モジュール203が検出することにより行われる。ゲストOS依存関係作成モジュール203は、検出されたエントリの群の各サーバ/クライアントグループIDフィールド202cに、同一のサーバ/クライアントグループに属すことを示すために、同一のサーバ/クライアントグループIDを登録する。
またゲストOS依存関係作成モジュール203は、検出されたエントリの群のサーバゲストOSIDフィールド202bの内容に一致するゲストOSIDが登録されているゲストOSIDフィールド202aを含むエントリのサーバ/クライアントグループIDフィールド202cにも、同じサーバ/クライアントグループIDを登録する。これにより、図3のゲストOS依存関係テーブル202の例であれば、ゲストOSIDフィールド202aの内容が0〜2の3つのエントリの各サーバ/クライアントグループIDフィールド202cに、同一のサーバ/クライアントグループID(ここでは0)が登録される。
またゲストOS依存関係作成モジュール203は、グループ分け処理の最後で、サーバ/クライアントグループ(を示すサーバ/クライアントグループID)毎に、当該グループに属するゲストOSの依存関係を示すツリー構造(ゲストOS依存関係ツリー構造)のデータを作成する。
図3のゲストOS依存関係テーブル202の例では、サーバ/クライアントグループIDが0のサーバ/クライアントグループのゲストOS依存関係ツリー構造のデータが作成される。図5は、このゲストOS依存関係ツリー構造の例を示す。図5の例では、図の下方にクライアントゲストOS(クライアントノード)310-0(#0)及び310-1(#1)が配置され、その上方に、当該クライアントゲストOS310-0(#0)及び310-1(#1)に対するサーバゲストOS(サーバノード)310-2(#2)が配置されている。図5において、矢印の始点はクライアントゲストOS、終点はサーバゲストOSを示す。
なお、実際には、図2よりも複雑なサーバ/クライアントの関係があり得る。このようなサーバ/クライアントの関係を表すゲストOS依存関係ツリー構造の例を図6に示す。図6(a)に示すゲストOS依存関係ツリー構造は、ゲストOS310-2(#2)とゲストOS310-3(#3)とが互いにサーバ/クライアントの関係になっていることを表している。
図6(b)に示すゲストOS依存関係ツリー構造は、ゲストOS310-2(#2)が、ゲストOS310-0(#0)及びOS310-1(#1)のサーバであると同時に、ゲストOS310-3(#3)をサーバとしていること、つまり自身をゲストOS310-3(#3)のクライアントとしていることを表している。図6(c)に示すゲストOS依存関係ツリー構造は、ゲストOS310-1(#1),310-2(#2)及び310-3(#3)が互いにサーバク/ライアントの関係になっていることを表している。また、図6(d)及び(e)のような関係もあり得る。
このように、複数のゲストOSの間には種々の依存関係が発生し得る。しかし、ここでは、クライアントゲストOSとサーバゲストOSとを単純に次のように定義する。
(1)サーバとなっていないクライアントであるゲストOSを「クライアントゲストOS」と定義する。
(2)他のゲストOSのサーバとして処理を行うゲストOSを「サーバゲストOS」として定義する。つまり、あるゲストOSに対してはクライアントであったとしても、他のゲストOSのサーバとして処理を行うゲストOSは、「サーバゲストOS」である。
これらの定義によれば、図6(a)乃至(e)の例では、それぞれ枠60a乃至60e内に配置されているゲストOSが「クライアントゲストOS」である。また、枠60a乃至60e外に配置されているゲストOS、つまりサーバ/クライアントグループ内の「クライアントゲストOS」以外のゲストOSが、「サーバゲストOS」である。
このように、本実施形態では、サーバとクライアントとを兼ねているゲストOSは「サーバ(サーバゲストOS)」として定義される。そして本実施形態では、後述するように、VMM20のゲストOSスケジューラ205が、「クライアントゲストOS」に本来割り当てられるCPU時間の一部を「サーバゲストOS」に割り当てるように制御している。しかしながら、「サーバ」と「クライアント」を兼ねているゲストOSに関しても、VMMがそのゲストOSに割り当てられるCPU時間の一部を、より上位の「サーバゲストOS」に再割り当てするようにすることは可能である。
ここで、図1の仮想計算機システム1において、図5に示されるような単純なサーバ/クライアント関係のみが存在する場合を想定する。つまり、仮想計算機システム1に、サーバとクライアントとを兼ねているゲストOSが存在しないものとする。このような場合、図3に示されるデータ構造のゲストOS依存関係テーブル202から、簡単にサーバゲストOSとクライアントゲストOSとを区別することができ、必ずしもゲストOS依存関係ツリー構造のデータを作成する必要はない。
次に、図1の仮想計算機システム1において、図6に示されるような複雑なサーバ/クライアント関係が存在する場合を想定する。つまり、仮想計算機システム1に、サーバとクライアントとを兼ねているゲストOSが存在するものとする。このような場合、図3に示されるデータ構造のゲストOS依存関係テーブル202から、上述の定義によって分類される「クライアントゲストOS」及び「サーバゲストOS」とを簡単に区別することは困難である。この区別を容易にするためには、ゲストOS依存関係ツリー構造のデータを作成することが好ましい。しかし、「クライアントゲストOS」及び「サーバゲストOS」とを区別する必要がある都度、ゲストOS依存関係ツリー構造のデータを作成または参照(当該データが記憶部に格納される構成を適用する場合)することは無駄である。もし、作成されたゲストOS依存関係ツリー構造のデータから区別される「クライアントゲストOS」及び「サーバゲストOS」の情報をゲストOS依存関係テーブル202に登録するならば、このような無駄を解消することが可能となる。
図7はゲストOS依存関係テーブル202の第2のデータ構造の例を示す。図7に示されるゲストOS依存関係テーブル202の特徴(つまり第2のデータ構造の特徴)は、上述の定義によって分類される「クライアントゲストOS」及び「サーバゲストOS」の区別を示すためのクライアントゲストOSIDフィールド202dが追加されている点にある。
図7のゲストOS依存関係テーブル202の例では、各エントリのクライアントゲストOSIDフィールド202dに「0」または「1」が登録される。クライアントゲストOSIDフィールド202dに「1」が登録されている場合、当該フィールド202dと同一の組に属するゲストOSIDフィールド202aの示すゲストOSが「クライアントゲストOS」であることを示す。これに対し、クライアントゲストOSIDフィールド202dに「0」が登録されている場合、当該フィールド202dと同一の組に属するゲストOSIDフィールド202aの示すゲストOSが「サーバゲストOS」であることを示す。以下の説明では、図7に示される第2のデータ構造のCPU割り当てテーブル204がVMM20に含まれているものとする。
ここで、図6(e)のように、1つのクライアントゲストOSに対して2つ(複数)のサーバゲストOSが存在する場合も考えられる。このような場合には、図7(b)に示す通り、ゲストOS依存関係テーブル202における1つのゲストOS IDの行に対して、複数の「サーバゲストOS ID」、「サーバ/クライアントグループID」、「クライアントゲストOS ID」の行を登録するようにする。以降では、説明を簡単にするため、このようなケースを特別に説明しないが、同様に扱うことが可能である。例えば、後述する図8及び図11に示すフローチャートで図6に示す他のケース同様、処理することができる。
なお、グループ分け処理は、例えば、CPU割り当てテーブル204内のエントリのサーバゲストOSIDフィールド202bにサーバゲストOSのIDが新規に登録される場合と、当該フィールド202bの内容が更新される場合とに実行されればよい。
<CPU時間再割り当て処理>
次に、各ゲストOSに割り当てるCPU割り当て比率を調整するためのCPU時間再割り当て処理(以下、単にCPU時間割り当て処理と称する)について、図8のフローチャートを参照して説明する。この処理は、VMM20のゲストOSスケジューラ205によって、例えば一定周期で繰り返し実行される。本実施形態において、この周期は1秒である。
仮想計算機システム1には、複数のサーバ/クライアントグループが存在する可能性がある。もし、複数のサーバ/クライアントグループが存在する場合、CPU時間割り当て処理は、サーバ/クライアントグループ毎に順に実行される。図8のフローチャートには、1つのサーバ/クライアントグループに対する処理の手順が示されている。
まずゲストOSスケジューラ205は、ゲストOS依存関係テーブル202によって示されている、現在処理の対象となっているサーバ/クライアントグループ(以下、対象サーバ/クライアントグループと称する)内の全てのサーバゲストOSの中から、未処理(未選択)のサーバゲストOSを1つ、サーバゲストOSiとして選択する(ステップ801,802)。するとゲストOSスケジューラ205の判定部205bは、選択されたサーバゲストOSiのIDが登録されているCPU割り当てテーブル204のエントリのCPU利用率フィールド204cによって示される当該サーバゲストOSiのCPU利用率が基準使用率以上であるかを判定する(ステップ803)。本実施形態において、基準使用率はCPU利用率の最大値に一致する100%である。この場合、判定部205bはステップ803において、サーバゲストOSiのCPU利用率が100%であるかを判定することになる。
もし、サーバゲストOSiのCPU利用率が100%であるならば(ステップ803のYes)、ゲストOSスケジューラ205はステップ804に進む。ステップ804は、ステップ804a〜804cから構成される。まずステップ804aにおいてゲストOSスケジューラ205のクライアントゲストOS探索部205cは、CPU割り当てテーブル204を参照することにより、対象サーバ/クライアントグループ内の全てのクライアントゲストOSのうち、現在のCPU割り当て比率Rc%が閾値(基準割り当て比率)R0%を超えているクライアントゲストOSを探す。
次のステップ804bにおいてゲストOSスケジューラ205のクライアントゲストOSスケジュール部205eは、探し求められたクライアントゲストOSに現在割り当てられているCPU時間から、調整用のCPU割り当て比率A%に相当する時間を減らす。そして更に次のステップ804cにおいてゲストOSスケジューラ205のサーバゲストOSスケジュール部205dは、減らされた時間だけ、サーバゲストOSiに割り当てるCPU時間を増やす。
ステップ804(804a〜804c)の詳細は次の通りである。まずクライアントゲストOS探索部205cはCPU割り当てテーブル204を、対象サーバ/クライアントグループ内の各クライアントゲストOSのIDが登録されているCPU割り当てテーブル204のエントリの初期値フィールド204b及び調整値フィールド204dを参照して、現在のCPU割り当て比率Rc%を算出する。もし、調整値フィールド204dに有効な調整値が登録されていないならば、初期値フィールド204bに登録されている初期値(初期CPU割り当て比率)Ri%が現在のCPU割り当て比率Rc%(Rc=Ri)として求められる。これに対し、調整値フィールド204dに有効な調整値Ra%が登録されているならば、このRa%が現在のCPU割り当て比率Rc%(Rc=Ra)として求められる。これによりクライアントゲストOS探索部205cは、現在のCPU割り当て比率Rc%が閾値R0%を超えているクライアントゲストOSを探す(ステップ804a)。
クライアントゲストOSスケジュール部205eは、現在のCPU割り当て比率Rc%が閾値R0%を超えているクライアントゲストOSについて、当該現在のCPU割り当て比率がRc%からA%だけ減少されるように、対応するエントリの調整値フィールド204dの調整値を更新する(ステップ804b)。具体的には、調整値フィールド204dに有効な調整値が登録されていないならば、調整値Ra%として(Ri−A)%が登録される。これに対し、調整値フィールド204dに有効な調整値Ra%が登録されているならば、当該調整値Ra%が(Ra−A)%に更新される。
現在のCPU割り当て比率Rc%が閾値R0%を超えているクライアントゲストOSの数がnであるものとすると、サーバゲストOSスケジュール部205dは、サーバゲストOSiに割り当てられるCPU時間を、n・A%に相当する時間だけ増やす(ステップ804c)。そのためサーバゲストOSスケジュール部205dは、サーバゲストOSiのIDが登録されているCPU割り当てテーブル204のエントリの初期値フィールド204b及び/または調整値フィールド204dの内容に基づいて、当該調整値フィールド204dの調整値を更新する。具体的には、調整値フィールド204dに有効な調整値が登録されていないならば、調整値Ra%として(Ri+n・A)%が登録される。これに対し、調整値フィールド204dに有効な調整値Ra%が登録されているならば、当該調整値Ra%が(Ra+n・A)%に更新される。
各ゲストOSのCPU割り当て比率の初期値Ri(%)、閾値R0及び調整用のCPU割り当て比率A%はシステムパラメータであり、例えば専用のHVCで事前に登録されるものとする。また、これらのパラメータが、ユーザ(システム管理者)の操作に基づき、ユーザ端末3から設定される構成であっても構わない。また、仮想計算機システム1を実現する物理計算機10にVMM20の制御のためのシステムコンソール(コンソール端末)を接続し、当該コンソールからVMM20に対して上述のパラメータを直接指定することも可能である。また、システムコンフィグレーションを記述したスクリプトファイルをVMM20に読ませることにより、上述のパラメータを当該VMM20に設定することも可能である。また、R0及びAが、サーバ/クライアントグループ毎に設定されても構わない。本実施形態では、R0及びAの値として、それぞれ5(%)及び1(%)が設定されている場合を想定している。
上述のステップ804の処理により、現在(つまりステップ805の開始時)のCPU割り当て比率Rc%がR0%を超えている各クライアントゲストOSから、サーバゲストOSiに対してA%ずつCPU割り当て時間が与えられることになる。ゲストOSスケジューラ205は、ステップ804を実行し終えると、ステップ801に戻る。
CPU割り当てテーブル204及びゲストOS依存関係テーブル202が、それぞれ図4及び図7で示される状態にあり、且つゲストOS310-0(#0),310-1(#1)及び310-2(#2)が全てCPU利用率100%の状態で、ステップ処理804が行われた結果を、図9のCPU割り当てテーブル204に示す。つまり図4に示されるCPU割り当てテーブル204は図9に示されるように更新される。
図4に示されるCPU割り当てテーブル204と、図9に示されるCPU割り当てテーブル204とを比較すれば明らかなように、ゲストOS310-0(#0)及び310-1(#1)からそれぞれCPU割り当て比率1%に相当するCPU時間がゲストOS310-2(#2)に移動される。これによりゲストOS310-0(#0),310-1(#1)及び310-2(#2)の最新のCPU割り当て比率Rc(つまり調整CPU割り当て比率Ra)は、それぞれ29%、29%、32%に変更される。
このようなCPU割り当て比率を調整するためのCPU時間割り当て処理が、サーバゲストOSiとしてのゲストOS310-2(#2))のCPU利用率が100%未満となるまで一定周期で繰り返される。但し本実施形態では、最大に調整したとしてもゲストOS310-0(#0)及び310-1(#1)のCPU割り当て比率Rc(調整CPU割り当て比率Ra)がR0%以下になることはない。つまり、ゲストOS310-0(#0)及び310-1(#1)のCPU割り当て比率が5%より低くなることはなく、したがってゲストOS310-2(#2)のCPU割り当て比率が80%より高くなることもない。
このように本実施形態においては、サーバゲストOS310-2(#2)のCPU利用率が100%である限り(ステップ803のYes)、クライアントゲストOS310-0(#0)及び310-1(#1)のCPU割り当て比率がR0(=5)%になるまで、当該サーバゲストOS310-2(#2)のCPU割り当て比率が増やされる(ステップ804)。この結果、サーバ/クライアント処理の真のボトルネックとなっているサーバゲストOS310-2(#2)の処理が促進され、システム全体(ここではIDが0のサーバ/クライアントグループ全体)の処理効率が改善される。
なお、クライアントゲストOSにおいてエラー処理が頻繁に発生した場合や、当該クライアントゲストOSに対してユーザからの処理能力以上のリクエストがある場合に、当該クライアントゲストOSに、サーバゲストOS以上にCPU時間を割り当てることが考えられる。しかし、クライアントゲストOSにより多くのCPU時間を割り当てることにより当該クライアントゲストOSの処理能力を高めると、元々負荷が高いサーバゲストOSの負荷が一層高くなって、システム全体として処理効率が低下する。しかも従来技術では、VMM20が管理している複数のゲストOSがそれぞれクライアントゲストOSまたはサーバゲストOSのいずれであるかを当該VMM20が認識できないため、負荷が高いクライアントゲストOSを選択して、この選択したクライアントゲストOSにより多くのCPU時間を割り当てることすらできなかった。
ここで、上述の例のように、サーバ/クライアントグループ内の全てのゲストOS310-0〜310-2のCPU利用率が100%となり、いずれもフル稼働している状況を想定する。このような状況では、余分なCPU時間は存在しないため、従来技術であれば、VMM20は、予め指定されているCPU割り当て比率に従ってCPU時間を割り当てることしかできなかった
さて、ステップ804の繰り返しでサーバゲストOSi(ここではゲストOS310-2(#2))のCPU割り当て比率が段階的に増加されたことにより、当該ゲストOSiの負荷が下がって、当該ゲストOSiのCPU利用率が100%より低くなったものとする(ステップ803のNo)。つまり、サーバゲストOSiのアイドル時間が生じるようになったものとする。この場合、ゲストOSスケジューラ205の判定部205bは、サーバゲストOSiの現在のCPU割り当て比率Rcが初期CPU割り当て比率Riよりも高いか、つまり現在のCPU割り当て比率Rcが調整後のものであるかを判定する(ステップ805)。
もし、ステップ805の判定がYesであるならば、ゲストOSスケジューラ205はステップ806に進む。ステップ806は、ステップ806a〜806cから構成される。まずステップ806aにおいてゲストOSスケジューラ205のクライアントゲストOS探索部205cは、CPU割り当てテーブル204を参照することにより、対象サーバ/クライアントグループ内の全てのクライアントゲストOSのうち、現在のCPU割り当て比率Rcが初期CPU割り当て比率Riよりも低いクライアントゲストOSを探す。ここで、探し求められたクライアントゲストOSの数がnであるものとする。
次のステップ806bにおいてゲストOSスケジューラ205のサーバゲストOSスケジュール部205dは、探し求められた各クライアントゲストOSにサーバゲストOSiからA%に相当するCPU時間を返却するために、当該サーバゲストOSiに割り当てられるCPU時間を、n・A%に相当する時間だけ減らす。このステップ806bの処理は、サーバゲストOSiの現在のCPU割り当て比率がRc%からn・A%だけ減少されるように、CPU割り当てテーブル204の対応するエントリの調整値フィールド204dの調整値を更新することによって実現される。
更に次のステップ806cにおいてゲストOSスケジューラ205のクライアントゲストOSスケジュール部205eは、探し求められた各クライアントゲストOSに現在割り当てられているCPU時間に、サーバゲストOSiから返却された、CPU割り当て比率A%に相当する時間を追加する。このステップ806bの処理は、探し求められた各クライアントゲストOSの現在のCPU割り当て比率がRc%からA%だけ増加されるように、CPU割り当てテーブル204の対応するエントリの調整値フィールド204dの調整値を更新することによって実現される。
ゲストOSスケジューラ205は、ステップ806を実行し終えると、ステップ801に戻る。
これに対し、ステップ805の判定がNoの場合には、ゲストOSスケジューラ205はステップ806をスキップしてステップ801に戻る。
一方、対象サーバ/クライアントグループ内の全てのサーバゲストOSについて処理し終えたならば(ステップ801のNo)、ゲストOSスケジューラ205は、図8のフローチャートで示される処理を終了する。この後、ディスパッチャ206は、図8の処理で作成されたCPU割り当てテーブル204のCPU割り当て比率調整値に基づいて、対象サーバ/クライアントグループにCPU時間を割り当てる。
ゲストOSスケジューラ205は図8の処理を実行し終えると、対象サーバ/クライアントグループについての1回分のCPU時間割り当て処理を終了する。前述したたように、このCPU時間割り当て処理は、一定周期で繰り返し実行される。
[変形例]
次に上記実施形態の変形例について説明する。この変形例の主要な特徴は、CPU割り当てテーブル204の各エントリに、サーバ関係の処理の実行中であるかを示すサーバ関係処理実行中フラグフィールド(以下、実行中フラグフィールドと略称する)204e(図10参照)が追加された点と、サーバゲストOSが「サーバ関係の処理」を行っている状態にあることをVMM20に通知する点にある。
図10は、本変形例で適用されるCPU割り当てテーブル204のデータ構造例を示す。図10から明らかなように、CPU割り当てテーブル204の各エントリは、ゲストOSIDフィールド204a、初期値フィールド204b、CPU利用率フィールド204c及び調整値フィールド204dに加えて、実行中フラグフィールド204eを含む。実行中フラグフィールド204eは、対応するゲストOSがサーバ関係の処理の実行中であるか否かを示すサーバ関係処理実行中フラグ(以下、実行中フラグと略称する)を保持するのに用いられる。本変形例では、サーバゲストOSがサーバ関係の処理の実行中、当該サーバゲストOSに対応付けられた実行中フラグがセットされ、サーバ関係の処理を実行し終えると当該実行中フラグがリセットされる。
さて本変形例では、サーバゲストOSがサーバ関係の処理を行っている状態にあることをVMM20に通知するのを可能とするために、VMM20のゲストOSインターフェイス部201に、第2のHVC(第1のサーバ関係処理中通知インターフェイス)及び第3のHVC(第2のサーバ関係処理中通知インターフェイス)が用意されている。
第2のHVCは、例えば
HVC_Start_server_Processing()
のような、インターフェイス関数を用いて実現される。
第3のHVCは、例えば
HVC_Stop_server_Processing()
のような、インターフェイス関数を用いて実現される。
第2のHVCは、サーバゲストOSがサーバ関係の処理の実行を開始する際に呼び出される。例えば、サーバゲストOS上で動作するアプリケーション(サーバアプリケーション)自身が第2のHVCを呼び出してもよいし、或いはサーバゲストOS自身が予め登録されているサーバプロセス(サーバ関係の処理を実行するためのプロセス)にCPU110をディスパッチする(実行する)際に、第2のHVCを呼び出してもよい。
VMM20のゲストOSスケジューラ205は、サーバゲストOSにより第2のHVCが呼び出されると、当該サーバゲストOSに対応するCPU割り当てテーブル204のエントリの実行中フラグをセットする。例えば、実行中フラグフィールド204e(図10参照)の内容が「0」から「1」に変更される。
第3のHVCは、サーバゲストOSがサーバ関係の処理を実行し終える際にコールする。例えば、サーバアプリケーション自身が第3のHVCをコールしてもよいし、或いはサーバゲストOS自身が予め登録されているサーバプロセスからCPU110を横取りする(実行をやめる)際に、第3のHVCをコールしてもよい。
VMM20のゲストOSスケジューラ205は、サーバゲストOSにより第3のHVCが呼び出されると、当該サーバゲストOSに対応するCPU割り当てテーブル204のエントリの実行中フラグをリセットする。例えば、実行中フラグフィールド204e(図10参照)の内容が「1」から「0」に変更される。
結局、図10に示されるCPU割り当てテーブル204のエントリの実行中フラグ(実行中フラグフィールド204eの内容)は、そのエントリのゲストOSIDフィールド204aによって示されるゲストOSがサーバ関係の処理を行っている状態にある間だけセット(「1」にセット)される。
<CPU時間再割り当て処理>
次に、本変形例におけるCPU時間再割り当て処理(CPU時間割り当て処理)について、上記実施形態と相違する点を中心に、図11のフローチャートを参照して説明する。なお、図11において、図8のフローチャートと等価なステップには同一参照符号を付してある。
ゲストOSスケジューラ205は、対象サーバ/クライアントグループ内の全てのサーバゲストOSの中から、未処理のサーバゲストOSを1つ、サーバゲストOSiとして選択すると(ステップ801,802)、ステップ1100に進む。このステップ1100においてゲストOSスケジューラ205の判定部205bは、サーバゲストOSiに対応するCPU割り当てテーブル204内のエントリの実行中フラグフィールド204eを参照することにより、実行中フラグがセットされているかを判定する。
判定部205bは、実行中フラグがセットされている場合だけ(ステップ1100のYes)、つまりサーバゲストOSiがサーバ関係の処理の実行中である場合だけ、前述のステップ803に進む。このステップ803において判定部205bは、サーバゲストOSiのCPU利用率が100%であるかを判定する。この判定結果に基づく処理は上記実施形態のそれ(図8のフローチャート参照)と同様であり、ステップ803の判定がYesの場合、サーバゲストOSiのCPU割り当て比率が増すように調整される。
このように本変形例においては、サーバゲストOSiの実行中フラグがセットされている間だけ、つまり当該サーバゲストOSiがサーバ関係の処理の実行中の間だけ、当該サーバゲストOSiのCPU割り当て比率を増すように調整される(但し、サーバゲストOSiのCPU利用率が100%である場合)。
これに対し、実行中フラグがリセットされている場合(ステップ1100のNo)、つまりサーバゲストOSiがサーバ関係の処理の実行中でない場合には、判定部205bは、サーバゲストOSiのCPU利用率が100%でない場合と同様に前述のステップ805に進む。このステップ805において判定部205bは、サーバゲストOSiの現在のCPU割り当て比率Rcが初期CPU割り当て比率Riよりも高いかを判定する。この判定結果に基づく処理は上記実施形態のそれ(図8のフローチャート参照)と同様である。
このように本変形例においては、サーバゲストOSiの実行中フラグがリセットされているならば、つまり当該サーバゲストOSiがサーバ関係の処理の実行中でないならば、たとえ当該サーバゲストOSiのCPU利用率が100%であっても、当該サーバゲストOSiのCPU割り当て比率を増すように調整されることはない。
本変形例によれば、サーバゲストOSiが真にサーバ関係の処理を行っている間だけ、即ちクライアントゲストOSからのリクエストを処理している間だけ、サーバゲストOSiのCPU利用率が100%であることを条件に、CPU割り当て時間が増やされる。これに対して上記実施形態では、サーバゲストOSiが、サーバ関係の処理以外の負荷によりCPU利用率が100%になっている場合にも、当該サーバゲストOSiのCPU割り当て比率を増すように調整される。このため本変形例では、上記実施形態と比較して、より正確に、サーバ関係の処理を行っているサーバゲストOSiにCPU割り当て比率を増すことができるようになる。
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、上記実施形態またはその変形例では、VMM20によって管理されるゲストOSの数が4であるが、複数のゲストOSがVMM20によって管理される構成であればよい。また、サーバ/クライアントグループの数も1つに限らない。
また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
1…仮想計算機システム、2…ネットワーク、3…ユーザ端末、10…物理計算機、11…ハードウェア、20…VMM(仮想計算機管理機構)、30-1〜30-3…仮想計算機、110…CPU、201…ゲストOSインターフェイス部、202…ゲストOS依存関係テーブル、203…ゲストOS依存関係作成モジュール、204…CPU割り当てテーブル、205…ゲストOSスケジューラ、205a…CPU割り当てテーブル管理部、205b…サーバゲストOS選択部、205c…クライアントゲストOS探索部、205d…サーバゲストOSスケジュール部、205e…クライアントゲストOSスケジュール部、206…ディスパッチャ、310-0〜310-3…ゲストOS。

Claims (7)

  1. CPUを含むハードウェアを仮想化することによって複数の仮想計算機を構築し、当該複数の仮想計算機で複数のゲストOSを時分割で実行させるための管理を行う仮想計算機管理機構において、
    前記複数のゲストOSのうちの任意のゲストOSがクライアントとして機能して、前記複数のゲストOSのうちのサーバとして機能する他のゲストOSに処理を要求する際に、処理の要求元のゲストOSがクライアントであり、処理の要求先のゲストOSがサーバであるサーバ/クライアント関係を、前記処理の要求元のゲストOSから前記仮想計算機管理機構に通知するのに用いられるサーバ/クライアント関係通知インターフェイスを含むゲストOSインターフェイス手段と、
    前記複数のゲストOSに前記CPUを時分割で割り当てるためのスケジュールを管理するスケジューラであって、前記サーバ/クライアント関係通知インターフェイスによって通知されたゲストOS間のサーバ/クライアント関係に基づいて、前記複数のゲストOSに前記CPUを割り当てる時間を、サーバとして機能するゲストOSへの割り当てが優先されるように調整するスケジューラと
    を具備することを特徴とする仮想計算機管理機構。
  2. 前記サーバ/クライアント関係通知インターフェイスによって通知されたゲストOS間のサーバ/クライアント関係を示す情報を格納するための関係情報格納手段を更に具備し、
    前記スケジューラは、前記関係情報格納手段に格納されている情報の示すゲストOS間のサーバ/クライアント関係に基づいて、前記複数のゲストOSに前記CPUを割り当てる時間を調整する
    ことを特徴とする請求項1記載の仮想計算機管理機構。
  3. 前記スケジューラは、
    前記複数のゲストOSの各々が前記割り当てられた時間に前記CPUを使用している割合を示すCPU利用率を管理する管理手段と、
    サーバとして機能するゲストOSの前記CPU使用率が予め定められた基準使用率以上である場合、当該サーバとして機能するゲストOSに、当該サーバとして機能するゲストOSを含むサーバ/クライアントの関係にあるゲストOSのグループ内で、より多くの時間前記CPUを割り当てるサーバゲストOSスケジュール手段と
    を含むことを特徴とする請求項1または2に記載の仮想計算機管理機構。
  4. 前記スケジューラは、
    前記複数のゲストOSの中から、前記CPUが割り当てられる時間の比率が基準割り当て比率を超えているクライアントとして機能するゲストOSを探す探索手段と、
    前記探索手段によって探し求められたクライアントとして機能するゲストOSに前記CPUが割り当てられるべき時間を減らすクライアントゲストOSスケジュール手段とを更に含み、
    前記サーバゲストOSスケジュール手段は、前記クライアントゲストOSスケジュール手段によって減らされる時間だけ、当該時間が減らされる前記クライアントとして機能するゲストOSを含む前記ゲストOSのグループ内で、前記サーバとして機能するゲストOSに前記CPUを割り当てる時間を増やす
    ことを特徴とする請求項3記載の仮想計算機管理機構。
  5. 前記基準使用率が100%であり、
    前記サーバゲストOSスケジュール手段は、前記サーバとして機能するゲストOSの前記CPU使用率が100%よりも低くなるまで、前記CPUを割り当てる時間を増やす動作を繰り返し、
    前記クライアントゲストOSスケジュール手段は、前記サーバとして機能するゲストOSの前記CPU使用率が100%よりも低くなるまで、前記CPUを割り当てる時間を減らす動作を繰り返す
    ことを特徴とする請求項4記載の仮想計算機管理機構。
  6. 前記ゲストOSインターフェイス手段は、前記サーバとして機能するゲストOSが、サーバに関係する処理を行っている状態にあることを、当該サーバとして機能するゲストOSから前記仮想計算機管理機構に通知するのに用いられるサーバ関係処理中通知インターフェイスを更に含み、
    前記サーバゲストOSスケジュール手段は、サーバに関係する処理を行っている状態にあることが前記サーバ関係処理中通知インターフェイスによって通知された、前記サーバとして機能するゲストOSに前記CPUを優先的に割り当てることを特徴とする請求項3乃至5のいずれかに記載の仮想計算機管理機構。
  7. CPUを含むハードウェアを仮想化することによって複数の仮想計算機を構築し、当該複数の仮想計算機で複数のゲストOSを時分割で実行させるための管理を行う、ゲストOSインターフェイス手段、関係情報格納手段、関係情報作成手段、及びスケジューラを含む仮想計算機管理機構を有する仮想計算機システムにおけるCPU時間割り当て制御方法であって、
    前記複数のゲストOSのうちの任意のゲストOSが、クライアントとして機能して、前記複数のゲストOSのうちのサーバとして機能する他のゲストOSに処理を要求する際に、処理の要求元のゲストOSがクライアントであり、処理の要求先のゲストOSがサーバであるサーバ/クライアント関係を、前記サーバ/クライアント関係通知インターフェイスによって前記仮想計算機管理機構に通知するステップと、
    前記通知されたゲストOS間のサーバ/クライアント関係を示す情報を前記関係情報作成手段が前記関係情報格納手段に格納するステップと、
    前記関係情報格納手段に格納されている情報の示すゲストOS間のサーバ/クライアント関係に基づいて、前記複数のゲストOSに前記CPUを割り当てる時間を、サーバとして機能するゲストOSへの割り当てが優先されるように前記スケジューラが調整するステップと
    を具備することを特徴とする仮想計算機システムにおけるCPU時間割り当て制御方法。
JP2009063275A 2009-03-16 2009-03-16 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法 Expired - Fee Related JP4862056B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009063275A JP4862056B2 (ja) 2009-03-16 2009-03-16 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009063275A JP4862056B2 (ja) 2009-03-16 2009-03-16 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法

Publications (2)

Publication Number Publication Date
JP2010218151A JP2010218151A (ja) 2010-09-30
JP4862056B2 true JP4862056B2 (ja) 2012-01-25

Family

ID=42976946

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009063275A Expired - Fee Related JP4862056B2 (ja) 2009-03-16 2009-03-16 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法

Country Status (1)

Country Link
JP (1) JP4862056B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US9104508B2 (en) 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
JP2013214146A (ja) * 2012-03-30 2013-10-17 Toshiba Corp 仮想計算機システム、ハイパーバイザ及び仮想計算機システム管理方法
CN109032029B (zh) * 2018-08-14 2020-12-08 北京东土科技股份有限公司 工业服务器对外通信方法、系统、装置及工业服务器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04307631A (ja) * 1991-04-04 1992-10-29 Nec Corp 仮想計算機システムにおけるcpu配分制御方式
JP2682770B2 (ja) * 1992-05-15 1997-11-26 富士通株式会社 仮想計算機システムのcpu制御方式
JP3543441B2 (ja) * 1995-09-19 2004-07-14 株式会社日立製作所 大域的なリソースキャッピング方法
JP2007109250A (ja) * 1998-01-09 2007-04-26 Hitachi Ltd Cpu能力調整方法
JP2002182560A (ja) * 2000-12-12 2002-06-26 Hitachi Ltd 暗号処理機能を備えた情報サーバ装置
JP4324975B2 (ja) * 2006-09-27 2009-09-02 日本電気株式会社 負荷低減システム、計算機、及び負荷低減方法
JP4358224B2 (ja) * 2006-12-27 2009-11-04 株式会社東芝 ゲストosスケジューリング方法及び仮想計算機モニタ
JP4715758B2 (ja) * 2007-01-30 2011-07-06 株式会社日立製作所 仮想計算機システムのプロセッサキャッピング方法
JP5011191B2 (ja) * 2007-04-02 2012-08-29 株式会社日立製作所 計算機システム及び通信制御方法

Also Published As

Publication number Publication date
JP2010218151A (ja) 2010-09-30

Similar Documents

Publication Publication Date Title
US10003500B2 (en) Systems and methods for resource sharing between two resource allocation systems
CN104008013B (zh) 一种核资源分配方法、装置及众核系统
US7810099B2 (en) Optimizing workflow execution against a heterogeneous grid computing topology
US20160306680A1 (en) Thread creation method, service request processing method, and related device
US8725912B2 (en) Dynamic balancing of IO resources on NUMA platforms
JP4569846B2 (ja) I/oノード制御方式及び方法
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
WO2012066640A1 (ja) 計算機システム、マイグレーション方法及び管理サーバ
US20100131956A1 (en) Methods and systems for managing program-level parallelism
US20080229319A1 (en) Global Resource Allocation Control
WO2011148563A1 (ja) 情報処理システム
WO2021227999A1 (zh) 云计算服务系统和方法
US20230342191A1 (en) Task Scheduling Method and System
JP2009181578A (ja) 複数の仮想マシンに対して動的にリソースを割当てる方法及び装置
JP4862056B2 (ja) 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法
CN111338785A (zh) 资源调度方法及装置、电子设备、存储介质
WO2020108337A1 (zh) 一种cpu资源调度方法及电子设备
CN116233022A (zh) 一种作业调度方法、服务器及服务器集群
JP4211645B2 (ja) 専用プロセッサの備わった計算機システム
KR102014246B1 (ko) 리소스 통합관리를 위한 메소스 처리 장치 및 방법
CN114489978A (zh) 资源调度方法、装置、设备及存储介质
John et al. Novel backfilling technique with deadlock avoidance and migration for grid workflow scheduling
JP2013041485A (ja) 仮想計算機システムおよび資源割り当て制御方法
JP2000137688A (ja) 多重プロセッサシステムおよびデ―タ処理方法
CN117472570A (zh) 用于调度加速器资源的方法、装置、电子设备和介质

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110502

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111011

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111107

R150 Certificate of patent or registration of utility model

Ref document number: 4862056

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141111

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees