(57)【特許請求の範囲】
【請求項１】
コンピュータに、
ユーザ毎に、使用可能な処理演算能力の上限を設定する場合、前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で該ユーザ毎に少なくとも１つの仮想計算機を上位仮想計算機として設定し、
前記ユーザ毎に、複数の仮想計算機を設定する場合、前記設定した上位仮想計算機の配下に、該複数の仮想計算機を下位仮想計算機として設定し、
前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で、該ユーザ毎の前記複数の仮想計算機に対して該処理演算能力を配分する
処理を実行させることを特徴とする複数の仮想計算機を制御する仮想計算機制御プログラム。
【請求項２】
前記ユーザ毎に、複数の仮想計算機を設定する場合、前記上位仮想計算機に配分された前記処理演算能力の範囲で、該上位仮想計算機の配下にある各仮想計算機に、該処理演算能力の上限を設定し、
前記複数の仮想計算機に対して該処理演算能力を配分する場合において、前記上位仮想計算機の配下にあるいずれかの下位仮想計算機について、該下位仮想計算機に配分された処理演算能力の上限の制限を解除する制限解除設定がされている場合、同一の上位仮想計算機の配下において、前記処理演算能力の上限の設定された、使用中でない下位仮想計算機に配分された前記処理演算能力を、前記制限解除設定がされた前記下位仮想計算機に配分する
ことを特徴とする請求項１に記載の仮想計算機制御プログラム。
【請求項３】
前記ユーザ毎に、複数の仮想計算機を設定する場合、いずれかの前記下位仮想計算機に該処理演算能力の下限を設定し、
前記複数の仮想計算機に対して該処理演算能力を配分する場合、前記下限が設定された前記下位仮想計算機へ配分する処理演算能力を確保すると共に、同一の上位仮想計算機の配下において、前記処理演算能力の上限の設定された、使用中でない下位仮想計算機に配分された前記処理演算能力のうち前記確保された処理演算能力を超える範囲の処理演算能力を、前記制限解除設定がされた下位仮想計算機に配分する
ことを特徴とする請求項２に記載の仮想計算機制御プログラム。
【請求項４】
前記複数の仮想計算機に対して該処理演算能力を配分する場合、
第１制御部に、前記複数の上位仮想計算機に対して、前記処理演算能力を配分する処理をさせ、
第２制御部に、前記上位仮想計算機の配下にある複数の仮想計算機に対して、前記処理演算能力を配分させる
ことを特徴とする請求項１〜３のうちいずれか１項に記載の仮想計算機制御プログラム。
【請求項５】
前記複数の仮想計算機に対して該処理演算能力を配分する場合、前記上位仮想計算機または前記下位仮想計算機に配分された前記処理演算能力に応じた順番で、前記上位仮想計算機または前記下位仮想計算機に処理実行時間を割り当てる
ことを特徴とする請求項１〜４のうちいずれか１項に記載の仮想計算機制御プログラム。
【請求項６】
前記処理実行時間を割り当てた前記上位仮想計算機または前記下位仮想計算機に、連続して前記処理実行時間を割り当てる
ことを特徴とする請求項５に記載の仮想計算機制御プログラム。
【請求項７】
ユーザ毎に、使用可能な処理演算能力の上限を設定する場合、前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で該ユーザ毎に少なくとも１つの仮想計算機を上位仮想計算機として設定する第１設定部と、
前記ユーザ毎に、複数の仮想計算機を設定する場合、前記設定した上位仮想計算機の配下に、該複数の仮想計算機を下位仮想計算機として設定する第２設定部と、
前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で、該ユーザ毎の前記複数の仮想計算機に対して該処理演算能力を配分する配分処理部と、
を備えることを特徴とする計算機。
【請求項８】
コンピュータが実行する、複数の仮想計算機を制御する仮想計算機制御方法であって、
前記コンピュータは、
ユーザ毎に、使用可能な処理演算能力の上限を設定する場合、前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で該ユーザ毎に少なくとも１つの仮想計算機を上位仮想計算機として設定し、
前記ユーザ毎に、複数の仮想計算機を設定する場合、前記設定した上位仮想計算機の配下に、該複数の仮想計算機を下位仮想計算機として設定し、
前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で、該ユーザ毎の前記複数の仮想計算機に対して該処理演算能力を配分する
処理を実行することを特徴とする仮想計算機制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、仮想計算機に関する。
【背景技術】
【０００２】
近年、１台のサーバ上で複数の仮想計算機（ＶＭ：Virtual Machine）を同時に動作させる仮想化技術が普及してきている。仮想化技術を用いることにより、各ＶＭでオペレーティングシステム（ＯＳ）を稼動させることができる。これにより、１台のサーバ上で複数のＯＳを並列して稼動させることができ、サーバ資源を有効活用することができる。
【０００３】
例えば、仮想計算機システムにおいて、仮想ＣＰＵが割り当てられていない物理ＣＰＵ（Central Processing Unit）を計算機システム全体で最適化することで消費電力の低減を図る技術がある。当該仮想計算機システムは、仮想化制御部を備えている。仮想化制御部は、スリープ状態と通常の動作状態とを切り替え可能な物理ＣＰＵを複数備えた物理計算機を複数の論理区画に分割し、各論理区画上でそれぞれゲストＯＳを動作させて、各論理区画に対する物理計算機の資源の割当を制御する。仮想化制御部は次の処理を行う。仮想化制御部が前記論理区画に対する操作指令を受け付ける。仮想化制御部は、受け付けた操作指令が論理区画制御部から仮想ＣＰＵを削除する操作指令のときには、仮想ＣＰＵと物理ＣＰＵの割り当て状態と物理ＣＰＵの動作状態を管理するテーブルから仮想ＣＰＵを削除する。仮想化制御部は、仮想ＣＰＵを削除した物理ＣＰＵに割り当てられている仮想ＣＰＵがなくなった場合には、当該物理ＣＰＵをスリープ状態に移行させる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１４０１５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ユーザ毎に配分した処理能力の範囲で、ユーザ毎の複数の仮想計算機資源を有効利用することができる仮想計算機制御プログラム、計算機、及び仮想計算機制御方法を提供する。
【課題を解決するための手段】
【０００６】
複数の仮想計算機を制御する仮想計算機制御プログラムは、コンピュータに、以下の処理を実行させる。すなわち、コンピュータは、ユーザ毎に、使用可能な処理演算能力の上限を設定する場合、前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で該ユーザ毎に少なくとも１つの仮想計算機を上位仮想計算機として設定する。コンピュータは、前記ユーザ毎に、複数の仮想計算機を設定する場合、前記設定した上位仮想計算機の配下に、該複数の仮想計算機を下位仮想計算機として設定する。コンピュータは、前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で、該ユーザ毎の前記複数の仮想計算機に対して該処理演算能力を配分する。
【発明の効果】
【０００７】
仮想計算機制御プログラムによれば、ユーザ毎に配分した処理能力の範囲で、ユーザ毎の複数の仮想計算機資源を有効利用することができる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態における複数の仮想計算機を稼動させる実計算機の構成の一例を示す。
【図２】第１の実施形態におけるＶＭＭの機能ブロック図の一例である。
【図３】第１の実施形態におけるＶＭまたはサブＶＭのＦＩＸ（上限）設定及びＡＵＴＯ（ＦＲＥＥ）設定を説明する図である。
【図４】第１の実施形態における計算機１のハードウェア２の構成ブロック図の一例である。
【図５】第１の実施形態における計算機１の機能ブロック図の一例を示す。
【図６】第１の実施形態における作業領域設定部３１の処理内容の一例を示す。
【図７】第１の実施形態における配分処理部３２の処理内容の一例を示す。
【図８】第１の実施形態における命令時間取得部３３の処理内容の一例を示す。
【図９】第１の実施形態における制御情報格納部３６に格納されているＶＭ制御情報の一例を示す。
【図１０】第１の実施形態における割当作業領域に展開される情報を説明するための図である。
【図１１】第１の実施形態における制御部１２によって実行される処理の配分手順を示すフローチャートの一例である。
【図１２】第１の実施形態における順次配分処理（固定）を説明するための図である。
【図１３】図１２で示した順次配分処理（固定）の結果を示す。
【図１４】第１の実施形態における順次配分処理（平均分配方式）を説明するための図である。
【図１５】図１４で示した順次配分処理（平均分配方式）の結果を示す。
【図１６】第１の実施形態における順次配分処理のフローの一例を示す。
【図１７Ａ】第１の実施形態における連続配分処理のフローの一例を示す。
【図１７Ｂ】第１の実施形態における連続配分処理のフローの一例を示す。
【図１８】第１の実施形態における能力下限値適用処理を説明するための図である。
【図１９】第１の実施形態における能力下限値適用処理（Ｓ４２）の詳細フローの一例を示す。
【図２０】第２の実施形態における計算機１のハードウェア２の構成ブロック図の一例である。
【図２１】第２の実施形態における計算機１の機能ブロックの一例を示す。
【図２２】第２の実施形態における制御部１２ａによって実行される処理の配分手順を示すフローチャートである。
【図２３】Ｓ８１の処理の詳細の一例を示す。
【発明を実施するための形態】
【０００９】
ＶＭの運用方法の一例として、次の方法がある。例えば、１人のユーザで利用する１台の実計算機を、本番系で用いるＶＭ（本番系ＶＭ）と開発系で用いるＶＭ（開発系ＶＭ）に分ける。そして、開発系で使用できるＣＰＵの処理能力には上限を設け、本番系で使用できるＣＰＵの処理能力には上限を設けない（ＡＵＴＯ設定またはＦＲＥＥ設定）。このように、開発系で用いるＶＭをＡＵＴＯ設定（ＦＲＥＥ設定）しないのは、次の理由による。
【００１０】
例えば、開発系ＶＭで開発中のプログラムのバグにより処理がループしてしまった場合、開発系ＶＭの処理能力をＡＵＴＯ設定（ＦＲＥＥ設定）にしておくと、本番系のＣＰＵの処理能力まで食い潰し本番系が処理できなくなる可能性がある。
【００１１】
そのため、開発系では、ＣＰＵの処理能力の上限範囲が決められている。また、本番系については、日中はオンライン、夜間はバッチ処理で1日中、システムが稼動していることが多い。
【００１２】
これに対して、開発系については、通常勤務時間の中で開発作業を行うことが多い。そのため、本番系をＡＵＴＯ設定（ＦＲＥＥ設定）にすることで、開発系が使用していない深夜などの時間帯は開発系に割り当てられていたＣＰＵ能力を本番系で利用可能にする。これにより、システムを効率的に使用することができる。
【００１３】
クラウドシステムなどのアウトソーシングサービスにおいては、１台の実計算機を、複数のＶＭに分け、複数のユーザで利用することが考えられる。また、各ユーザは、本番系（基幹系と情報系等、業務毎に分かれることもある。）と開発系との２種類以上のＶＭを持つことが考えられる。
【００１４】
この場合、上記運用の仕方だと、次の事象が生じる可能性がある。例えば、ユーザＡの本番系のＣＰＵ能力をＡＵＴＯ設定（ＦＲＥＥ設定）にしてユーザＡの開発系のＣＰＵ能力に上限を設定したとする。この場合、ユーザＡの本番系のＣＰＵ能力に関しては、ＡＵＴＯ設定（ＦＲＥＥ設定）がされている。そのため、例えば、ユーザＡの開発系のＣＰＵの処理能力だけでなく、ユーザＢの開発系または本番系のＣＰＵの処理能力に余剰があれば、ユーザＢに割り当てられたＣＰＵの処理能力分まで使用してしまう可能性がでてくる。すると、ユーザＡは、アウトソーシングサービスで契約した総ＣＰＵ割当量よりも多い割当量を使えてしまうことになる。
【００１５】
また、ユーザＢの開発系の割当余剰分がユーザＡの本番系に使われている最中は、ユーザＢの本番系は、本来使えるはずのユーザＢの開発系の割当余剰分を使えないことになる。したがって、ユーザＢは、契約した総ＣＰＵ割当量よりも少ない割当量しか使えないことになる。
【００１６】
そこで、本実施形態では、ユーザ毎に配分した処理能力の範囲で、ユーザ毎の複数の仮想計算機資源を有効利用することができる仮想計算機技術について説明する。ここでは、一例として、複数のＶＭを稼動させて複数ユーザで少なくとも１台の実計算機を共用する仮想計算機について説明する。すなわち、仮想計算機は、各ユーザがＣＰＵの処理能力に関してＦＲＥＥ設定がされたＶＭと上限設定がされたＶＭを利用する場合であっても、各ユーザに割り当てられたＣＰＵの処理能力の範囲内でＣＰＵ処理能力を制御することができる。
【００１７】
図１は、第１の実施形態における複数の仮想計算機を稼動させる実計算機の構成の一例を示す。計算機１は、仮想化プログラムとしての仮想計算機モニタ（ＶＭＭ：Virtual Machine Monitor）を実行することにより、複数の仮想計算機（ＶＭ：Virtual Machine）として機能する。
【００１８】
計算機１は、ハードウェア２、仮想計算機モニタ（ＶＭＭ）３、複数の仮想計算機（ＶＭ）４を含む。ハードウェア２は、実ＣＰＵと実記憶装置等を含む物理的なデバイス群である。ハードウェア２については、後述する。
【００１９】
ＶＭＭ３は、計算機１上で複数のＶＭ（４）を稼動させて制御するために、ＶＭ（４）に対して仮想的なハードウェア環境を提供するプログラムである。具体的は、ＶＭＭ３は、各ＶＭ４のオペレーティングシステム（ＯＳ：Operating System）のディスパッチ（物理ＣＰＵの制御権割り当て）、それらのＯＳが実行する特権命令のエミュレーション、物理ＣＰＵ等のハードウェア２の制御等を行う。
【００２０】
各ＶＭ（４）は、ＶＭＭ３上で、他のＶＭ（４）と独立して稼動する仮想的な計算機である。各ＶＭ（４）は、それぞれのＯＳがＶＭＭ３を介してハードウェア２の物理ＣＰＵの制御権を獲得して当該ＣＰＵ上で実行されることにより実現される。
【００２１】
図２は、第１の実施形態におけるＶＭＭの機能ブロック図の一例である。ＶＭＭ３は、ＶＭ設定部５、サブＶＭ設定部６、ＶＭＭ制御部７を含む。
ＶＭ設定部５は、ユーザ毎に、使用可能な処理演算能力の上限を設定する。ＶＭ設定部５は、前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で該ユーザ毎に少なくとも１つの仮想計算機を上位仮想計算機として設定する。すなわち、ＶＭ設定部５は、入力装置またはネットワークを介してＶＭＭ３上においてユーザ毎にＶＭを使用するための情報を取得し、ＶＭの設定を行う。ＶＭを使用するための情報とは、例えば、ＣＰＵの処理能力の配分の上限もしくは下限、またはその制限を解除する旨の解除情報等に関する情報である。ＶＭ設定部５は、第１設定部の一例である。
【００２２】
サブＶＭ設定部６は、ユーザ毎に、複数の仮想計算機を設定する。サブＶＭ設定部６は、前記設定した上位仮想計算機の配下に、複数の仮想計算機を下位仮想計算機として設定する。すなわち、サブＶＭ設定部６は、入力装置またはネットワークを介してＶＭが複数に分割されて生成されたＶＭ（サブＶＭ）を使用するための情報を取得し、サブＶＭの設定を行う。サブＶＭを使用するための情報とは、例えば、ＣＰＵの処理能力の配分の上限もしくは下限、またはその制限を解除する旨の解除情報等に関する情報である。サブＶＭ設定部６は、第２設定部の一例である。
【００２３】
ＶＭＭ制御部７は、ユーザ毎に設定されている処理演算能力の上限の範囲で、ユーザ毎の複数の仮想計算機に対して処理演算能力を配分する。ＶＭＭ制御部７は、ＶＭ部５及び／またはサブＶＭ設定部により設定された内容に基づいて、ＶＭ及び／またはサブＶＭを生成し、制御する。例えば、ＶＭＭ制御部７は、各ＶＭに設定されているＣＰＵ処理能力の配分値の範囲内で、そのＶＭ内に存在する各サブＶＭに割り当てられたＣＰＵ処理能力の配分値に応じて、各サブＶＭにＣＰＵ処理能力を配分する。ＶＭＭ制御部７は、配分処理部の一例である。
【００２４】
これにより、ユーザ毎に配分した処理能力の範囲で、ユーザ毎の複数の仮想計算機資源を有効利用することができる。
【００２５】
また、サブＶＭ設定部６は、上位仮想計算機に配分された前記処理演算能力の範囲で、上位仮想計算機の配下にある各仮想計算機に、処理演算能力の上限を設定する。ＶＭＭ制御部７は、上位仮想計算機の配下にあるいずれかの下位仮想計算機について、下位仮想計算機に配分された処理演算能力の上限の制限を解除する制限解除設定がされている場合、次の処理を行う。すなわち、ＶＭＭ制御部７は、同一の上位仮想計算機の配下において、処理演算能力の上限の設定された、使用中でない下位仮想計算機に配分された処理演算能力を、制限解除設定がされた下位仮想計算機に配分する。
【００２６】
これにより、サブＶＭのＣＰＵの処理能力の配分に関してＦＲＥＥ設定がされていたとしても、各ユーザに配分されたＣＰＵの処理能力を超えて、ＣＰＵの処理能力を使用することができなくなる。
【００２７】
また、サブＶＭ設定部６は、いずれかの下位仮想計算機に処理演算能力の下限を設定する。ＶＭＭ制御部７は、下限が設定された下位仮想計算機へ配分する処理演算能力を確保する。このとき、ＶＭＭ制御部７は、同一の上位仮想計算機の配下で、処理演算能力の上限の設定された使用中でない下位仮想計算機に配分された処理演算能力のうち確保された処理演算能力を超える範囲の処理演算能力を、制限解除設定がされた下位仮想計算機に配分する。
【００２８】
これにより、処理演算能力の下限が設定されたサブＶＭが未使用であっても、そのサブＶＭに配分された処理演算能力は確保されているので、そのサブＶＭを使用したいときには随時使用することができる。
【００２９】
また、ＶＭＭ制御部７は、第１制御部と、第２制御部とを含む。第１制御部は、複数の上位仮想計算機に対して、処理演算能力を配分する。第２制御部は、上位仮想計算機の配下にある複数の仮想計算機に対して、処理演算能力を配分する。第１ＣＰＵ１２ａ−１は、第１制御部の一例である。第２ＣＰＵ１２ａ−２は、第２制御部の一例である。
【００３０】
これにより、第１制御部に処理が集中するのを防止することができるので、第１制御部の処理負担の軽減を図ることができる。また、サブＶＭ単位の処理を複数のＣＰＵに処理させることができるので、処理の高速化を図ることができる。
【００３１】
また、ＶＭＭ制御部７は、上位仮想計算機または下位仮想計算機に配分された処理演算能力に応じた順番で、上位仮想計算機または下位仮想計算機に処理実行時間を割り当てることができる。
【００３２】
これにより、ＣＰＵ配分値に応じて各ＶＭまたは各サブＶＭへ命令処理を振り分けることができる。
【００３３】
上述したように、ＶＭを使用するための情報には、ＣＰＵの処理能力の配分の上限もしくは下限の範囲内でＣＰＵ処理能力を用いるか、またはその制限を解除する旨の解除情報等に関する情報が含まれる。このような情報は、本実施形態では、「システム利用方法」という。システム利用方法には、ＣＰＵの処理能力の配分値を固定的に保持する旨の設定（ＦＩＸ設定）または動的に変更する旨の設定（ＡＵＴＯ設定（またはＦＲＥＥ設定））がある。これについて、図３を用いて説明する。
【００３４】
図３は、第１の実施形態におけるＶＭまたはサブＶＭのＦＩＸ（上限）設定及びＡＵＴＯ（ＦＲＥＥ）設定を説明する図である。ＶＭＭ制御部７は、各ＶＭに対して設定した配分値に応じて、ＣＰＵ処理能力の上限を各ＶＭに固定的に提供する。図３の例では、ＶＭＭ３は、ＶＭ１、ＶＭ２、ＶＭ３、ＶＭ４に対してそれぞれ、３０％、４０％、１０％、２０％のＣＰＵ処理能力を配分する。
【００３５】
ＶＭＭ３は、各ＶＭを連携している。各ＶＭは、ＶＭＭから提供されたＣＰＵ処理能力の範囲内で制御を行う。ＶＭ内にサブＶＭがある場合、サブＶＭは、ＶＭＭから提供されたＣＰＵ処理能力の範囲内で制御を行う。サブＶＭは、サブＶＭがない場合のＶＭと同様の動作を行う。
【００３６】
図３の例では、ＶＭＭ３は、ＶＭ１におけるＶＭ１１、ＶＭ１２に対してそれぞれ、ＶＭ１のＣＰＵ処理能力の８０％、２０％を配分する。また、ＶＭＭ３は、ＶＭ２におけるＶＭ２１、ＶＭ２２に対してそれぞれ、ＶＭ２のＣＰＵ処理能力の９０％、１０％を配分する。また、ＶＭＭ３は、ＶＭ３におけるＶＭ３１に対して、ＶＭ３のＣＰＵ処理能力の１０％を配分する。なお、ＶＭ４は未使用である。
【００３７】
ＶＭ１に関して、ＶＭ１１、ＶＭ１２のシステム利用設定についてそれぞれ、ＡＵＴＯ、ＦＩＸが設定されている。この場合、ＡＵＴＯ設定がされているサブＶＭ１１は、ＡＵＴＯ設定が有効になった際には、ＶＭ１のＣＰＵ処理能力の範囲内において、現在使用中でないＦＩＸ設定されたサブＶＭに配分されたＣＰＵ処理能力を使用することができる。図３において、サブＶＭ１２が使用中でない場合、サブＶＭ１１は、自身に配分されたＣＰＵ処理能力（８０％）に、サブＶＭ１２に配分されたＣＰＵ処理能力（２０％）を加えたＣＰＵ処理能力を使用することができる。
【００３８】
ＦＩＸ設定がされているＶＭ１２は、自身に配分されたＣＰＵ処理能力（２０％）の範囲内でＣＰＵ処理能力を使用することができる。ただし、ＡＵＴＯ設定が有効となったサブＶＭ１１により既にＶＭ１２に配分されたＣＰＵ処理能力が使用されている場合には、ＶＭ１１の処理が終了するまで、ＶＭ１２はそのＣＰＵ処理能力を使用できない。
【００３９】
ＶＭ２に関して、ＦＩＸ設定がされているＶＭ２１、ＶＭ２２はそれぞれ、自身に配分されたＣＰＵ処理能力９０％，１０％の範囲内でＣＰＵ処理能力を使用することができる。
【００４０】
ＶＭ３に関して、ＶＭ３１のシステム利用設定について、ＡＵＴＯが設定され、上位ＶＭ３がＦＩＸ設定されているとする。この場合、ＶＭ３１がＡＵＴＯ設定であってもＶＭ３１の１０％までの上限でＣＰＵ処理能力を使用することができる。なお、当機能を使用した場合は、上位ＶＭは、例えば、ＦＩＸモードとする。
【００４１】
ＶＭ４は、未使用である。この場合、他の稼動中のＶＭがＶＭ４に配分されたＣＰＵ処理能力を使用しないように、ＶＭＭ３は、ＶＭ４に対して待ち状態制御を行う。なお、サブＶＭが未使用の場合でも、同様に、ＶＭ４に対して待ち状態制御を行う。
【００４２】
図４は、第１の実施形態における計算機１のハードウェア２の構成ブロック図の一例である。計算機１は、制御部１２、ＲＯＭ１３、ＲＡＭ１６、通信Ｉ／Ｆ１４、記憶装置１７、出力Ｉ／Ｆ１１、入力Ｉ／Ｆ１５、読み取り装置１８、バス１９、出力機器２１、入力機器２２によって構成されている。ここで、ＣＰＵ（Central Processing Unit）は、中央演算装置を示す。ＲＯＭは、リードオンリメモリを示す。ＲＡＭは、ランダムアクセスメモリを示す。Ｉ／Ｆは、インターフェースを示す。
【００４３】
バス１９には、制御部１２、ＲＯＭ１３、ＲＡＭ１６、通信Ｉ／Ｆ１４、記憶装置１７、出力Ｉ／Ｆ１１、入力Ｉ／Ｆ１５、及び読み取り装置１８等が接続されている。読み取り装置１８は、可搬型記録媒体を読み出す装置である。出力機器２１は、出力Ｉ／Ｆ１１に接続されている。入力機器２２は、入力Ｉ／Ｆ１５に接続にされている。
【００４４】
記憶装置１７としては、ハードディスクドライブ、フラッシュメモリ装置、磁気ディスク装置など様々な形式の記憶装置を使用することができる。ＲＡＭ１６は、例えば、データを一時的に格納する作業領域として用いられる。
【００４５】
記憶装置１７またはＲＯＭ１３には、例えば、ＶＭＭ３、及び各ＶＭのＯＳ等のプログラム及びデータ、後述する処理で用いるテーブル等の情報が格納されている。
制御部１２は、記憶装置１７等に格納した後述する処理を実現するプログラムを読み出し、当該プログラムを実行する演算処理装置（例えば、ＣＰＵ）である。
【００４６】
後述する実施形態で説明する処理を実現するプログラムは、プログラム提供者側から通信ネットワーク２０、および通信Ｉ／Ｆ１４を介して、例えば記憶装置１７に格納してもよい。また、後述する実施形態で説明する処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置１８に設定されて、制御部１２によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＩＣカード、ＵＳＢメモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置１８によって読み取られる。
【００４７】
また、入力機器２２には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレット、タッチパネルなどを用いることが可能である。また、出力機器２１には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク２０は、インターネット、ＬＡＮ、ＷＡＮ、専用線、有線、無線等の通信網であってよい。
【００４８】
図５は、第１の実施形態における計算機１の機能ブロック図の一例を示す。計算機１は、ＶＭＭ３、制御情報格納部３６、割当作業領域３９、命令時間テーブル４０を含む。ＶＭＭ３は、作業領域設定部３１、配分処理部３２、命令時間取得部３３、作業領域更新部３４、履歴更新部３５を含む。作業領域設定部３１は、ＶＭ設定部５、サブＶＭ設定部６として機能する。配分処理部３２、命令時間取得部３３、作業領域更新部３４、履歴更新部３５は、ＶＭＭ制御部７として機能する。
【００４９】
制御情報格納部３６には、ＶＭ制御情報が格納されている。ＶＭ制御情報は、各ＶＭを管理・制御するために用いる情報群であって、ＶＭ割当制御情報３７、再分割割当情報３８を含む。ＶＭ割当制御情報３７は、各ＶＭに計算機１の資源を割り当てるために用いる情報である。再分割割当情報３８は、１つのＶＭを更に複数のＶＭ（すなわち、サブＶＭ）に分けてそれぞれ管理・制御するために用いる情報である。ＶＭ割当制御情報３７、再分割割当情報３８は、管理者が入力装置２２を用いて入力したり、ネットワーク２０を介して入力された情報が格納されたものである。
【００５０】
また、計算機１は、不図示のユーザ管理テーブルを含む。ユーザ管理テーブルは、ユーザ毎に、ユーザの使用するＶＭ及びサブＶＭを識別する情報が登録されている。ユーザ管理テーブルの登録情報は、管理者が入力装置２２を用いて入力したり、ネットワーク２０を介して入力された情報が格納されたものである。ユーザ管理テーブルは、ＶＭ制御情報（ＶＭ割当制御情報３７、再分割割当情報３８）と関連付けることができる。これにより、ユーザ毎のＶＭ及び／またはサブＶＭを管理することができる。
【００５１】
割当作業領域３９は、現在実行している処理において各ＶＭ及び／または各サブＶＭに計算機１の資源を割り当てるために用いる情報が一時的に展開される実メモリ上の作業領域である。割当作業領域３９には、ＶＭ制御情報（ＶＭ割当制御情報３７、再分割割当情報３８）等の情報が展開される。
【００５２】
命令時間テーブル４０には、各ＶＭ及び／または各サブＶＭに実行させる命令の処理時間が格納されている。
作業領域設定部３１は、制御情報格納部３６から抽出したＶＭ制御情報を割当作業領域３９に設定する。また、作業領域設定部３１は、現在使用中のＶＭの処理順を管理する処理順情報を割当作業領域３９に設定する。
【００５３】
配分処理部３２は、割当作業領域３９に設定されたＶＭ制御情報に含まれる「システム利用方法」に応じて、ＶＭ及び／またはサブＶＭのＣＰＵ処理能力の配分を調整する。また、配分処理部３２は、各ＶＭまたは各サブＶＭにどのような順で処理を割り当てるかを算出して確定する。
【００５４】
命令時間取得部３３は、配分処理部３２で処理が割り当てられたＶＭまたはサブＶＭに対して与えられる命令を処理するためにかかる時間を、命令時間テーブル４０から取得する。
【００５５】
作業領域更新部３４は、配分処理部３２で算出して確定した内容及び命令時間取得部３３で取得した命令時間を用いて、割当作業領域３９に展開されているＶＭ制御情報、及び処理順情報等を更新する。
【００５６】
履歴更新部３５は、配分処理部３２で算出して確定した内容を履歴（ログファイル４１）として記憶装置１７へ格納する。
図６は、第１の実施形態における作業領域設定部３１の処理内容の一例を示す。作業領域設定部３１は、制御情報格納部３６から各ＶＭ４のＶＭ制御情報を取得する（Ｓ１）。作業領域設定部３１は、取得したＶＭ制御情報から、割当作業領域３９に設定する対象となるＶＭ制御情報を確定する（Ｓ２）。作業領域設定部３１は、その確定したＶＭ制御情報を割当作業領域３９に設定する（Ｓ３）。
【００５７】
図７は、第１の実施形態における配分処理部３２の処理内容の一例を示す。配分処理部３２は、割当作業領域３９から、各ＶＭに割り当てられたＣＰＵ配置値等の配分に関する情報を含むＶＭ制御情報を取得する（Ｓ４）。
【００５８】
取得したＶＭ制御情報の「システム利用方法」がＡＵＴＯ（またはＦＲＥＥ）設定の場合、配分処理部３２は、ＶＭまたはサブＶＭのＣＰＵ配分値について、ＡＵＴＯ（またはＦＲＥＥ）設定で使用可能な最大値をＶＭまたはサブＶＭに設定する（Ｓ５）。
【００５９】
配分処理部３２は、命令制御方式を用いて処理対象となるＶＭまたはサブＶＭを算出する（Ｓ６）。ここで、命令制御方式とは、処理対象となるＶＭまたはサブＶＭを算出する方法をいう。命令制御方式の一例としては、後述する順次配分処理、連続配分処理等がある。
【００６０】
配分処理部３２は、Ｓ６の算出の結果に基づいて、処理対象となるＶＭまたはサブＶＭを確定する（Ｓ７）。
【００６１】
図８は、第１の実施形態における命令時間取得部３３の処理内容の一例を示す。命令時間取得部３３は、処理対象として確定したＶＭ（処理ＶＭ）または処理対象として確定したサブＶＭ（処理サブＶＭ）のＯＳから当該処理ＶＭまたは処理サブＶＭの命令を取得する（Ｓ８）。命令時間取得部３３は、命令処理時間テーブル４３から、Ｓ８で取得した命令に対応する処理時間を取得する（Ｓ９）。
【００６２】
図９は、第１の実施形態における制御情報格納部３６に格納されているＶＭ制御情報の一例を示す。制御情報格納部３６は、（Ａ）ＶＭ割当制御情報３７、及び（Ｂ）再分割割当情報３８をＶＭ制御情報として含む。ＶＭ割当制御情報３７及び再分割割当情報３８には、システム構築時に設定された情報及び、入力装置またはネットワークを介して入力された情報が格納されている。記憶装置１７は、制御情報格納部３６を含む。
【００６３】
また、不図示のユーザ管理テーブルが記憶装置１７に格納されている。ユーザ管理テーブルには、ユーザを識別するユーザ識別情報、そのユーザが使用するＶＭを識別するＶＭ識別情報、そのユーザが使用するサブＶＭを識別するサブＶＭ識別情報等の情報が関連付けられて格納されている。
【００６４】
ＶＭの数（ｎ台）に応じて、ＶＭ割当情報i（i＝１〜ｎ）が設定されている。各ＶＭ割当情報iは、「ＶＭi名」５１、「指定ＯＳ識別」５２、・・・、「ＣＰＵ配分値」５３、「システム利用方式」５４、「連続配分」５５、「能力下限値」５６、「利用能力掛率」５７、「再分割数」５８等のデータ項目を含む。
【００６５】
「ＶＭi名」５１には、ＶＭi（i＝１〜ｎ）の名称が格納される。「指定ＯＳ識別」５２には、ＶＭiで利用されているＯＳを識別する識別情報が格納される。「ＣＰＵ配分値」５３には、ＶＭiに対して配分されるＣＰＵの配分値が格納される。ここで、ＣＰＵの配分値は、例えば、百分率（％）で設定される。「システム利用方法」５４には、ＶＭiに対して配分されたＣＰＵ配分値を固定にする「ＦＩＸ」、またはＶＭiに対して配分されたＣＰＵ配分値を動的に変動させる「ＡＵＴＯ（またはＦＲＥＥ）」が格納される。「連続配分」５５には、後述する命令制御方式において連続に処理することを示す情報が格納される。「能力下限値」５６には、ＶＭiに対して配分されるＣＰＵの能力下限値が格納される。ここで、能力下限値は、例えば、百分率（％）で設定される。「利用能力掛率」５７は、後述する処理で用いられる。「再分割数」５８には、例えば、ＶＭiをさらに分割して構築されるサブＶＭijの数が格納される。
【００６６】
ＶＭiが分割されて、ＶＭiの配下に、さらに、仮想計算機ＶＭijが生成される場合、その生成されたＶＭijの数ｍに応じて、「再分割j」６１の項目が生成される。「再分割j」６１には、再分割情報が設定されている。
【００６７】
「再分割j」６１に格納される再分割情報は、「処理順番」６２、「ＶＭij名」６３、「ＣＰＵ配分値」６４、「利用能力掛率」６５を含む。「処理順番」６２には、ＶＭijの処理順が格納される。「ＶＭij名」６３には、ＶＭij（i＝１〜ｎ、j＝１〜ｍ）の名称が格納される。「ＣＰＵ配分値」６４には、ＶＭijに対して配分されるＣＰＵ配分値が格納される。「利用能力掛率」６５は、後述する処理で用いられる。
【００６８】
再分割割当情報３８は、「再分割j」６１に対応するサブＶＭijのサブＶＭ割当情報ijを含む。各サブＶＭ割当情報ijは、「サブＶＭij名」７１、「指定ＯＳ識別」７２、・・・、「ＣＰＵ配分値」７３、「システム利用方式」７４、「連続配分」７５、「能力下限値」７６等のデータ項目を含む。
【００６９】
「サブＶＭij名」７１には、サブＶＭijの名称が格納される。「指定ＯＳ識別」７２には、サブＶＭijで用いられるＯＳの識別情報が格納される。「ＣＰＵ配分値」７３には、サブＶＭijに対して配分されるＣＰＵの配分値が格納される。「システム利用方法」７４には、サブＶＭijに対して配分されたＣＰＵ配分値を固定にする「ＦＩＸ」、またはサブＶＭijに対して配分されたＣＰＵ配分値を動的に変動させる「ＡＵＴＯ（またはＦＲＥＥ）」が格納される。「連続配分」７５には、後述する命令制御方式において連続に処理することを示す情報が格納される。「能力下限値」７６には、サブＶＭijに対して配分されるＣＰＵの能力下限値が格納される。
【００７０】
「ＶＭi名」をキーとして、不図示のユーザ管理テーブルと、ＶＭ割当制御情報３７、及び再分割割当情報３８を関連付けることにより、ユーザ毎のＶＭ及び／またはサブＶＭを管理することができる。
【００７１】
図１０は、第１の実施形態における割当作業領域に展開される情報を説明するための図である。割当作業領域３９には、例えば、（Ａ）処理順作業情報８０、（Ｂ）ＶＭ割当制御情報３７、（Ｃ）再分割割当情報３８が展開される。
【００７２】
作業領域設定部３１は、イニシャルプログラムロード（ＩＰＬ）時に、制御情報格納部３６からＶＭ制御情報（ＶＭ割当制御情報３７、再分割割当情報３８）の内容を読み出して割当作業領域３９に展開する。
【００７３】
このとき、作業領域設定部３１は、割当作業領域３９に処理順情報８０を生成する。処理順情報８０は、現在実行しているＶＭi（i＝１〜ｎ）の使用状況を管理する作業情報である。
【００７４】
処理順情報８０は、ヘッダ情報として「制御情報」、それ以降に使用中のＶＭiについての処理順（ＶＭi）情報を含む。「制御情報」は、「平均分配方式」８５、「最大能力制限値」８６を含む。「平均分配方式」８５は、命令制御方式を決定するために用いられる項目である。「最大能力制限値」８６は、能力下限値適用処理を行う場合に用いられる項目である。
【００７５】
処理順（ＶＭi）情報は、「処理順番」８１、「ＶＭi名」８２、「ＣＰＵ配分値」８３、「利用能力掛率」８４等を含む。「処理順番」８１は、現在稼動しているＶＭの処理順番が格納される。「ＶＭi名」８２には、ＶＭiの名称が格納される。「ＣＰＵ配分値」８３には、そのＶＭiに配分されているＣＰＵの配分値が格納される。「利用能力掛率」８４は、処理配分を算出する際に用いられる作業項目である。
【００７６】
配分処理部３２、命令時間取得部３３、作業領域更新部３４、履歴更新部３５は、割当作業領域３９に展開したＶＭ制御情報と、処理順情報８０を用いて、各ＶＭi、及びサブＶＭijの動作に伴って変化するＣＰＵの使用状況の更新を行う。当該更新処理については、図１１を用いて説明する。
【００７７】
図１１は、第１の実施形態における制御部１２によって実行される処理の配分手順を示すフローチャートの一例である。計算機１の起動時に、制御部１２は記憶装置からＶＭＭ３のプログラムを読み出して、そのＶＭＭ３のプログラムを実行する。
【００７８】
すると、制御部１２は、ＶＭＭ３のプログラムに基づいて、作業領域設定部３１、配分処理部３２、命令時間取得部３３、作業領域更新部３４、履歴更新部３５として機能し、次の処理を行う。すなわち、制御部１２は、図１０で説明した割当作業領域３９に展開されたＶＭ制御情報（ＶＭ割当制御情報３７、再分割割当情報３８）と、処理順情報８０を用いて、図１１に示すフローを実行する。
【００７９】
まず、制御部１２は、割当作業領域３９に展開された処理順情報８０のうち、最も小さいＣＰＵ配分値を有する処理順情報を取得する（Ｓ２１）。なお、Ｓ２１において、本実施形態では、ＣＰＵ配分値の最も小さいＶＭから処理を行うが、これに限定されない。例えば、制御部１２は、ＣＰＵ配分値の最も大きいＶＭから処理を行うようにしてもよい。
【００８０】
次に、制御部１２は、Ｓ２１で取得した処理順情報の「ＶＭi名」を参照し、ＶＭ割当制御情報３７から、その「ＶＭi名」によって関係付けられているＶＭ割当情報iを取得する（Ｓ２２）。
【００８１】
制御部１２は、Ｓ２２で取得したＶＭ割当情報iの「再分割数」に値が設定されているか、または設定されている「再分割数」が２以上であるかを判定する（Ｓ２３）。Ｓ２２で取得したＶＭ割当情報iの「再分割数」に値が設定されていない場合、または設定されている「再分割数」が２未満である場合（Ｓ２３で「Ｎｏ」）、制御部１２は、次の処理を行う。すなわち、制御部１２は、割当作業領域３９に展開された各ＶＭについてのＶＭ割当情報iから、優先度及び利用能力掛率を確定する。ここで、優先度とは、ＣＰＵ配分値に応じて設定される値をいう。ＶＭ（またはサブＶＭ）についての利用能力掛率とは、以下の式（１）で表される値をいう。
利用能力掛率＝全体能力／ＶＭ（またはサブＶＭ）設定値×処理能力設定値    （１）
ここで、ＶＭ（またはサブＶＭ）設定値は、ＶＭ（またはサブＶＭ）についてのＣＰＵ配分値に相当する。また、全体能力は、ＣＰＵ配分値の合計に相当する。処理能力設定値は、各ＶＭiまたはサブＶＭijの処理能力に応じて設定される値である。
【００８２】
制御部１２は、Ｓ３１で確定した優先度及び利用能力掛率を用いて、各ＶＭに対して処理実行時間を割当てる（Ｓ３２）。配分処理では、命令制御方式に応じて、各ＶＭに対して処理の配分がされる。配分処理については後述する。
【００８３】
制御部１２は、Ｓ３２の配分処理結果をログファイルに格納する（Ｓ３３）。その後、処理の制御がＳ２１の処理に戻る。
Ｓ２２で取得したＶＭ割当情報iの「再分割数」に値が設定されている場合、または設定されている「再分割数」が２以上である場合（Ｓ２３で「Ｙｅｓ」）、制御部１２は、次の処理を行う。すなわち、制御部１２は、Ｓ２２で取得したＶＭ割当情報iに含まれる再分割情報６１のうち、最も小さいＣＰＵ配分値を有する再分割情報を取得する（Ｓ２４）。
【００８４】
制御部１２は、Ｓ２４で取得した再分割情報の「ＶＭij名」を参照し、再分割割当情報３８から、その「ＶＭij名」によって関係付けられているサブＶＭ割当情報iｊを取得する（Ｓ２５）。
【００８５】
制御部１２は、割当作業領域３９に展開された各サブＶＭijについてのサブＶＭ割当情報iｊから優先度及び利用能力掛率を確定する（Ｓ２６）。Ｓ２６の処理は、Ｓ３１の処理と同じである。
【００８６】
制御部１２は、Ｓ２６で確定した優先度及び利用能力掛率を用いて、各ＶＭに対して処理実行時間を割り当てる（Ｓ２７）。Ｓ２７の処理は、Ｓ３２の処理と同じである。
制御部１２は、Ｓ２７の配分処理結果をログファイルに格納する（Ｓ２８）。その後、処理の制御がＳ２１の処理に戻る。
【００８７】
制御部１２は、割当作業領域３９に展開されたＶＭ割当情報iであって、配分処理を行ったサブＶＭijの上位のＶＭiについてのＶＭ割当情報iの「ＣＰＵ配分値」５３を更新する（Ｓ２９）。制御部１２は、サブＶＭijの処理の実行により、当該サブＶＭijのＣＰＵ処理能力の変動に応じて変動する上位ＶＭiのＣＰＵ処理能力に基づく配分値を更新する。
【００８８】
制御部１２は、割当作業領域３９に展開された処理順情報であって、Ｓ２９で更新したＶＭ割当情報iに対応するＶＭiの処理順情報のＣＰＵ配分値を更新し、さらに処理順を更新する（Ｓ３０）。
【００８９】
以下では、Ｓ２７及びＳ３２の配分処理の詳細について説明する。配分処理は、命令制御方式に応じて実行される。命令制御方式の一例には、順次配分処理、連続配分処理等がある。これらの各処理については、以下で詳述する。
【００９０】
図１２は、第１の実施形態における順次配分処理（固定）を説明するための図である。順次配分処理（固定）は、処理時間単位が一定であって、ＣＰＵ配分値に応じて均等に、各ＶＭまたは各サブＶＭに処理を割り当てる。なお、図１２では、ＶＭ単位での順次配分処理について説明するが、サブＶＭ単位での順次配分処理についても同様である。
【００９１】
図１２において、優先度は、ＣＰＵの配分値に応じて設定される。利用能力値は、上述の式（１）により得られる値である。式（１）において、全体能力を１００とする。処理能力設定値を仮に１とする。また、図１２の例では、各回の命令時間は５である。
【００９２】
図１２では、一例として、ＶＭ（ＶＭ１、ＶＭ２、ＶＭ３、ＶＭ４）の配分処理について説明するが、サブＶＭの配分処理についてもＶＭと同様に行うことができる。
ＶＭ１、ＶＭ２、ＶＭ３、ＶＭ４のＣＰＵ配分値はそれぞれ、３０％、４０％、１０％、２０％とする。この場合、ＶＭ１、ＶＭ２、ＶＭ３、ＶＭ４の優先度は、３０、４０、１０、２０とする。
【００９３】
ＶＭ１の利用能力掛率（Ａ）は、式（１）より、１００／３０×１＝３．３３３３・・・である。ＶＭ２の利用能力掛率（Ａ）は、式（１）より、１００／４０×１＝２．５である。ＶＭ３の利用能力掛率（Ａ）は、式（１）より、１００／１０×１＝１０である。ＶＭ４の利用能力掛率（Ａ）は、式（１）より、１００／２０×１＝５である。
【００９４】
１回目の配分処理において、処理能力合計率値（Ｂ）は、利用能力掛率（Ａ）と同じである。制御部１２は、処理能力合計率値のうち、最も小さい値のＶＭを検出し、その処理ＶＭフラグを「１」とする。その処理フラグの立ったＶＭが処理対象となる処理ＶＭとなる。処理ＶＭは、命令処理を取得して、実行する。処理ＶＭの処理後、その処理時間＝５を処理時間合計（Ｃ）に加算する。
【００９５】
２回目の配分処理において、制御部１２は、各ＶＭの利用能力掛率（Ａ）に前回の処理時間合計（Ｃ）を乗じて、処理能力合計率値（Ｂ）を算出する。このとき、前回の処理時間合計（Ｃ）の値が０の場合、制御部１２は、各ＶＭの利用能力掛率（Ａ）に「１」を乗じて、処理能力合計率値（Ｂ）を算出する。制御部１２は、処理能力合計率値（B）のうち、最も小さい値のＶＭを検出し、その処理ＶＭフラグを「１」とする。その処理フラグの立ったＶＭが処理対象となる処理ＶＭとなる。処理ＶＭは、命令処理を取得して、実行する。処理ＶＭの処理後、その処理時間＝５を処理時間合計（Ｃ）に加算する。
【００９６】
３回目以降の配分処理は、上記の処理が繰り返される。この処理の結果は、図１３に示される。なお、１１回目の処理において、各ＶＭの処理能力合計率値が同じになっている。この場合、優先度の最も高いＶＭが処理ＶＭとして設定される。したがって、１１回目の処理において、ＶＭ２が処理ＶＭとなる。
【００９７】
図１３は、図１２で示した順次配分処理（固定）の結果を示す。図１２の処理ＶＭフラグが立った順に番号を振れば、図１３の結果が得られる。したがって、その順番で、ＶＭに処理制御が割り当てられる。
【００９８】
このように、順次配分処理（固定）では、タイムシェアリングシステム（ＴＳＳ）方式を採用し、実行するＶＭまたはサブＶＭを順に切り替えて、処理を行う。順次配分処理は、例えば、オンライン系の処理（スループットを重視しない処理）に採用することできる。
【００９９】
図１４は、第１の実施形態における順次配分処理（平均分配方式）を説明するための図である。図１４の順次配分処理（平均分配）では、命令時間が一定でない点が図１２の順次配分処理（固定）と異なる。図１４の順次配分処理では、所定回数内で行われる処理の完了時間を、ＣＰＵ処理能力に応じて、なるべく平準化するように処理を行う。なお、図１４では、一例として、ＶＭ（ＶＭ１、ＶＭ２、ＶＭ３、ＶＭ４）の配分処理について説明するが、サブＶＭの配分処理についてもＶＭと同様に行うことができる。
【０１００】
１回目の配分処理において、処理能力合計率値（Ｂ）は、利用能力掛率（Ａ）と同じである。制御部１２は、処理能力合計率値（Ｂ）のうち、最も小さい値のＶＭを検出し、その処理ＶＭフラグを「１」とする。その処理フラグの立ったＶＭが処理対象となる処理ＶＭとなる。処理ＶＭは、命令処理を取得して、実行する。処理ＶＭの処理後、その処理時間＝５を処理時間合計（Ｃ）に加算する。
【０１０１】
２回目の配分処理において、制御部１２は、各ＶＭの利用能力掛率（Ａ）に前回の処理時間合計（Ｃ）を乗じて、処理能力合計率値（Ｂ）を算出する。このとき、前回の処理時間合計（Ｃ）の値が０の場合、制御部１２は、各ＶＭの利用能力掛率（Ａ）に「１」を乗じて、処理能力合計率値（Ｂ）を算出する。制御部１２は、処理能力合計率値（B）のうち、最も小さい値のＶＭを検出し、その処理ＶＭフラグを「１」とする。その処理フラグの立ったＶＭが処理対象となる処理ＶＭとなる。処理ＶＭは、命令処理を取得して、実行する。処理ＶＭの処理後、その処理時間＝５を処理時間合計（Ｃ）に加算する。
【０１０２】
３回目の配分処理において、制御部１２は、各ＶＭの利用能力掛率（Ａ）に前回の処理時間合計（Ｃ）を乗じて、処理能力合計率値（Ｂ）を算出する。制御部１２は、処理能力合計率値（Ｂ）のうち、最も小さい値のＶＭを検出し、その処理ＶＭフラグを「１」とする。その処理フラグの立ったＶＭが処理対象となる処理ＶＭとなる。処理ＶＭは、命令処理を取得して、実行する。処理ＶＭの処理後、その処理時間＝６を処理時間合計（Ｃ）に加算する。
【０１０３】
４回目以降の配分処理は、上記の処理が繰り返される。この処理の結果は、図１５に示される。なお、９回目の処理において、最も小さい処理能力合計率値は、ＶＭ３とＶＭ４の処理能力合計率値で同じ値である。この場合、最も優先度の高いＶＭが処理ＶＭとして設定される。したがって、９回目の処理において、ＶＭ４が処理ＶＭとなる。
【０１０４】
図１５は、図１４で示した順次配分処理（平均分配方式）の結果を示す。図１４の処理ＶＭフラグが立った順に番号を振れば、図１５の結果が得られる。したがって、その順番で、ＶＭに処理制御が割り当てられる。
【０１０５】
図１６は、第１の実施形態における順次配分処理のフローの一例を示す。図１６のフローは、図１２−図１５で説明した順次配分処理のフローである。図１６のフローが図１１のＳ３２の処理として読み出された場合、制御部１２は、ＶＭ単位で図１６のフローを実行する。また、図１６のフローが図１１のＳ２７の処理として読み出された場合、制御部１２はサブＶＭ単位で図１６のフローを実行する。
【０１０６】
まず、制御部１２は、予め設定された情報に基づいて、能力下限値適用処理を行うか否かを判定する（Ｓ４１）。能力下限値適用処理（Ｓ４２）については、後述する。能力下限値適用処理を行わない場合（Ｓ４１で「Ｎｏ」）、制御部１２は、Ｓ３１で用いた各ＶＭ割当情報iまたはＳ２６で用いた各サブＶＭ割当情報ijから「システム利用方式」を読み出す。
【０１０７】
「システム利用方式」に「ＡＵＴＯ（またはＦＲＥＥ）」が設定されている場合、制御部１２は、ＡＵＴＯ設定により使用可能な最大能力制限値を、ＣＰＵ配分値に設定する（Ｓ４４）。
【０１０８】
具体的には、ＶＭ単位での配分処理の場合、制御部１２は、１００（％）−（ＦＩＸ設定された未使用中のＶＭのＣＰＵ配分値）×ｈ（ｈ：整数）の値を、「最大能力制限値」として処理順情報の制御情報に設定する。ｈは、ＦＩＸ設定された未使用中のＶＭの数である。それから、制御部１２は、その「最大能力制限値」を、割当作業領域３９に展開されたＶＭ割当情報の「ＣＰＵ配分値」５３及び処理順情報の「ＣＰＵ配分値」８３に設定する。これにより、ＡＵＴＯ設定されたＶＭは、そのＦＩＸ設定された使用中でないＶＭのＣＰＵ処理能力を使うことができる。
【０１０９】
また、サブＶＭ単位での配分処理の場合、制御部１２は、１００（％）−（ＦＩＸ設定された未使用中のサブＶＭのＣＰＵ配分値）×ｈ（ｈ：整数）の値を、「最大能力制限値」として処理順情報の制御情報に設定する。ｈは、ＦＩＸ設定された未使用中のＶＭの数である。それから、制御部１２は、その「最大能力制限値」を、割当作業領域３９に展開されたサブＶＭ割当情報の「ＣＰＵ配分値」７３及びＶＭ割当情報に含まれる再分割情報６１の「ＣＰＵ配分値」６４に設定する。これにより、ＡＵＴＯ設定されたサブＶＭは、そのＦＩＸ設定された使用中でないサブＶＭのＣＰＵ処理能力を使うことができる。
【０１１０】
Ｓ４４の処理が終了した場合、またはＳ４３において「システム利用方式」に「ＦＩＸ」が設定されている場合、制御部１２は、最小の処理能力合計率値を有するＶＭ（またはサブＶＭ）を取得する（Ｓ４５）。Ｓ４５において取得したＶＭ（またはサブＶＭ）が複数存在している場合（Ｓ４６で「Ｙｅｓ」）、制御部１２は、その取得したＶＭ（またはサブＶＭ）のうち最も優先度が高いものを取得する（Ｓ４７）。
【０１１１】
制御部１２は、Ｓ４６またはＳ４７で取得したＶＭ（または処理サブＶＭ）を処理ＶＭ（または処理サブＶＭ）として確定する（Ｓ４８）。
それから、制御部１２は、処理順情報８０の制御情報に含まれる配分方式が平均分配方式か否かを判定する（Ｓ４９）。ここで、制御部１２は、処理順情報８０の制御情報に「平均分配方式」が有効であるか否かを判断することにより、配分方式が平均分配方式か否かを判定する。
【０１１２】
Ｓ４９において、配分方式が平均分配方式でないと判定した場合（Ｓ４９で「Ｎｏ」）、制御部１２は、予め設定された固定命令処理時間を取得する（Ｓ５０）。Ｓ４９において、配分方式が平均分配方式であると判定した場合（Ｓ４９で「Ｙｅｓ」）、制御部１２は、命令時間テーブル４０から、確定した処理ＶＭ（またはサブＶＭ）をキーして、命令処理時間を取得する（Ｓ５１）。
【０１１３】
制御部１２は、処理ＶＭ（または処理サブＶＭ）に、当該命令処理を実行させるように制御する（Ｓ５２）。
制御部１２は、利用能力掛率に、前回の処理時間合計を乗じて、ＶＭ（またはサブＶＭ）毎に処理能力合計率値を算出する（Ｓ５３）。制御部１２は、処理ＶＭ（またはサブＶＭ）が実行した命令処理時間を処理時間合計に反映する（Ｓ５４）。
【０１１４】
これにより、図１２−図１５で説明したように、処理ＶＭフラグが立った順で、ＶＭまたはサブＶＭに実行させる処理が配分される。上記では、命令制御方式が順次配分処理である場合について説明したが、命令制御方式は順次配分処理だけでなく、例えば、連続分配方式も採用することができる。以下では、命令制御方式が連続配分処理である場合について説明する。
【０１１５】
図１７は、第１の実施形態における連続配分処理のフローの一例を示す。連続配分処理とは、１回前に実施したＶＭ（またはサブＶＭ）に再度処理を実施させるように、連続して処理を割り当てる処理をいう。図１７のフローは、図１６のフローにＳ６１−Ｓ６３を追加したものである。
【０１１６】
図１７のフローが図１１のＳ３２の処理として読み出された場合、制御部１２は、ＶＭ単位で図１７のフローを実行する。また、図１７のフローが図１１のＳ２７の処理として読み出された場合、制御部１２はサブＶＭ単位で図１７のフローを実行する。
【０１１７】
ＶＭ単位での配分処理の場合、Ｓ５４の処理後、割当作業領域３９に展開されたＶＭ割当情報iの「連続配分」５５の内容がＯＮであれば、制御部１２は、Ｓ５２において処理ＶＭとして設定されたＶＭに、当該命令処理を実行させるように制御する（Ｓ６２）。制御部１２は、処理ＶＭが実行した命令処理時間を処理時間合計に反映する（Ｓ６３）。
【０１１８】
サブＶＭ単位での配分処理の場合、Ｓ５３の処理後、割当作業領域３９に展開されたサブＶＭ割当情報ijの「連続配分」７５の内容がＯＮであれば、制御部１２は、次の処理を行う。すなわち、制御部１２は、Ｓ５２において処理サブＶＭとして設定されたサブＶＭに、当該命令処理を実行させるように制御する（Ｓ６２）。制御部１２は、処理サブＶＭが実行した命令処理時間を処理時間合計に反映する（Ｓ６３）。なお、Ｓ６２、Ｓ６３は、処理環境に応じて随時繰り返すことができる。
【０１１９】
このように、連続配分処理では、ラウンドロビン方式を採用している。すなわち、連続配分処理では、主として連続命令で処理する。そして、１つのＶＭまたはサブＶＭにおいて、命令待ち行列が混んでいる場合には、例えば、２命令連続処理を行ってもよい。また、命令待ち行列が空いているときは、例えば、１０命令連続処理を行ってもよい。このように、全体のシステムの負荷に応じて、処理量を変えることができる。連続配分処理は、バッチ系の処理（スループットを重視する処理）に採用することができる。
【０１２０】
ここで、図１６または図１７のＳ４１において、「Ｙｅｓ」へ進んだ場合、能力下限値適用処理が実行される。以下では、図１８を用いて、能力下限値適用処理について説明する。
【０１２１】
図１８は、第１の実施形態における能力下限値適用処理を説明するための図である。図１８では、一例として、ＶＭ（ＶＭ５、ＶＭ６、ＶＭ７）の能力下限値適用処理について説明するが、サブＶＭの能力下限値適用処理についてもＶＭと同様に行うことができる。
【０１２２】
例えば、ＶＭ５が、使用状態で、ＣＰＵ配分値４０％、ＡＵＴＯ設定であるとする。ＶＭ６が、使用状態で、ＣＰＵ配分値３０％、ＦＩＸ設定であるとする。ＶＭ７が、未使用状態で、ＣＰＵ配分値２０％、ＦＩＸ設定であるとする。
【０１２３】
能力下限値適用処理が適用されない場合、ＡＵＴＯ設定されたＶＭ５は、未使用のＶＭ７に配分されるＣＰＵ配分値の分をＶＭ５自身のＣＰＵ配分値に加えて、処理を行う。
一方で、能力下限値適用処理が適用される場合、ＶＭ７が未使用状態であっても、ＶＭ７に対しては「能力下限値」に設定された最低限のＣＰＵ配分値が確保されている。したがって、ＡＵＴＯ設定されたＶＭ５は、未使用状態のＶＭ７に割り当てられた「能力下限値」の分のＣＰＵ配分値を使用することができない。
【０１２４】
図１９は、能力下限値適用処理（Ｓ４２）の詳細フローの一例を示す。図１６または図１７のＳ４１において、「Ｙｅｓ」へ進んだ場合、制御部１２は、能力下限値適用処理を実行する（Ｓ４２）。ここでは、まず、制御部１２は、各ＶＭ割当情報iまたはサブＶＭ割当情報ijから「システム利用方式」を読み出す。
【０１２５】
「システム利用方式」に「ＡＵＴＯ（またはＦＲＥＥ）」が設定されている場合（Ｓ７１で「Ｙｅｓ」）、制御部１２は、次の処理を行う（Ｓ７２）。すなわち、ＶＭ単位での配分処理の場合、制御部１２は、ＶＭ割当情報iから「能力下限値」５６を取得する。また、サブＶＭ単位での配分処理の場合、制御部１２は、サブＶＭ割当情報ijから「能力下限値」７６を取得する。
【０１２６】
制御部１２は、１００（％）−能力下限値×ｐの値を、「最大能力制限値」として処理順情報８０の制御情報に設定する（Ｓ７３）。ここで、ｐは、「能力下限値」に値が設定されているＶＭまたはサブＶＭの数を表す。
【０１２７】
この「最大能力制限値」の設定がされている場合、図１６または図１７のＳ４４において、制御部１２は、処理順情報８０の制御情報から「最大能力制限値」を取得し、次の処理を行う。
【０１２８】
すなわち、ＶＭ単位での配分処理の場合、制御部１２は、取得した「最大能力制限値」−（ＦＩＸ設定された未使用中のＶＭのＣＰＵ配分値）×ｈの値を、新たな「最大能力制限値」として処理順情報の制御情報に設定する。それから、制御部１２は、その「最大能力制限値」を、割当作業領域３９に展開されたＶＭ割当情報の「ＣＰＵ配分値」５３及び処理順情報の「ＣＰＵ配分値」８３に設定する。これにより、能力下限値の設定されたサブＶＭの使用するＣＰＵ処理能力を確保しつつ、ＡＵＴＯ設定されたＶＭは、そのＦＩＸ設定された使用中でないＶＭのＣＰＵ処理能力を使うことができる。
【０１２９】
また、サブＶＭ単位での配分処理の場合、制御部１２は、取得した「最大能力制限値」−（ＦＩＸ設定された未使用中のサブＶＭのＣＰＵ配分値）×ｈの値を、新たな「最大能力制限値」として処理順情報の制御情報に設定する。それから、制御部１２は、その「最大能力制限値」を、割当作業領域３９に展開されたサブＶＭ割当情報の「ＣＰＵ配分値」７３及びＶＭ割当情報に含まれる再分割情報６１の「ＣＰＵ配分値」６４に設定する。これにより、能力下限値の設定されたサブＶＭの使用するＣＰＵ処理能力を確保しつつ、ＡＵＴＯ設定されたサブＶＭは、そのＦＩＸ設定された使用中でないサブＶＭのＣＰＵ処理能力を使うことができる。
【０１３０】
このように本実施形態によれば、ユーザ毎に配分した処理能力の範囲で、ユーザ毎の複数の仮想計算機資源を有効利用することができる。すなわち、各ユーザが、ＣＰＵ能力に関してＦＲＥＥ設定がされたサブＶＭと上限設定がされたサブＶＭを利用する場合であっても、ＶＭＭ制御部７は、ユーザ毎に配分した処理能力の範囲で、ユーザ毎の複数の仮想計算機のＣＰＵ処理能力を制御できる。また、サブＶＭのＣＰＵの処理能力の配分に関してＦＲＥＥ設定がされていたとしても、各ユーザに配分されたＣＰＵの処理能力を超えて、ＣＰＵの処理能力を使用することができなくなる。また、処理演算能力の下限が設定されたサブＶＭが未使用であっても、そのサブＶＭに配分された処理演算能力は確保されているので、そのサブＶＭを使用したいときには随時使用することができる。
【０１３１】
次に、第２の実施形態について説明する。第２の実施形態では、マルチプロセッサを用いた計算機に第１の実施形態を適用した場合について説明する。なお、第２の実施形態において、第１の実施形態と同一の構成、機能、処理等については同一の符号を付し、その説明を省略する。
【０１３２】
図２０は、第２の実施形態における計算機１のハードウェア２の構成ブロック図の一例である。図２０の計算機１のハードウェア２は、図４の制御部１２を、制御部１２ａに置き換えたものである。制御部１２ａは、複数のＣＰＵを含むマルチプロセッサシステムである。
【０１３３】
図２１は、第２の実施形態における計算機１の機能ブロックの一例を示す。図２１の計算機１は、図５の配分処理部３２を、ＣＰＵ割当／配分処理部３２ａに置き換えたものである。ＣＰＵ割当／配分処理部３２ａは、サブＶＭ単位での配分処理の場合、当該処理を行っているＣＰＵ以外のＣＰＵに対して、サブＶＭ単位での配分処理を割当てる。そのサブＶＭ単位での配分処理を割り当たれたＣＰＵが、そのサブＶＭ単位での配分処理を実行する。
【０１３４】
命令時間取得部３３、作業領域更新部３４、履歴更新部３５は、サブＶＭ単位での配分処理の場合に実行するＣＰＵが、ＣＰＵ割当／配分処理部３２ａで処理が割り当てられたＣＰＵに変更される以外は、第１の実施形態で説明した内容と同様である。
【０１３５】
図２２は、第２の実施形態における制御部１２ａによって実行される処理の配分手順を示すフローチャートの一例である。計算機１の起動時に、制御部１２ａのうちの第１ＣＰＵ１２ａ−１は、記憶装置からＶＭＭ３のプログラムを読み出して、そのＶＭＭ３のプログラムを実行する。
【０１３６】
すると、第１ＣＰＵ１２ａ−１は、ＶＭＭ３のプログラムに基づいて、作業領域設定部３１、配分処理部３２、命令時間取得部３３、作業領域更新部３４、履歴更新部３５として機能し、次の処理を行う。すなわち、第１ＣＰＵ１２ａ−１は、図１０で説明した割当作業領域３９に展開されたＶＭ制御情報（ＶＭ割当制御情報３７、再分割割当情報３８）と、処理順情報８０を用いて、図２２に示すフローを実行する。
【０１３７】
まず、第１ＣＰＵ１２ａ−１は、割当作業領域３９に展開された処理順情報８０のうち、最も小さいＣＰＵ配分値を有する処理順情報を取得する（Ｓ２１）。なお、Ｓ２１において、本実施形態では、ＣＰＵ配分値の最も小さいＶＭから処理を行うが、これに限定されない。例えば、第１ＣＰＵ１２ａ−１は、ＣＰＵ配分値の最も大きいＶＭから処理を行うようにしてもよい。
【０１３８】
次に、第１ＣＰＵ１２ａ−１は、Ｓ２１で取得した処理順情報の「ＶＭi名」を参照し、ＶＭ割当制御情報３７から、その「ＶＭi名」によって関係付けられているＶＭ割当情報iを取得する（Ｓ２２）。
【０１３９】
第１ＣＰＵ１２ａ−１は、Ｓ２２で取得したＶＭ割当情報iの「再分割数」に値が設定されているか、または設定されている「再分割数」が２以上であるかを判定する（Ｓ２３）。Ｓ２２で取得したＶＭ割当情報iの「再分割数」に値が設定されていない場合、または設定されている「再分割数」が２未満である場合（Ｓ２３で「Ｎｏ」）、第１ＣＰＵ１２ａ−１は、Ｓ３１の処理を行う。Ｓ３１以降の処理については、図１１の処理と同様なので、省略する。
【０１４０】
Ｓ２２で取得したＶＭ割当情報iの「再分割数」に値が設定されている場合、または設定されている「再分割数」が２以上である場合（Ｓ２３で「Ｙｅｓ」）、第１ＣＰＵ１２ａ−１は、次の処理を行う。すなわち、第１ＣＰＵ１２ａ−１は、ＯＳの制御に基づいて、制御部１２ａのうちの第１ＣＰＵ１２ａ−１以外のいずれかのＣＰＵ（以下、第２ＣＰＵ１２ａ−２という）を選択する。すると、第２ＣＰＵ１２ａ−２へ処理の制御が遷移する（Ｓ８１）。
【０１４１】
図２３は、Ｓ８１の処理の詳細の一例を示す。第２ＣＰＵ１２ａ−２は、Ｓ２４ａ−Ｓ３０ａを実行する。Ｓ２４ａ−Ｓ３０ａは、図１１のＳ２４−Ｓ３０の処理と同様である。Ｓ３０ａの処理が終了すると、第１ＣＰＵ１２ａ−１へ処理の制御が戻る。
【０１４２】
これにより、第１の実施形態の効果に加えて、さらに、第１ＣＰＵ１２ａ−１に処理が集中するのを防止することができるので、第１ＣＰＵ１２ａ−１の処理負担の軽減を図ることができる。また、サブＶＭ単位の処理を複数のＣＰＵに処理させることができるので、処理の高速化を図ることができる。
【０１４３】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０１４４】
上記実施形態に関し、更に以下の付記を開示する。
（付記１）  ユーザ毎に、使用可能な処理演算能力の上限を設定する第１設定部と、
前記ユーザ毎に、複数の仮想計算機を設定する第２設定部と、
前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で、該ユーザ毎の前記複数の仮想計算機に対して該処理演算能力を配分する配分処理部と、
を備えることを特徴とする計算機。
（付記２）
前記第１設定部は、前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で該ユーザ毎に少なくとも１つの仮想計算機を上位仮想計算機として設定し、
前記第２設定部は、前記設定した上位仮想計算機の配下に、複数の仮想計算機を下位仮想計算機として設定する
ことを特徴とする付記１に記載の計算機。
（付記３）
前記第２設定部は、前記上位仮想計算機に配分された前記処理演算能力の範囲で、該上位仮想計算機の配下にある各仮想計算機に、該処理演算能力の上限を設定し、
前記配分処理部は、前記上位仮想計算機の配下にあるいずれかの下位仮想計算機について、該下位仮想計算機に配分された処理演算能力の上限の制限を解除する制限解除設定がされている場合、同一の上位仮想計算機の配下において、前記処理演算能力の上限の設定された、使用中でない下位仮想計算機に配分された前記処理演算能力を、前記制限解除設定がされた前記下位仮想計算機に配分する
ことを特徴とする付記２に記載の計算機。
（付記４）
前記第２設定部は、いずれかの前記下位仮想計算機に該処理演算能力の下限を設定し、
前記配分処理部は、前記下限が設定された前記下位仮想計算機へ配分する処理演算能力を確保すると共に、同一の上位仮想計算機の配下において、前記処理演算能力の上限の設定された、使用中でない下位仮想計算機に配分された前記処理演算能力のうち前記確保された処理演算能力を超える範囲の処理演算能力を、前記制限解除設定がされた下位仮想計算機に配分する
ことを特徴とする付記３に記載の計算機。
（付記５）
前記配分処理部は、
前記複数の上位仮想計算機に対して、前記処理演算能力を配分する第１制御部と、
前記上位仮想計算機の配下にある複数の仮想計算機に対して、前記処理演算能力を配分する第２制御部と、
を備えることを特徴とする付記２〜４のうちいずれか１項に記載の計算機。
（付記６）
前記配分処理部は、前記上位仮想計算機または前記下位仮想計算機に配分された前記処理演算能力に応じた順番で、前記上位仮想計算機または前記下位仮想計算機に処理実行時間を割り当てる
ことを特徴とする付記２〜５のうちいずれか１項に記載の計算機。
（付記７）
前記配分処理部は、前記処理実行時間を割り当てた前記上位仮想計算機または前記下位仮想計算機に、連続して前記処理実行時間を割り当てる
ことを特徴とする付記６に記載の計算機。
（付記８）  コンピュータに、
ユーザ毎に、使用可能な処理演算能力の上限を設定し、
前記ユーザ毎に、複数の仮想計算機を設定し、
前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で、該ユーザ毎の前記複数の仮想計算機に対して該処理演算能力を配分する
処理を実行させることを特徴とする複数の仮想計算機を制御する仮想計算機制御プログラム。
（付記９）
ユーザ毎に、使用可能な処理演算能力の上限を設定する場合、前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で該ユーザ毎に少なくとも１つの仮想計算機を上位仮想計算機として設定し、
前記ユーザ毎に、複数の仮想計算機を設定する場合、前記設定した上位仮想計算機の配下に、複数の仮想計算機を下位仮想計算機として設定する
ことを特徴とする付記８に記載の仮想計算機制御プログラム。
（付記１０）
前記ユーザ毎に、複数の仮想計算機を設定する場合、前記上位仮想計算機に配分された前記処理演算能力の範囲で、該上位仮想計算機の配下にある各仮想計算機に、該処理演算能力の上限を設定し、
前記複数の仮想計算機に対して該処理演算能力を配分する場合において、前記上位仮想計算機の配下にあるいずれかの下位仮想計算機について、該下位仮想計算機に配分された処理演算能力の上限の制限を解除する制限解除設定がされている場合、同一の上位仮想計算機の配下において、前記処理演算能力の上限の設定された、使用中でない下位仮想計算機に配分された前記処理演算能力を、前記制限解除設定がされた前記下位仮想計算機に配分する
ことを特徴とする付記９に記載の仮想計算機制御プログラム。
（付記１１）
前記ユーザ毎に、複数の仮想計算機を設定する場合、いずれかの前記下位仮想計算機に該処理演算能力の下限を設定し、
前記複数の仮想計算機に対して該処理演算能力を配分する場合、前記下限が設定された前記下位仮想計算機へ配分する処理演算能力を確保すると共に、同一の上位仮想計算機の配下において、前記処理演算能力の上限の設定された、使用中でない下位仮想計算機に配分された前記処理演算能力のうち前記確保された処理演算能力を超える範囲の処理演算能力を、前記制限解除設定がされた下位仮想計算機に配分する
ことを特徴とする付記１０に記載の仮想計算機制御プログラム。
（付記１２）
前記複数の仮想計算機に対して該処理演算能力を配分する場合、
第１制御部に、前記複数の上位仮想計算機に対して、前記処理演算能力を配分する処理をさせ、
第２制御部に、前記上位仮想計算機の配下にある複数の仮想計算機に対して、前記処理演算能力を配分させる
ことを特徴とする付記９〜１１のうちいずれか１項に記載の仮想計算機制御プログラム。
（付記１３）
前記複数の仮想計算機に対して該処理演算能力を配分する場合、前記上位仮想計算機または前記下位仮想計算機に配分された前記処理演算能力に応じた順番で、前記上位仮想計算機または前記下位仮想計算機に処理実行時間を割り当てる
ことを特徴とする付記９〜１２のうちいずれか１項に記載の仮想計算機制御プログラム。
（付記１４）
前記処理実行時間を割り当てた前記上位仮想計算機または前記下位仮想計算機に、連続して前記処理実行時間を割り当てる
ことを特徴とする付記１３に記載の仮想計算機制御プログラム。
（付記１５）  コンピュータが実行する、複数の仮想計算機を制御する仮想計算機制御方法であって、
前記コンピュータは、
ユーザ毎に、使用可能な処理演算能力の上限を設定し、
前記ユーザ毎に、複数の仮想計算機を設定し、
前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で、該ユーザ毎の前記複数の仮想計算機に対して該処理演算能力を配分する
処理を実行することを特徴とする仮想計算機制御方法。
（付記１６）
前記コンピュータは、
ユーザ毎に、使用可能な処理演算能力の上限を設定する場合、前記ユーザ毎に設定されている前記処理演算能力の上限の範囲で該ユーザ毎に少なくとも１つの仮想計算機を上位仮想計算機として設定し、
前記ユーザ毎に、複数の仮想計算機を設定する場合、前記設定した上位仮想計算機の配下に、複数の仮想計算機を下位仮想計算機として設定する
ことを特徴とする付記１５に記載の仮想計算機制御方法。
（付記１７）
前記コンピュータは、
前記ユーザ毎に、複数の仮想計算機を設定する場合、前記上位仮想計算機に配分された前記処理演算能力の範囲で、該上位仮想計算機の配下にある各仮想計算機に、該処理演算能力の上限を設定し、
前記複数の仮想計算機に対して該処理演算能力を配分する場合において、前記上位仮想計算機の配下にあるいずれかの下位仮想計算機について、該下位仮想計算機に配分された処理演算能力の上限の制限を解除する制限解除設定がされている場合、同一の上位仮想計算機の配下において、前記処理演算能力の上限の設定された、使用中でない下位仮想計算機に配分された前記処理演算能力を、前記制限解除設定がされた前記下位仮想計算機に配分する
ことを特徴とする付記１６に記載の仮想計算機制御方法。
（付記１８）
前記コンピュータは、
前記ユーザ毎に、複数の仮想計算機を設定する場合、いずれかの前記下位仮想計算機に該処理演算能力の下限を設定し、
前記複数の仮想計算機に対して該処理演算能力を配分する場合、前記下限が設定された前記下位仮想計算機へ配分する処理演算能力を確保すると共に、同一の上位仮想計算機の配下において、前記処理演算能力の上限の設定された、使用中でない下位仮想計算機に配分された前記処理演算能力のうち前記確保された処理演算能力を超える範囲の処理演算能力を、前記制限解除設定がされた下位仮想計算機に配分する
ことを特徴とする付記１７に記載の仮想計算機制御方法。
（付記１９）
前記コンピュータは、
前記複数の仮想計算機に対して該処理演算能力を配分する場合、
第１制御部に、前記複数の上位仮想計算機に対して、前記処理演算能力を配分する処理をさせ、
第２制御部に、前記上位仮想計算機の配下にある複数の仮想計算機に対して、前記処理演算能力を配分させる
ことを特徴とする付記１６〜１８のうちいずれか１項に記載の仮想計算機制御方法。
（付記２０）
前記コンピュータは、
前記複数の仮想計算機に対して該処理演算能力を配分する場合、前記上位仮想計算機または前記下位仮想計算機に配分された前記処理演算能力に応じた順番で、前記上位仮想計算機または前記下位仮想計算機に処理実行時間を割り当てる
ことを特徴とする付記１６〜１９のうちいずれか１項に記載の仮想計算機制御方法。
【符号の説明】
【０１４５】
１      計算機
２      ハードウェア
３      ＶＭＭ
４      ＶＭ
５      ＶＭ設定部
６      サブＶＭ設定部
７      ＶＭＭ制御部
１２，１２ａ  制御部
１２ａ−１  第１ＣＰＵ
１２ａ−２  第２ＣＰＵ
３１    作業領域設定部
３２    配分処理部
３２ａ  ＣＰＵ割当／配分処理部
３３    命令時間取得部
３４    作業領域更新部
３５    履歴更新部
３６    ＶＭ制御情報格納部
３７    ＶＭ割当制御情報
３８    再分割割当情報
３９    割当作業領域
４０    命令時間テーブル
【図１】
0005640844.tif 000002
【図２】
0005640844.tif 000003
【図３】
0005640844.tif 000004
【図４】
0005640844.tif 000005
【図５】
0005640844.tif 000006
【図６】
0005640844.tif 000007
【図７】
0005640844.tif 000008
【図８】
0005640844.tif 000009
【図９】
0005640844.tif 000010
【図１０】
0005640844.tif 000011
【図１１】
0005640844.tif 000012
【図１２】
0005640844.tif 000013
【図１３】
0005640844.tif 000014
【図１４】
0005640844.tif 000015
【図１５】
0005640844.tif 000016
【図１６】
0005640844.tif 000017
【図１７Ａ】
0005640844.tif 000018
【図１７Ｂ】
0005640844.tif 000019
【図１８】
0005640844.tif 000020
【図１９】
0005640844.tif 000021
【図２０】
0005640844.tif 000022
【図２１】
0005640844.tif 000023
【図２２】
0005640844.tif 000024
【図２３】
0005640844.tif 000025