(58)【調査した分野】(Int.Cl.,DB名)
前記CPUリソース管理プログラムは、前記VM制御プログラムに対する前記CPUリソースの割り当てを含む第2種のCPUリソース定義情報を生成し、前記第1種のCPUリソース定義情報、および、前記第2種のリソース定義情報を再割り当てし、前記CPUリソース再定義情報を生成し、前記CPUリソース再定義情報、および、前記ユーザプログラムのCPUリソース使用時間を用いて前記CPUリソースの管理を行うことを特徴とする請求項1のコンピュータシステム。
前記第1種のCPUリソース定義情報は、対応する前記ユーザプログラムのプロセスの実行時間に対するCPUリソース割り当ての割合の上限であるCPUリソース上限値を含み、
前記第2種のCPUリソース定義情報は、対応する前記VM制御プログラムのプロセスの実行時間に対するCPUリソース割り当ての割合の上限であるCPUリソース上限値を含み、
前記CPUリソース管理プログラムは、前記ユーザプログラムに対して前記第1種のCPUリソース定義情報における割り当ての割合と前記第2種のCPUリソース定義情報における対応する前記VM制御プログラムの割合を乗じた値を前記CPUリソース再定義情報の内容とすることを特徴とする請求項2のコンピュータシステム。
前記CPUリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、[前記ユーザプログラムの前記CPUリソース使用時間]/[全プロセスのCPUリソース使用時間+CPUアイドル時間]が前記CPUリソース再定義情報内の当該前記ユーザプログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする請求項3のコンピュータシステム。
前記CPUリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、[前記ユーザプログラムの前記仮想マシンに対応する前記VM制御プログラムのプロセスのCPUリソース使用時間]/[全プロセスのCPUリソース使用時間+CPUアイドル時間]が前記CPUリソース再定義情報内の当該前記VM制御プログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする請求項4のコンピュータシステム。
前記CPUリソース管理プログラムは、前記VM制御プログラムに対する前記CPUリソースの割り当てを含む第2種のCPUリソース定義情報を生成し、前記第1種のCPUリソース定義情報、および、前記第2種のリソース定義情報を再割り当てし、前記CPUリソース再定義情報を生成し、前記CPUリソース再定義情報、および、前記ユーザプログラムのCPUリソース使用時間を用いて前記CPUリソースの管理を行うことを特徴とする請求項6のCPUリソース管理方法。
前記第1種のCPUリソース定義情報は、対応する前記ユーザプログラムのプロセスの実行時間に対するCPUリソース割り当ての割合の上限であるCPUリソース上限値を含み、
前記第2種のCPUリソース定義情報は、対応する前記VM制御プログラムのプロセスの実行時間に対するCPUリソース割り当ての割合の上限であるCPUリソース上限値を含み、
前記CPUリソース管理プログラムは、前記ユーザプログラムに対して前記第1種のCPUリソース定義情報における割り当ての割合と前記第2種のCPUリソース定義情報における対応する前記VM制御プログラムの割合を乗じた値を前記CPUリソース再定義情報の内容とすることを特徴とする請求項7のCPUリソース管理方法。
【発明を実施するための形態】
【0011】
次に、本発明の第1の実施の形態について図面を参照して詳細に説明する。
【0012】
図1は、第1の実施の形態の構成を示すブロック図である。
図1を参照すると、コンピュータシステム100は、ホストOS200、CPUリソース管理プログラム300、VM制御プログラム400(複数可)、および、ゲストOS500(VM用、複数可)を含む。さらに、コンピュータシステム100は、VMリソース管理プログラム600、および、ユーザプログラム700(VM上で実行される、複数可)を含む。
【0013】
コンピュータシステム100は、リソースとしてCPU(Central Processing System;中央処理装置)を含む。OSは、オペレーティングシステム(Operating System)であり、VMは、仮想マシン(Virtual Machine)である。また、ホストOS200、ゲストOS500を含め、各プログラムは、プログラムを構成するプロセスの集合体である。
【0014】
VM制御プログラム400は、VM(仮想マシン)を動作させるプロセス(VP(virtual Processor)プロセスと呼ぶ)の集合体である。VM制御プログラム400の管理にしたがってゲストOS500が動作する。VMリソース管理プログラム600は、ゲストOS500上で動作する。ユーザプログラム700は、ゲストOS500のVMで実行されるプログラムである。
【0015】
ここで、コンピュータシステム100、ホストOS200、および、CPUリソース管理プログラム300を、BM(Bare Machine;ベアマシン)と呼ぶ。
【0016】
次に、第1の実施の形態の動作について説明する。
【0017】
ゲストOS500は、ユーザプログラム700に対するCPUリソースの割り当てを含む第1種のCPUリソース定義情報を生成する。VMリソース管理プログラム600は、この第1種のCPUリソース定義情報をCPUリソース管理プログラム300に渡す。
【0018】
CPUリソース管理プログラム300は、第1種のCPUリソース定義情報を、VMに割り当てたCPUリソースの範囲内で、ユーザプログラム700に再割り当てし、CPUリソース再定義情報を生成し、CPUリソースを管理する。
【0019】
次に、第1の実施の形態の効果について説明する。
【0020】
第1の実施の形態は、VMを運用するコンピュータシステム100のCPUリソース管理プログラム300が、VM上で実行されるユーザプログラム700のCPUリソース管理を行う構成である。したがって、第1の実施の形態は、VM上で動作するユーザプログラム700に対するCPUリソースの管理を行うことができるという効果を持つ。
【0021】
次に、本発明の第2の実施の形態について、図面を参照して詳細に説明する。
【0022】
図2は、第1の実施の形態の一例である第2の実施の形態の構成を示すブロック図である。
図2を参照すると、第2の実施の形態のコンピュータシステム100は、ホストOS200、CPUリソース管理プログラム300、VM制御プログラム400、VM制御プログラム410、ゲストOS500、ゲストOS510を含む。
【0023】
さらに、コンピュータシステム100は、VMリソース管理プログラム600、VMリソース管理プログラム610、ユーザプログラム700、ユーザプログラム701、ユーザプログラム710、ユーザプログラム711、ユーザプログラム720を含む。
【0024】
VM制御プログラム400、ゲストOS500、VMリソース管理プログラム600、ユーザプログラム700、ユーザプログラム701は、第1のVM(VM0と呼ぶ)に関するものである。
【0025】
VM制御プログラム410、ゲストOS510、VMリソース管理プログラム610、ユーザプログラム710、ユーザプログラム711は、第2のVM(VM1と呼ぶ)に関するものである。ユーザプログラム720は、ホストOS200上で実行される。
【0026】
図3は、第2の実施の形態のハードウェア構成例を示すブロック図である。
図3を参照すると、コンピュータシステム100は、CPU(0)1A0、…、CPU(n)1An、I/Oインタフェース2A0、…、I/Oインタフェース2Am、主記憶3A0を含む。
【0027】
また、たとえば、I/Oインタフェース2Amには、ハードディスク4A0が接続される。図示しないが、I/Oインタフェース2A0、…には、ディスプレイ、キーボード等種々の装置が接続可能である。ここで、n、mは、任意の整数である。すなわち、CPU、および、I/Oインタフェースの個数は、任意である。
【0028】
I/Oは、入出力(Input/Output)である。各プログラムは、ハードディスク4A0に格納され、主記憶3A0にロードされ実行される。
【0029】
図4は、CPUリソース割り当ての割合の上限が定義されるCPUリソース定義情報の一例を示す説明図である。BMのCPUリソース定義情報CBSは、VM0、VM1、ユーザプログラム720に対するDC番号(BM)(0,1,2)、CPUリソース割り当ての割合の上限であるCPUリソース上限値(50[%],40[%],10[%])を含む。CPUリソース定義情報CBSを第2種のCPUリソース定義情報と呼ぶ。
【0030】
VM0のCPUリソース定義情報CVM0(第1種のCPUリソース定義情報の一例)は、VM0のユーザプログラム700、701に対するDC番号(VM0)(0,1)、CPUリソース上限値(80[%]、20[%])を含む。VM1のCPUリソース定義情報CVM1(第1種のCPUリソース定義情報の一例)は、VM1のユーザプログラム710、711に対するDC番号(VM1)(0,1)、CPUリソース上限値(50[%]、50[%])を含む。
【0031】
DC(Dispatching Class)番号は、プログラムを構成するプロセスに付与される識別情報である。プロセスの実行時には、当該プロセスに対応するDC番号のCPUリソース上限値の範囲内で、当該プロセスにCPUリソースが割り当てられる。
【0032】
CPUリソース再定義情報CRSは、BM−DC番号、VM−DC番号、BM上限値、VM上限値、再定義DC番号、再定義CPUリソース上限値を含む。BM、VM0、VM1用に個別に生成されたCPUリソース定義情報CBS、CVM0、CVM1がVM0、VM1起動時に再定義され、CPUリソース再定義情報CRSが生成される。
【0033】
BM−DC番号(0,1,2)は、CPUリソース定義情報CBSのDC番号(BM)から引用される。VM−DC番号(0,1)は、CPUリソース定義情報CVM0のDC番号(VM0)、および、CPUリソース定義情報CVM1のDC番号(VM1)から引用される。
【0034】
また、BM上限値(50[%],40[%],10[%])は、CPUリソース定義情報CBSのCPUリソース上限値から引用される。VM上限値(80[%]、50[%],20[%])は、CPUリソース定義情報CVM0のCPUリソース上限値、および、CPUリソース定義情報CVM1のCPUリソース上限値から引用される。
【0035】
BM上のプロセスに関しては、たとえば、再定義DC番号は、BM−DC番号(0,1,2)がそのまま付与される。VM0、VM1上のプロセスに関しては、たとえば、新たな再定義DC番号(3,4,5,6)が付与される。
【0036】
BM上のプロセスに関しては、再定義CPUリソース上限値は、BM上限値(50[%],40[%],10[%])がそのまま使用される。VM上のプロセスに関しては、再定義CPUリソース上限値は、BM上限値とVM上限値の積が使用される。すなわち、再定義DC番号3,4,5,6に対応する再定義CPUリソース上限値は、それぞれ、40[%](=0.5×0.8)、10[%](=0.5×0.2)、20[%](=0.4×0.5)、20[%](=0.4×0.5)である。
【0037】
ここで、VM0、VM1上のプロセスが同時に実行されることはない。再定義DC番号0,1に対応するプロセスは、VM0、VM1上のプロセス以外のプロセスであって、たとえば、VPプロセス、ゲストOS500、510(のカーネル)のプロセス等である。
【0038】
再定義DC番号2のプロセスの実行可否確認の動作では、[再定義DC番号2のプロセスの実行時間の積算値であるCPUリソース使用時間C]/[全DC番号のプロセスの実行時間の積算値とアイドル時間の総和A]が計算される。ここで、C/Aが再定義DC番号2の再定義CPUリソース上限値(10[%])未満であれば、プロセスキューに繋がっている再定義DC番号2のプロセスが実行され、そうでなければ、実行されない。
【0039】
再定義DC番号0のプロセスの実行可否確認の動作では、Cは、再定義DC番号0、再定義DC番号3、および、再定義DC番号4のプロセスの実行時間の積算値の和である。そして、C/Aが、再定義DC番号0の再定義CPUリソース上限値(50[%])未満であれば、プロセスキューに繋がっている再定義DC番号0のプロセスが実行され、そうでなければ、実行されない。
【0040】
再定義DC番号1のプロセスの実行可否確認の動作では、Cは、再定義DC番号1、再定義DC番号5、および、再定義DC番号6のプロセスの実行時間の積算値の和である。そして、C/Aが、再定義DC番号1の再定義CPUリソース上限値(40[%])未満であれば、プロセスキューに繋がっている再定義DC番号1のプロセスが実行され、そうでなければ、実行されない。
【0041】
再定義DC番号3(または、4)のプロセスの実行可否確認の動作では、まず、XV=[再定義DC番号3(または、4)のプロセスの実行時間の積算値であるCPUリソース実行時間]/Aが計算される。XVが、再定義DC番号3(または、4)の再定義CPUリソース上限値(40[%](または、10[%]))未満であれば、Cを計算する。
【0042】
Cは、再定義DC番号0、再定義DC番号3、および、再定義DC番号4のプロセスの実行時間の積算値の和である。そして、値ZV=C/Aが、再定義DC番号0の再定義CPUリソース上限値(50[%])未満であれば、プロセスキューに繋がっている再定義DC番号3(または、4)のプロセスが実行され、そうでなければ、実行されない。
【0043】
再定義DC番号5(または、6)のプロセスの実行可否確認の動作では、まず、XV=[再定義DC番号5(または、6)のプロセスの実行時間の積算値であるCPUリソース実行時間]/Aが計算される。XVが、再定義DC番号5(または、6)の再定義CPUリソース上限値(20[%])未満であれば、Cを計算する。
【0044】
Cは、再定義DC番号1、再定義DC番号5、および、再定義DC番号6のプロセスの実行時間の積算値の和である。そして、値ZV=C/Aが、再定義DC番号1の再定義CPUリソース上限値(40[%])未満であれば、プロセスキューに繋がっている再定義DC番号5(または、6)のプロセスが実行され、そうでなければ、実行されない。
【0045】
次に、第2の実施の形態の動作について図面を参照して説明する。
【0046】
コンピュータシステム100に電源が投入されると、ハードウェアの初期化が行われ、ホストOS200が起動する。
【0047】
次に、CPUリソース管理プログラム300が起動し、BMのCPUリソース定義情報CBSからCPUリソース再定義情報CRSを生成し、BMに対するCPUリソースの管理を開始する。DC番号(BM)2に対応するユーザプログラム720のプロセスが実行される場合には、CPUリソース上限値は、10[%]が割り当てられる。
【0048】
次に、たとえば、VM0のVM制御プログラム400が起動し、VM0のゲストOS500を起動すると、VM0のVMリソース管理プログラム600が起動する。VMリソース管理プログラム600は、VM0のCPUリソース定義情報CVM0を獲得する。
【0049】
そして、
図4に示すように、VM0のユーザプログラム700、701のプロセスには、それぞれ、再定義DC番号3、4が割り当てられる。上述のように、再定義DC番号3、4に対する再定義CPUリソース上限値は、それぞれ、40[%]、10[%]である。
【0050】
VM1のVM制御プログラム410が起動した場合には、同様にして、
図4に示すように、VM1のユーザプログラム710、711のプロセスには、それぞれ、再定義DC番号5、6が割り当てられる。上述のように、再定義DC番号5、6に対する再定義CPUリソース上限値は、それぞれ、20[%]、20[%]である。
【0051】
図5は、主記憶領域の構成を示す説明図である。
図5を参照すると、主記憶領域は、BMの主記憶領域、VM0の主記憶領域、および、VM1の主記憶領域を含む。
【0052】
BMの主記憶領域は、実行可能プロセスキュー(待ち行列)、BMのCPUリソース定義情報CBS、CPUリソース再定義情報CRSを含む。
【0053】
さらに、BMの主記憶領域は、DC番号ごとのCPUリソース使用時間(情報である)、および、CPUがアイドル状態(実行可能なプロセスがない状態)であった時間であるCPUアイドル時間(情報である)を含む。これら時間に関する情報は、プロセス実行状態、あるいは、アイドル状態時にCPUリソースタイマ(ハードウェア)により時間がカウントされ、それぞれの状態が変化するときに積算される。なお、これらの時間の情報は、一定間隔でCPUリソース管理初期化処理が動作して初期化される。
【0054】
VM0の主記憶領域は、実行可能プロセスキュー、VM0のCPUリソース定義情報CVM0、および、CPUリソース再定義情報CRSを含む。VM1の主記憶領域は、実行可能プロセスキュー、VM1のCPUリソース定義情報CVM1、および、CPUリソース再定義情報CRSを含む。
【0055】
BMの実行可能プロセスキューには、プロセス(1)PRG−2、VPプロセス(2)VP−0、および、VPプロセス(3)VP−1が繋がっている。プロセス(1)PRG−2は、ユーザプログラム720のプロセス(DC番号(BM)2)である。
【0056】
VPプロセス(2)VP−0は、VM0を実行するためのVPプロセス(VM制御プログラム400のプロセス、DC番号(BM)0)である。VPプロセス(3)VP−1は、VM1を実行するためのVPプロセス(VM制御プログラム410のプロセス、DC番号(BM)1)である。
【0057】
VM0の実行可能プロセスキューには、プロセス(4)VM0−3、プロセス(5)VM0−4が繋がっている。プロセス(4)VM0−3は、ユーザプログラム700のプロセス(DC番号(VM0)0、再定義DC番号3)である。プロセス(5)VM0−4は、ユーザプログラム701のプロセス(DC番号(VM0)1、再定義DC番号4)である。
【0058】
VM1の実行可能プロセスキューには、プロセス(6)VM1−5、プロセス(7)VM1−6が繋がっている。プロセス(6)VM1−5は、ユーザプログラム710のプロセス(DC番号(VM1)0、再定義DC番号5)である。プロセス(7)VM1−6は、ユーザプログラム711のプロセス(DC番号(VM1)1、再定義DC番号6)である。
【0059】
プロセスには優先順位があり、優先順位の高い順に繋がっており、先頭のプロセスから実行される。それぞれのプロセスにはCPU上でプロセスを実行するために必要なプロセス実行情報が存在する。また、実行可能プロセスキューには、同一のDC番号を持つプロセスが繋がることが可能である(あるプログラムは、複数のプロセスから構成されるからである)。
【0060】
図6、
図7、
図8は、第2の実施の形態の動作を示すフローチャートである。CPUリソース管理プログラム300が、このフローチャートの動作を行う。なお、この動作は、CPUリソース定義情報CBS、CPUリソース定義情報CVM0、CPUリソース定義情報CVM1、および、CPUリソース再定義情報CRSがすでに生成された後の動作である。また、この動作は、BMの実行可能プロセスキュー、VM0(または、VM1)の実行可能プロセスキューが生成された後の動作である。
【0061】
BMの実行可能プロセスキューの生成は、コンピュータシステム100(のファームウェア)、ホストOS200、または、CPUリソース管理プログラム300による等の種々の構成が可能である。また、VM0(または、VM1)の実行可能キューの生成は、コンピュータシステム100(のファームウェア)、または、CPUリソース管理プログラム300による等の種々の構成が可能である。
【0062】
S101〜S108は、BMの実行可能プロセスキューを先頭からサーチし、実行可能プロセスを決定する処理(プロセス選択処理)である。なお、
図6〜
図8において、VM0(または、VM1)をVMと省略して記述する。
【0063】
CPUリソース管理プログラム300は、まず、BMの実行可能プロセスキューを指すポインタを先頭(たとえば、
図5のプロセス(1)PRG−2)に向ける(S101)。CPUリソース管理プログラム300は、全再定義DC番号(0−6)のプロセスのCPUリソース使用時間(実行時間の積算値)、および、アイドル時間の総和を計算してAとする(S102)。
【0064】
次に、CPUリソース管理プログラム300は、ポインタが指す先にプロセスが存在するかどうかを確認し(S103)、プロセスが存在しなかった場合には(S103/N)、プロセス選択処理を終了する(アイドル状態になる)。
【0065】
プロセスが存在した場合には(S103/Y)、CPUリソース管理プログラム300は、[当該プロセスのDC番号(BM)に対応したCPUリソース使用時間]/A=値Xを確認する(S104)。
【0066】
CPUリソース再定義情報CRSから、その値Xが、対応するCPUリソース上限値以上である場合(S104/Y)、CPUリソース管理プログラム300は、当該プロセスを実行不可能と判断する。そして、CPUリソース管理プログラム300は、実行可能プロセスキューを指すポインタを次のプロセスに向け(S108)、S103の処理へ戻る。
【0067】
CPUリソース再定義情報CRSから、その値Xが、CPUリソース上限値未満である場合(S104/N)、CPUリソース管理プログラム300は、当該プロセスがVM0、または、VM1に割り当てられたプロセスかどうかを確認する(S105)。すなわち、CPUリソース再定義情報CRSにおいて、DC番号(BM)0、または、DC番号(BM)1に対応するプロセスかどうかが確認される。
【0068】
当該プロセスがVM0(または、VM1)に割り当てられたプロセスでないと(S105/N、たとえば、DC番号(BM)2)、CPUリソース管理プログラム300は、当該プロセスを実行可能と判断し、S111の処理へ分岐する。
【0069】
当該プロセスがVM0(または、VM1)に割り当てられたプロセスであると(S105/Y)、CPUリソース管理プログラム300は、CPUリソース再定義情報CRSを参照する。そして、CPUリソース管理プログラム300は、当該プロセスと該当するVM0(またはVM1)上のプロセスのCPUリソース使用時間の総和を計算してCとする(S106)。
【0070】
たとえば、当該プロセスがVM0のプロセス(DC番号(BM)0)であると、再定義DC番号0,3,4のCPUリソース使用時間の和がCである。
【0071】
次に、CPUリソース管理プログラム300は、値Z=C/Aが、当該プロセスの再定義DC番号に対応した再定義CPUリソース上限値以上かどうかを確認する(S107)。たとえば、再定義DC番号0の場合、値Zが50[%]以上かどうかが確認される。
【0072】
Zが当該再定義CPUリソース上限値以上であると(S107/Y)、CPUリソース管理プログラム300は、当該プロセスを実行不可能と判断し、実行可能プロセスキューを指すポインタを次のプロセスに向け(S108)、S103の処理へ戻る。
【0073】
Zが当該再定義CPUリソース上限値未満であると(S107/N)、CPUリソース管理プログラム300は、当該プロセスを実行可能と判断し、S111の処理へ分岐する。そして、CPUリソース管理プログラム300は、実行可能と判断した当該プロセスを実行するために、当該プロセスを実行可能プロセスキューから取り外す(S111)。
【0074】
さらに、CPUリソース管理プログラム300は、CPUリソースタイマ(ハードウェア)を初期化して起動する(S112)。そして、CPUリソース管理プログラム300は、当該プロセスがVPプロセスであれば(S113/Y)、S30Aの処理に進み、そうでなければ(S113/N)、S20Aの処理に進み、取り外したプロセスを実行させる。VPプロセスであるかどうかの情報は、たとえば、プロセス実行情報に格納されている。
【0075】
なお、プロセス実行時のCPU(ハードウェア)へのプロセス実行情報の取り込み、および、プロセス終了時のCPU(ハードウェア)からのプロセス実行情報の書き戻しは通常のコンピュータの動作と同じであるため、フローチャートからは省略されている。
【0076】
S20Aにおけるプロセスの実行が終了(または、中断)すると(S210)、CPUリソース管理プログラム300は、CPUリソースタイマを停止する(S211)。そして、CPUリソース管理プログラム300は、当該プロセスの再定義DC番号のCPUリソース使用時間にCPUリソースタイマの値(プロセス実行時間)を加算する(S211)。ハードウェアのCPUリソースタイマはCPUごとに1個存在し、経過時間をカウントアップするタイマである。
【0077】
プロセスの実行中断の場合には、CPUリソース管理プログラム300は、当該実行可能プロセスキューに当該プロセスを繋ぐ(S212)。そして、プロセスの実行終了、中断のどちらの場合も、CPUリソース管理プログラム300は、プロセス選択処理(S101)の先頭へ戻ってプロセス選択処理を繰り返す。
【0078】
S30A〜S308は、VM0(または、VM1)の実行可能プロセスキューを先頭からサーチし、実行可能プロセスを決定する処理である。CPUリソース管理プログラム300は、VPプロセスの実行を開始させ(S30A)、VM0(またはVM1)の主記憶領域ヘアクセスするためにCPU(ハードウェア)を通常モードからVMモードに変更する(S301)。
【0079】
そして、CPUリソース管理プログラム300は、当該VM0(または、VM1)の実行可能プロセスキューを指すポインタを先頭(たとえば、プロセス(4)VM0−3)に向ける(S302)。次に、CPUリソース管理プログラム300は、全再定義DC番号(0−6)のプロセスのCPUリソース使用時間(実行時間の積算値)、および、アイドル時間の総和を計算してAとする(S303)。
【0080】
次に、CPUリソース管理プログラム300は、ポインタが指す先にVM0(または、
VM1)上のプロセスが存在するかどうかを確認する(S304)。
【0081】
プロセスが存在した場合には(S304/Y)、CPUリソース管理プログラム300は、当該プロセスの再定義DC番号に対応したCPUリソース使用時間をAで割った値XVを確認する(S305)。たとえば、再定義DC番号5であれば、20[%]以上かどうかが確認される。
【0082】
CPUリソース再定義情報CRSから、その値XVが、対応する再定義CPUリソース上限値以上である場合(S305/Y)、CPUリソース管理プログラム300は、当該プロセスを実行不可能と判断する。そして、CPUリソース管理プログラム300は、実行可能プロセスキューを指すポインタを次のプロセスに向け(S308)、S304の処理へ戻る。
【0083】
CPUリソース再定義情報CRSから、値XVが、再定義CPUリソース上限値未満である場合(S305/N)、Cを計算する。すなわち、CPUリソース管理プログラム300は、VM0(またはVM1)上の当該プロセスと該当するVPプロセスのCPUリソース使用時間の総和を計算してCとする(S306)。
【0084】
たとえば、当該プロセスがVM1上のプロセス(再定義DC番号5)であると、再定義DC番号1,5,6のCPUリソース使用時間の和がCである。
【0085】
次に、CPUリソース管理プログラム300は、値ZV=C/Aが、対応するVPプロセスの再定義DC番号に対応した再定義CPUリソース上限値以上かどうかを確認する(S307)。たとえば、再定義DC番号5の場合、値ZVが40[%]以上かどうかが確認される。
【0086】
ZVが当該再定義CPUリソース上限値以上であると(S307/Y)、CPUリソース管理プログラム300は、当該プロセスを実行不可能と判断し、実行可能プロセスキューを指すポインタを次のプロセスに向け(S308)、S304の処理へ戻る。
【0087】
ZVが当該再定義CPUリソース上限値未満であると(S307/N)、CPUリソース管理プログラム300は、当該プロセスを実行可能と判断し、S310の処理へ分岐する。そして、CPUリソース管理プログラム300は、実行可能と判断した当該プロセスを実行するために、実行可能プロセスキューから取り外す(S310)。
【0088】
CPUリソース管理プログラム300は、CPUリソースタイマ(S112において起動)を停止し、CPUリソースタイマの値(当該VPプロセスの実行時間)を当該VPプロセスの再定義DC番号に対応するCPUリソース使用時間に加算する(S311)。
【0089】
次に、CPUリソース管理プログラム300は、CPUリソースタイマを初期化して起動し(S312)、VM0(または、VM1)上のプロセス(S310で、取りはずしたもの)を実行させる(S320)。
【0090】
S330〜S333は、実行していたVM0(または、VM1)上のプロセスが終了、または、中断した場合の処理である。
【0091】
S320におけるVM0(または、VM1)上のプロセスの実行が終了(または、中断)すると(S330)、CPUリソース管理プログラム300は、CPUリソースタイマを停止する(S331)。
【0092】
そして、CPUリソース管理プログラム300は、当該VM0(または、VM1)上のプロセスの再定義DC番号のCPUリソース使用時間にCPUリソースタイマの値(VM0(またはVM1)上のプロセス実行時間)を加算する(S331)。
【0093】
VM0(または、VM1)上のプロセスの実行中断の場合は、CPUリソース管理プログラム300は、当該実行可能プロセスキューに当該プロセスを繋ぐ(S332)。プロセスの実行終了、中断のどちらの場合も、CPUリソース管理プログラム300は、CPUリソースタイマを初期化して起動する(S333)。
【0094】
そして、CPUリソース管理プログラム300は、S302へ戻ってVM0(または、VM1)上のプロセスに対するプロセス選択処理を繰り返す。
【0095】
S304において、VM0(または、VM1)上のプロセスが存在しなかった場合には(S304/N)、CPUリソース管理プログラム300は、BMの主記憶領域ヘアクセスするためにCPU(ハードウェア)をVMモードから通常モードヘ戻す(S340)。そして、CPUリソース管理プログラム300は、VPプロセスを終了させる(S341)。
【0096】
CPUリソース管理プログラム300は、CPUリソースタイマ(S112において起動)を停止し、CPUリソースタイマの値(当該VPプロセスの実行時間)を当該VPプロセスの再定義DC番号に対応するCPUリソース使用時間に加算する(S342)。そして、CPUリソース管理プログラム300は、S101の処理に戻る。
【0097】
ここで、S341において、CPUリソース管理プログラム300が、VPプロセスを終了させずに、VPプロセスをBMの実行可能プロセスキューに繋げる方式も可能である。
【0098】
また、CPUリソース管理プログラム300は、S20A、または、S320におけるプロセスの実行中に、一定の短い間隔で割り込んで、実行中チェック処理により、B/A(後述する)、C/A(後述する)の値をチェックする(S40A〜S407)。
【0099】
また、Aが事前に設定された一定値T以上になった場合、CPUリソース管理プログラム300は、CPUリソース管理初期化処理(S50A〜S504)を実行する。このCPUリソース管理初期化処理は、CPUリソース管理に使用する各種の情報を初期化するもので、CPUがアイドル状態の時にも動作する。
【0100】
実行中チェック処理においては、CPUリソース管理プログラム300は、まず、CPUリソースタイマと全再定義DC番号に対応するCPUリソース使用時間とアイドル時間の総和を計算してAとする(S40A)。
【0101】
CPUがアイドル状態の場合(S401/Y)、CPUリソース管理プログラム300は、Aが一定値T以上かどうかを確認する(S407)。Aが一定値T以上であると(S407/Y)、CPUリソース管理プログラム300は、CPUリソース管理初期化処理を実行し、そうでなければ(S407/N)、処理を終了する。
【0102】
CPUがアイドルでない場合(S401/N)、CPUリソース管理プログラム300は、CPUリソースタイマと実行中のプロセスの再定義DC番号に対応したCPUリソース使用時間の和をBとする(S402)。
【0103】
B/Aの値が[実行中のプロセスの再定義CPUリソース上限値]以上であれば(S403/Y)、CPUリソース管理プログラム300は、S210、または、S330の処理に分岐して当該プロセスを中断させる。
【0104】
B/Aの値が実行中のプロセスの再定義CPUリソース上限未満であれば(S403/N)、CPUリソース管理プログラム300は、実行中のプロセスの種類を調べる(S404)。実行中のプロセスが、BMでVM0(または、VM1)として定義されたプロセス、または、VM0(またはVM1)上のプロセスであれば(S404/Y)、CPUリソース管理プログラム300は、S405に進む。そうでなければ(S404/N)、CPUリソース管理プログラム300は、S407へ分岐する。
【0105】
すなわち、
図4における(DC番号(BM)0,1、再定義DC番号0,1)または、(再定義DC番号3,4,5,6)であれば、S405が実行され、そうでなければ(DC番号(BM)2、再定義DC番号2)、S407が実行される。
【0106】
次に、CPUリソース管理プログラム300は、当該VPプロセスと該当するVM0(またはVM1)上のプロセスのCPUリソース使用時間とCPUリソースタイマの値の総和を計算してCとする(S405)。たとえば、当該プロセスがVM1に該当する再定義DC番号1のVPプロセス、または、VM1上のプロセス(再定義DC番号4,5)であると、再定義DC番号1,5,6のCPUリソース使用時間の和とCPUリソースタイマの値との総和がCである。
【0107】
CPUリソース管理プログラム300は、値ZK=C/Aが、[当該プロセスに対応したVPプロセスの再定義CPUリソース上限値]以上かどうかを確認する(S406)。たとえば、実行中の当該プロセスが再定義DC番号1,5,6に対応する場合、値ZKが40[%]以上かどうかが確認される。
【0108】
ZKが当該再定義CPUリソース上限値以上であると(S406/Y)、CPUリソース管理プログラム300は、S210、または、S330の処理に分岐して当該プロセスを中断させる。ZKが当該再定義CPUリソース上限値未満であると(S406/N)、CPUリソース管理プログラム300は、Aが一定値T以上かどうかを確認する(S407)。
【0109】
Aが一定値T以上であると(S407/Y)、CPUリソース管理プログラム300は、CPUリソース管理初期化処理を行い、そうでないと(S407/N)、実行中チェック処理を終了し、プロセスの実行に戻る。
【0110】
CPUリソース管理初期化処理においては、まず、CPUリソース管理プログラム300は、CPUリソースタイマが動作中ならば、CPUリソースタイマを初期化して起動する(S50A)。そして、CPUリソース管理プログラム300は、すべてのCPUリソース使用時間(
図5)をリセットし(S501)、CPUアイドル時間(
図5)をリセットする(S502)。
【0111】
CPUリソース管理プログラム300は、VM0(または、VM1)の実行可能プロセスキューにプロセスが繋がっている場合(S503/Y)、当該VM0(または、VM1)に対応するVPプロセスがBMの実行可能プロセスキューを確認する(504)。当該VM0(または、VM1)に対応するVPプロセスがBMの実行可能プロセスキューに繋がっていなければ、CPUリソース管理プログラム300は、VPプロセスをBMの実行可能プロセスキューに繋げる(S504)。
【0112】
CPUリソース管理プログラム300は、VM0(または、VM1)の実行可能プロセスキューにプロセスが繋がってない場合(S503/N)、または、S504実行後、CPUリソース管理初期化処理を終了する。
【0113】
次に、CPUリソース定義情報CBS、CPUリソース定義情報CVM0(または、CPUリソース定義情報CVM1)、および、CPUリソース再定義情報CRSの生成の動作について説明する。ゲストOS500、510に関しては、ゲストOS500に代表させて説明する。
【0114】
図9は、第2の実施の形態の動作を示すフローチャートである。
図9を参照すると、まず、ホストOS200は、オペレータ等からの入力を受け取り、CPUリソース定義情報CBSを生成し、BMの領域(
図5)に格納する(ステップS801)。次に、CPUリソース管理プログラム300は、CPUリソース定義情報CBSに基づいて、CPUリソース再定義情報CRSを生成し、BMの領域に格納する(ステップS802)。
【0115】
この時点では、まだ、CPUリソース定義情報CVM0、CPUリソース定義情報CVM1が生成されていないので、CPUリソース定義情報CBSの内容とCPUリソース再定義情報CRSの内容とは同一である。
【0116】
次に、VM制御プログラム400が動作し、ゲストOS500のプロセスが、VM0の実行可能プロセスキューに繋がる(ステップS803)。ゲストOS500自身は、個別のDC番号(VM0)を持たない。
【0117】
図6〜
図7のステップS101、S107/N、S111、S113/Y、S30A、S307/N、S310の処理が実行され、ステップS320において、ゲストOS500のプロセスが実行される(ステップS804)。
【0118】
ゲストOS500は、オペレータ等からの入力を受け取り、CPUリソース定義情報CVM0を生成し、VM0の領域(
図5)に格納する(ステップS805)。次に、ゲストOS500は、VMリソース管理プログラム600に、CPUリソース定義情報CVM0の生成を通知する(ステップS806)。
【0119】
VMリソース管理プログラム600は、CPUリソース定義情報CVM0を獲得し、CPUリソース管理プログラム300に渡す(ステップS807)。
【0120】
CPUリソース管理プログラム300は、CPUリソース定義情報CVM0を受け取ると、CPUリソース定義情報CVM0、および、CPUリソース定義情報CBSに基づいて、CPUリソース再定義情報CRSを生成する(ステップS808)。
【0121】
この場合、CPUリソース管理プログラム300は、ゲストOS500の再定義DC番号を対応するBM−DC番号0とする。
【0122】
そして、CPUリソース管理プログラム300は、生成したCPUリソース再定義情報CRSを、BMの領域、および、VM0(または/および、VM1)の領域に格納する(ステップS809)。
【0123】
次に、第2の実施の形態の効果について説明する。
【0124】
第2の実施の形態は、第1の実施の形態の一例である。したがって、第2の実施の形態は、第1の実施の形態と同一の効果を持つ。
【0125】
また、第2の実施の形態は、VPプロセス、または、VM0(または、VM1)上のプロセスに再定義DC番号、再定義CPUリソース上限値を生成する。さらに、第2の実施の形態は、全再定義DC番号に対応するCPUリソース使用時間とCPUアイドル時間の総和A、および、VM0(または、VM1)に対応する全CPUリソース使用時間の総和Cを算出する。そして、第2の実施の形態は、C/Aと再定義CPUリソース上限値を比較して、VPプロセス、VM0(または、VM1)上のプロセスの実行可否を判断することにより、VM0(または、VM1)上プロセスについてもCPUリソースを管理する構成である。
【0126】
したがって、第2の実施の形態は、仮想マシン(VM0(または、VM1)等)上で実行させるプログラムのプロセスに対するCPUリソース管理を容易に実施できるという効果を持つ。
【0127】
上記の実施の形態の一部、または、全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0128】
[付記1]
ホストOSと、
仮想マシンを動作させるVM制御プログラムと、
前記仮想マシンに対応するゲストOSと、
前記仮想マシン上で実行されるユーザプログラムと、
前記ユーザプログラムに対するCPUリソースの割り当てを含む前記仮想マシンごとの第1種のCPUリソース定義情報を渡すVMリソース管理プログラムと、
前記第1種のCPUリソース定義情報を受け取り、前記仮想マシンに割り当てたCPUリソースの範囲内で、前記ユーザプログラムに再割り当てし、CPUリソース再定義情報を生成し、前記CPUリソースを管理するCPUリソース管理プログラムと、
を含むことを特徴とするコンピュータシステム。
【0129】
[付記2]
前記CPUリソース管理プログラムは、前記VM制御プログラムに対する前記CPUリソースの割り当てを含む第2種のCPUリソース定義情報を生成し、前記第1種のCPUリソース定義情報、および、前記第2種のリソース定義情報を再割り当てし、前記CPUリソース再定義情報を生成し、前記CPUリソース再定義情報、および、前記ユーザプログラムのCPUリソース使用時間を用いて前記CPUリソースの管理を行うことを特徴とする付記1のコンピュータシステム。
【0130】
[付記3]
前記第1種のCPUリソース定義情報は、対応する前記ユーザプログラムのプロセスの実行時間に対するCPUリソース割り当ての割合の上限であるCPUリソース上限値を含み、
前記第2種のCPUリソース定義情報は、対応する前記VM制御プログラムのプロセスの実行時間に対するCPUリソース割り当ての割合の上限であるCPUリソース上限値を含み、
前記CPUリソース管理プログラムは、前記ユーザプログラムに対して前記第1種のCPUリソース定義情報における割り当ての割合と前記第2種のCPUリソース定義情報における対応する前記VM制御プログラムの割合を乗じた値を前記CPUリソース再定義情報の内容とすることを特徴とする付記2のコンピュータシステム。
【0131】
[付記4]
前記CPUリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、[前記ユーザプログラムの前記CPUリソース使用時間]/[全プロセスのCPUリソース使用時間+CPUアイドル時間]が前記CPU再定義情報内の当該前記ユーザプログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記3のコンピュータシステム。
【0132】
[付記5]
前記CPUリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、[前記ユーザプログラムの前記仮想マシンに対応する前記VM制御プログラムのプロセスのCPUリソース使用時間]/[全プロセスのCPUリソース使用時間+CPUアイドル時間]が前記CPU再定義情報内の当該前記VM制御プログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記4のコンピュータシステム。
【0133】
[付記6]
ホストOSと、
仮想マシンを動作させるVM制御プログラムと、
前記仮想マシンに対応するゲストOSと、
前記仮想マシン上で実行されるユーザプログラムと、
前記ユーザプログラムに対するCPUリソースの割り当てを含む前記仮想マシンごとの第1種のCPUリソース定義情報を渡すVMリソース管理プログラムとを含み、
CPUリソース管理プログラムが、前記第1種のCPUリソース定義情報を受け取り、前記仮想マシンに割り当てたCPUリソースの範囲内で、前記ユーザプログラムに再割り当てし、CPUリソース再定義情報を生成し、前記CPUリソースを管理することを特徴とするCPUリソース管理方法。
【0134】
[付記7]
前記CPUリソース管理プログラムは、前記VM制御プログラムに対する前記CPUリソースの割り当てを含む第2種のCPUリソース定義情報を生成し、前記第1種のCPUリソース定義情報、および、前記第2種のリソース定義情報を再割り当てし、前記CPUリソース再定義情報を生成し、前記CPUリソース再定義情報、および、前記ユーザプログラムのCPUリソース使用時間を用いて前記CPUリソースの管理を行うことを特徴とする付記6のCPUリソース管理方法。
【0135】
[付記8]
前記第1種のCPUリソース定義情報は、対応する前記ユーザプログラムのプロセスの実行時間に対するCPUリソース割り当ての割合の上限であるCPUリソース上限値を含み、
前記第2種のCPUリソース定義情報は、対応する前記VM制御プログラムのプロセスの実行時間に対するCPUリソース割り当ての割合の上限であるCPUリソース上限値を含み、
前記CPUリソース管理プログラムは、前記ユーザプログラムに対して前記第1種のCPUリソース定義情報における割り当ての割合と前記第2種のCPUリソース定義情報における対応する前記VM制御プログラムの割合を乗じた値を前記CPUリソース再定義情報の内容とすることを特徴とする付記7のCPUリソース管理方法。
【0136】
[付記9]
前記CPUリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、[前記ユーザプログラムの前記CPUリソース使用時間]/[全プロセスのCPUリソース使用時間+CPUアイドル時間]が前記CPU再定義情報内の当該前記ユーザプログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記8のCPUリソース管理方法。
【0137】
[付記10]
前記CPUリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、[前記ユーザプログラムの前記仮想マシンに対応する前記VM制御プログラムのプロセスのCPUリソース使用時間]/[全プロセスのCPUリソース使用時間+CPUアイドル時間]が前記CPU再定義情報内の当該前記VM制御プログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記9のCPUリソース管理方法。
【0138】
[付記11]
ホストOSと、
仮想マシンを動作させるVM制御プログラムと、
前記仮想マシンに対応するゲストOSと、
前記仮想マシン上で実行されるユーザプログラムと、
前記ユーザプログラムに対するCPUリソースの割り当てを含む前記仮想マシンごとの第1種のCPUリソース定義情報を渡すVMリソース管理プログラムとを含むコンピュータシステムのコンピュータに、
前記第1種のCPUリソース定義情報を受け取り、前記仮想マシンに割り当てたCPUリソースの範囲内で、前記ユーザプログラムに再割り当てし、CPUリソース再定義情報を生成し、前記CPUリソースを管理する動作をさせる、
ことを特徴とするCPUリソース管理プログラム。
【0139】
[付記12]
前記コンピュータに、
前記VM制御プログラムに対する前記CPUリソースの割り当てを含む第2種のCPUリソース定義情報を生成し、前記第1種のCPUリソース定義情報、および、前記第2種のリソース定義情報を再割り当てし、前記CPUリソース再定義情報を生成し、前記CPUリソース再定義情報、および、前記ユーザプログラムのCPUリソース使用時間を用いて前記CPUリソースの管理を行う動作をさせることを特徴とする付記11のCPUリソース管理プログラム。
【0140】
[付記13]
前記第1種のCPUリソース定義情報は、対応する前記ユーザプログラムのプロセスの実行時間に対するCPUリソース割り当ての割合の上限であるCPUリソース上限値を含み、
前記第2種のCPUリソース定義情報は、対応する前記VM制御プログラムのプロセスの実行時間に対するCPUリソース割り当ての割合の上限であるCPUリソース上限値を含む前記コンピュータシステムの前記コンピュータに、
前記ユーザプログラムに対して前記第1種のCPUリソース定義情報における割り当ての割合と前記第2種のCPUリソース定義情報における対応する前記VM制御プログラムの割合を乗じた値を前記CPUリソース再定義情報の内容とさせることを特徴とする付記12のCPUリソース管理プログラム。
【0141】
[付記14]
前記コンピュータに、
実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、[前記ユーザプログラムの前記CPUリソース使用時間]/[全プロセスのCPUリソース使用時間+CPUアイドル時間]が前記CPU再定義情報内の当該前記ユーザプログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記13のCPUリソース管理プログラム。
【0142】
[付記15]
前記コンピュータに、
実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、[前記ユーザプログラムの前記仮想マシンに対応する前記VM制御プログラムのプロセスのCPUリソース使用時間]/[全プロセスのCPUリソース使用時間+CPUアイドル時間]が前記CPU再定義情報内の当該前記VM制御プログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記14のCPUリソース管理プログラム。