(57)【要約】      （修正有）【課題】論理区画（ＬＰＡＲ）数の増加に伴って論理ＣＰＵ数が増加してもハイパバイザが物理ＣＰＵ資源を有効に利用できるＣＰＵ割り当て方式を提供する。【解決手段】ＬＰＡＲ２００〜２０３及び論理ＣＰＵ３００〜３０７と物理ＣＰＵ００１〜００４をＣＰＵグループ１００、１０１にグル−ピングを行い、ＣＰＵグループ１００、１０１内の物理ＣＰＵ００１〜００４に割り当てる論理ＣＰＵ３００〜３０７を同じグル−プ内のＬＰＡＲ２００〜２０３の論理ＣＰＵ３００〜３０７から選択する。【選択図】図１
2011253334.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ＣＰＵと、複数のＬＰＡＲと、前記ＬＰＡＲを構成する少なくとも１つ以上の論理ＣＰＵに前記物理ＣＰＵを時分割共有させて割り当てるハイパバイザとを備える仮想計算機において、
前記ハイパバイザは、
前記物理ＣＰＵの識別子である物理ＣＰＵ番号、及び前記物理ＣＰＵに割り当てるＣＰＵグル−プの識別子であるＣＰＵグループ番号を関連付けて保持する物理ＣＰＵ管理情報と、
前記ＬＰＡＲの識別子を示すＬＰＡＲ番号、前記ＬＰＡＲを構成する論理ＣＰＵの数、及び前記ＬＰＡＲに割り当てる前記ＣＰＵグル−プの識別子であるＣＰＵグループ番号を関連付けて保持するＬＰＡＲ管理情報とを有し、
前記ハイパバイザは、前記ＬＰＡＲをアクティベイトするとき、
前記ＣＰＵグル−プ毎に、前記ＣＰＵグル−プを割り当てたＬＰＡＲを構成する前記論理ＣＰＵのエントリを作成し、
前記論理ＣＰＵが構成するＬＰＡＲのＬＰＡＲ番号、前記論理ＣＰＵの前記ＬＰＡＲ内の識別子である論理ＣＰＵ番号、及び前記論理ＣＰＵの状態を前記エントリ毎に関連付けて論理ＣＰＵ管理情報として管理し、
前記論理ＣＰＵに前記物理ＣＰＵを割り当てる際、同じＣＰＵグループ番号に属する物理ＣＰＵを時分割共有させて、同じＣＰＵグループ番号に属する論理ＣＰＵに割り当てることを特徴とする仮想計算機。
【請求項２】
前記ハイパザイザは、前記ＣＰＵグル−プ番号、前記ＣＰＵグル−プを割り当てた物理ＣＰＵの数、前記ＣＰＵグル−プを割り当てたＬＰＡＲを構成する論理ＣＰＵの数、及び前記論理ＣＰＵ管理情報で管理される情報のＣＰＵグループ毎のメモリ上のアドレス、ＬＰＡＲが利用する物理ＣＰＵの利用時間をＣＰＵグル−プ毎に予め設定した配分を示すグループサ−ビス率、及びＣＰＵグループ内のＬＰＡＲが利用した物理ＣＰＵの利用時間を示すグループサ−ビス時間を関連付けて保持するＣＰＵグループ管理情報を有し、
前記ハイパバイザが有するサービス時間監視部は、
前記仮想計算機が有する全ての物理ＣＰＵの総利用時間における前記ＣＰＵグループ毎のグループサービス時間の割合であるグループサービス率実測値を算出し、
前記グループサービス率実測値と前記グループサービス率とを比較して、前記ＣＰＵグループ毎の物理ＣＰＵ資源の過不足を判断し、
前記判断した過不足の状況に応じて、物理ＣＰＵに割り当てるＣＰＵグループを動的に変更することを特徴とする請求項１記載の仮想計算機。
【請求項３】
前記サービス時間監視部によるグループサービス率実測値とグループサービス率との比較において、
前記グループサービス率実測値が前記グループサービス率より大きい場合、前記ＣＰＵグル−プを未割り当ての物理ＣＰＵに、前記ＣＰＵグル−プを割り当て、
前記グループサービス率実測値が前記グループサービス率と等しい場合、前記グループサービス時間をゼロとし、
前記グループサービス率実測値が前記グループサービス率より小さい場合、前記ＣＰＵグル−プを割り当てた物理ＣＰＵのうちの少なくとも１つ以上に対し、前記ＣＰＵグル−プを未割り当てに変更することを特徴とする請求項２記載の仮想計算機。
【請求項４】
前記ＬＰＡＲ管理情報は、ＬＰＡＲに対して割り当てられた物理ＣＰＵ時間の合計を示すＬＰＡＲサ−ビス時間を保持することを特徴とする請求項１記載の仮想計算機。
【請求項５】
前記ハイパザイザのプロセススケジューラは、
前記物理ＣＰＵ管理情報を参照し、
動作している物理ＣＰＵの物理ＣＰＵ番号をインデックスとして、前記物理ＣＰＵ管理情報のエントリを取得し、
前記取得した物理ＣＰＵ管理情報のエントリに含まれるＣＰＵグル−プ番号を参照し、
前記参照したＣＰＵグル−プ番号が定義されていない場合、処理を中断し、
前記参照したＣＰＵグル−プ番号が定義されている場合、前記参照したＣＰＵグル−プ番号をインデックスとして前記ＣＰＵグル−プ管理情報のエントリを取得し、
前記取得したＣＰＵグル−プ管理情報のエントリに含まれる前記論理ＣＰＵ管理情報で管理される情報のＣＰＵグループ毎のメモリ上のアドレスを参照し、
前記参照したアドレスに対応する前記論理ＣＰＵ管理情報のＣＰＵグループを参照し、
前記参照した論理ＣＰＵ管理情報のＣＰＵグループに含まれるエントリのうち、前記論理ＣＰＵの状態がＲＥＡＤＹであるエントリを選択し、
前記エントリの選択が成功した場合、前記論理ＣＰＵ管理テ−ブルのエントリの起動開始時刻に論理ＣＰＵの起動処理９０６を実行するときの時刻を書き込み、論理ＣＰＵ状態をＲＵＮにし、論理ＣＰＵを起動することを特徴とする請求項１記載の仮想計算機。
【請求項６】
前記論理ＣＰＵ管理情報は、前記論理ＣＰＵ上でのゲストプログラム起動開始時刻に対応するタイマ値、及び前記ゲストプログラム終了時刻に対応するタイマ値、とを関連付けて管理することを特徴とする請求項１記載の仮想計算機。
【請求項７】
前記論理ＣＰＵ管理情報において、
前記論理ＣＰＵ上でのゲストプログラム起動開始時刻に対応するタイマ値とは、前記論理ＣＰＵを起動した時刻を示すタイマ値を設定する起動開始時刻であり、
前記ゲストプログラム終了時刻に対応するタイマ値とは、、物理ＣＰＵがゲストＯＳの命令をハイパバイザの介入なしに直接実行するモードであるゲストモ−ドからハイパバイザに移行して前記論理ＣＰＵ動作が終了する時刻を示すタイマ値を設定する起動終了時刻であることを特徴とする請求項６記載の仮想計算機。
【請求項８】
複数の物理ＣＰＵと、複数のＬＰＡＲと、前記ＬＰＡＲを構成する少なくとも１つ以上の論理ＣＰＵに前記物理ＣＰＵを時分割共有させて割り当てるハイパバイザとを備える仮想計算機におけるＣＰＵ割り当て方法であって
前記ハイパバイザは、
前記物理ＣＰＵの識別子である物理ＣＰＵ番号、及び前記物理ＣＰＵに割り当てるＣＰＵグル−プの識別子であるＣＰＵグループ番号を関連付けて保持する物理ＣＰＵ管理情報と、前記ＬＰＡＲの識別子を示すＬＰＡＲ番号、前記ＬＰＡＲを構成する論理ＣＰＵの数、及び前記ＬＰＡＲに割り当てる前記ＣＰＵグル−プの識別子であるＣＰＵグループ番号を関連付けて保持するＬＰＡＲ管理情報とを有し、
前記ＬＰＡＲをアクティベイトするとき、
前記ＣＰＵグル−プ毎に、前記ＣＰＵグル−プを割り当てたＬＰＡＲを構成する前記論理ＣＰＵのエントリを作成し、
前記論理ＣＰＵが構成するＬＰＡＲのＬＰＡＲ番号、前記論理ＣＰＵの前記ＬＰＡＲ内の識別子である論理ＣＰＵ番号、及び前記論理ＣＰＵの状態を前記エントリ毎に関連付けて論理ＣＰＵ管理情報として管理し、
前記論理ＣＰＵに前記物理ＣＰＵを割り当てる際、同じＣＰＵグループ番号に属する物理ＣＰＵを時分割共有させて、同じＣＰＵグループ番号に属する論理ＣＰＵに割り当てることを特徴とするＣＰＵ割り当て方法。
【請求項９】
前記ハイパザイザは、前記ＣＰＵグル−プ番号、前記ＣＰＵグル−プを割り当てた物理ＣＰＵの数、前記ＣＰＵグル−プを割り当てたＬＰＡＲを構成する論理ＣＰＵの数、及び前記論理ＣＰＵ管理情報で管理される情報のＣＰＵグループ毎のメモリ上のアドレス、ＬＰＡＲが利用する物理ＣＰＵの利用時間をＣＰＵグル−プ毎に予め設定した配分を示すグループサ−ビス率、及びＣＰＵグループ内のＬＰＡＲが利用した物理ＣＰＵの利用時間を示すグループサ−ビス時間を関連付けて保持するＣＰＵグループ管理情報を有し、
前記ハイパバイザは、
前記仮想計算機が有する全ての物理ＣＰＵの総利用時間における前記ＣＰＵグループ毎のグループサービス時間の割合であるグループサービス率実測値を算出し、
前記グループサービス率実測値と前記グループサービス率とを比較して、前記ＣＰＵグループ毎の物理ＣＰＵ資源の過不足を判断し、
前記判断した過不足の状況に応じて、物理ＣＰＵに割り当てるＣＰＵグループを動的変更することを特徴とする請求項８記載のＣＰＵ割り当て方法。
【請求項１０】
前記グループサービス率実測値とグループサービス率との比較において、
前記グループサービス率実測値が前記グループサービス率より大きい場合、前記ＣＰＵグル−プを未割り当ての物理ＣＰＵに、前記ＣＰＵグル−プを割り当て、
前記グループサービス率実測値が前記グループサービス率と等しい場合、前記グループサービス時間をゼロとし、
前記グループサービス率実測値が前記グループサービス率より小さい場合、前記ＣＰＵグル−プを割り当てた物理ＣＰＵのうちの少なくとも１つ以上に対し、前記ＣＰＵグル−プを未割り当てに変更することを特徴とする請求項９記載のＣＰＵ割り当て方法。
【請求項１１】
前記ハイパザイザは、
前記物理ＣＰＵ管理情報を参照し、
動作している物理ＣＰＵの物理ＣＰＵ番号をインデックスとして、前記物理ＣＰＵ管理情報のエントリを取得し、
前記取得した物理ＣＰＵ管理情報のエントリに含まれるＣＰＵグル−プ番号を参照し、
前記参照したＣＰＵグル−プ番号が定義されていない場合、処理を中断し、
前記参照したＣＰＵグル−プ番号が定義されている場合、前記参照したＣＰＵグル−プ番号をインデックスとして前記ＣＰＵグル−プ管理情報のエントリを取得し、
前記取得したＣＰＵグル−プ管理情報のエントリに含まれる前記論理ＣＰＵ管理情報で管理される情報のＣＰＵグループ毎のメモリ上のアドレスを参照し、
前記参照したアドレスに対応する前記論理ＣＰＵ管理情報のＣＰＵグループを参照し、
前記参照した論理ＣＰＵ管理情報のＣＰＵグループに含まれるエントリのうち、前記論理ＣＰＵの状態がＲＥＡＤＹであるエントリを選択し、
前記エントリの選択が成功した場合、前記論理ＣＰＵ管理テ−ブルのエントリの起動開始時刻に論理ＣＰＵの起動処理９０６を実行するときの時刻を書き込み、論理ＣＰＵ状態をＲＵＮにし、論理ＣＰＵを起動することを特徴とする請求項８記載のＣＰＵ割り当て方法。
【請求項１２】
論理ＣＰＵに物理ＣＰＵを割り当て論理ＣＰＵ上でゲストプログラムを動作させるときに、ゲストプログラム起動時刻に対応するタイマ値を論理ＣＰＵ管理テ−ブルに設定し、
割り当てていた物理ＣＰＵで割り込みが発生しゲストプログラム動作が中断しハイパバイザに制御が移行するときに、
論理ＣＰＵ終了時刻に対応するタイマ値を論理ＣＰＵ管理テ−ブルに設定し、
（終了時刻−開始時刻）を当該論理ＣＰＵが属するＬＰＡＲに割り当てられているＣＰＵグル−プのグル−プサ−ビス時間に加算することを特徴とする請求項８記載のＣＰＵ割り当て方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機に関し、１台の物理ＣＰＵ上に複数台の論理ＣＰＵを時分割で共有動作させる際のＣＰＵ割り当て方式に関する。
【背景技術】
【０００２】
仮想計算機システムは、ハイパバイザにより物理計算機のＣＰＵ、メモリ、Ｉ／Ｏなどの物理計算機資源を分割または共有して、複数の論理区画（ＬＰＡＲ：Logical PARtition)に割り当て、各ＬＰＡＲでそれぞれ独立してＯＳを動作させるものである。各ＬＰＡＲ上で動作するＯＳのことを、ゲストＯＳと呼び、ゲストＯＳが制御する上位プログラムも含めて、ＬＰＡＲ上で動作するプログラムをゲストプログラムと呼ぶ。対して実計算機で動作するＯＳをベ−シックＯＳとよぶ。
【０００３】
また、ＬＰＡＲに割り当てた物理ＣＰＵ資源をＬＰＡＲの論理ＣＰＵと呼ぶ。
【０００４】
ゲストＯＳは論理的にはベ−シックＯＳとまったく同様に動作するが、物理計算機資源を分割または共有する特性からベ−シックＯＳに比べて性能的に劣る場合がある。
【０００５】
反面、あるひとつのゲストＯＳが使用していない物理計算機資源を、必要とする別のゲストＯＳに割り当てることにより物理計算機資源を有効に利用することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−１０３０９２
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来技術では、物理ＣＰＵを共有する場合、全てのＬＰＡＲで共有モ−ドである全物理ＣＰＵを共有する制御を行っている。このためＬＰＡＲ数の増加に伴って論理ＣＰＵ数が増加すると、ハイパバイザによる論理ＣＰＵの検索および選択処理によるスケジュ−リングオ−バヘッドが増大するため、ハイパバイザが使用する物理ＣＰＵ量が増加し物理ＣＰＵ資源を有効に利用できない。
【課題を解決するための手段】
【０００８】
ＣＰＵグル−プの概念を設け、ＬＰＡＲと物理ＣＰＵにＣＰＵグル−プを割り当てることで、ＬＰＡＲおよび論理ＣＰＵと物理ＣＰＵのグル−ピングを行い、物理ＣＰＵを割り当てる論理ＣＰＵを同じグル−プ内のＬＰＡＲの論理ＣＰＵに限定する。更に、システム全体の物理ＣＰＵ時間の何％をＣＰＵグループに割り当てたかを示すグループサービス率実測値を計算し、システム全体の物理ＣＰＵ時間の何％をＣＰＵグループに割り当てるかをオペレータが指定するグループサービス率とを比較することで、ＣＰＵグループにおける物理ＣＰＵ資源割り当ての過不足を判断し、物理ＣＰＵ資源が過剰になっている、あるＣＰＵグル−プから物理ＣＰＵを開放し、不足している別のＣＰＵ負ル−プに追加する、動的なＣＰＵグル−プ構成変更を、管理テ−ブルのＣＰＵグル−プ番号を変更するだけで簡単に実施する。
【発明の効果】
【０００９】
本発明により、ハイパバイザによる論理ＣＰＵの検索および選択処理によるハイパバイザのスケジュ−リングオ−バヘッドが減り物理ＣＰＵ資源を有効に利用することができる。
【００１０】
更に、実行するゲストプログラムの規模が急に増加するなどして、物理ＣＰＵ資源が不足した場合に柔軟に対応することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明における仮想計算機システムの基本的な構成例を示す説明図。
【図２】ＣＰＵグル−プを管理するためのテ−ブルの初期状態。
【図３】物理ＣＰＵを管理するためのテ−ブルの初期状態。
【図４】ＬＰＡＲを管理するためのテ−ブルの初期状態。
【図５】論理ＣＰＵを管理するためのテ−ブルの初期状態。
【図６】ＣＰＵグル−プおよび物理ＣＰＵの構成を表示および設定する画面。
【図７】図６の設定を反映したＣＰＵグル−プ管理テ−ブル。
【図８】図６の設定を反映した物理ＣＰＵ管理テ−ブル。
【図９】ＬＰＡＲの構成を表示および設定する画面。
【図１０】図９の設定を反映したＬＰＡＲ管理テ−ブル。
【図１１】ＬＰＡＲアクテイベイと後の論理ＣＰＵ管理テ−ブル。
【図１２】論理ＣＰＵ状態コ−ドと状態遷移。
【図１３】物理ＣＰＵをＣＰＵグル−プに対応付ける処理手順。
【図１４】論理ＣＰＵの起動および終了時の処理手順。
【図１５】論理ＣＰＵ終了要因コ−ドと倫理ＣＰＵ状態。
【図１６（ａ）】ＣＰＵグル−プの物理ＣＰＵ数を増減する処理手順の前半。
【図１６（ｂ）】ＣＰＵグル−プの物理ＣＰＵ数を増減する処理手順の後半。
【図１７】グル−プサービス率実測値計算式。
【図１８】予測グル−プサービス率計算式。
【図１９】動的なＣＰＵグル−プ構成変更の例。
【発明を実施するための形態】
【００１２】
以下、発明を適用した実施例について、図面に基づいて説明する。
【００１３】
図１は、本発明における仮想計算機システムの基本的な構成例を示す説明図である。
【００１４】
計算機は、物理ＣＰＵ（００１〜００５）、メモリ０１７、および入出力装置（００６）との接続機能をもつ。当該計算機のメモリの一部に配されるハイパザイザ（０１０）は、ＣＰＵ、メモリ、入出力装置などの計算機資源を分割または共有して論理的な計算機であるＬＰＡＲに割り当て、１個以上の論理的な計算機を生成し制御する。
【００１５】
ハイパバイザは、物理および論理計算機資源を管理するためのリソ−ス管理デ−タ（０１１）、オペレ−タとの入出力を管理する入出力管理部（０１２）、リソ−ス管理デ−タを制御するリソ−ス管理部（０１３）、論理ＣＰＵと１対１に対応し論理ＣＰＵ資源と物理ＣＰＵ資源との対応付けを行う論理ＣＰＵプロセスにより実現される論理ＣＰＵ管理部（０１５）、論理ＣＰＵに対する物理ＣＰＵの割り当て時間であるサ−ビス時間を監視するサ−ビス時間監視プロセスにより実現されるサ−ビス時間監視部（０１６）、論理ＣＰＵプロセスおよびサ−ビス時間監視プロセスのスケジュ−ルを制御するプロセススケジュ−ラ（０１４）から構成される。
【００１６】
リソ−ス管理デ−タ（０１１）には、図２、図３、図４、図５で示す構造の、ＣＰＵグル−プ管理テ−ブル（０２０）、物理ＣＰＵ管理テ−ブル（０３０）、ＬＰＡＲ管理テ−ブル（０４０）、論理ＣＰＵ管理テ−ブル（０５０）が配される。
【００１７】
ハイパバイザ上のＬＰＡＲ数およびＬＰＡＲを構成する論理ＣＰＵ数の最大数はシステムに定義される最大数によって決定する。当該説明図では、ハイパバイザ上に、４台の論理的な計算機であるＬＰＡＲが4個（０１〜２０４）あり、それぞれＬＰＡＲは２個づつの論理ＣＰＵ（３０１〜３０７）から構成されるよう定義づけられている構成を例とする。
【００１８】
物理ＣＰＵ（００１〜００２）、ＬＰＡＲ（２００〜２０１）には、ＣＰＵグル−プ０（１００）が割り当てられており、物理ＣＰＵ（００３〜００４）、ＬＰＡＲ（２０２〜２０３）にはＣＰＵグル−プ１（１０１）が割り当てられている。
【００１９】
図２に示すＣＰＵグル−プ管理テ−ブル（０２０）は、ＣＰＵグル−プの識別子であるＣＰＵグル−プ番号ｉ（０２１）、ＣＰＵグル−プを割り当てた物理ＣＰＵの個数を示す物理ＣＰＵ数（０２２）、ＣＰＵグル−プを割り当てたＬＰＡＲの論理ＣＰＵ数の合計値を示す論理ＣＰＵ数ｉ（０２３）、グル−プサ−ビス率（０２４）、ＬＰＡＲが利用した物理ＣＰＵ時間の合計を示すグル−プサ−ビス時間（０２５）、グル−プ毎に定義される論理ＣＰＵ管理テ−ブル（０５０）のメモリ上のアドレスを保持する論理ＣＰＵ管理テ−ブルアドレス（０２６）を備える。ＣＰＵグループ管理テーブル（０２０）には、システムで定義される最大ＣＰＵグル−プ数と同数の、ＣＰＵグル−プ番号と関連する０２２〜０２６のデータを格納するためのエントリが定義される。
【００２０】
ここで、グル−プサ−ビス率（０２４）とは、ＣＰＵグル−プを割り当てられた１つ以上のＬＰＡＲが利用する物理ＣＰＵ時間の、グル−プ毎の相対的な配分を示している。また、グル−プサ−ビス率（０２４）とは、「システム全体の物理ＣＰＵ時間の何％を、ＣＰＵグループ毎に割り当てるか」を指定するユーザ設定値でもある。
【００２１】
図２では、最大ＣＰＵグル−プ数を２として記述している。物理ＣＰＵまたはＬＰＡＲに対してＣＰＵグル−プの割り当てを実施していない初期状態においては、ハイパバイザには、図２の値を設定する。
【００２２】
図３に示す物理ＣＰＵ管理テ−ブル（０３０）は、物理ＣＰＵの識別子である物理ＣＰＵ番号（０３１）と、物理ＣＰＵに対してオペレ−タ操作よって割り当てられるＣＰＵグル−プ番号ｉｉ（０３２）とを有する。物理ＣＰＵ管理テ−ブル（０３０）は、システムを構成する物理ＣＰＵ数のエントリを持つ。図３では、物理ＣＰＵ数を５として記述している。ＣＰＵグル−プの割り当てを実施していない初期状態においては、ハイパバイザには、図３の値を設定する。
【００２３】
図４に示すＬＰＡＲ管理テ−ブル（０４０）は、ＬＰＡＲの識別子を示すＬＰＡＲ番号ｉ（０４１）、ＬＰＡＲに定義される論理ＣＰＵ数の個数を示す論理ＣＰＵ数ｉｉ（０４２）、ＬＰＡＲに対して割り当てられるＣＰＵグル−プ番号ｉｉｉ（０４３）、ＬＰＡＲに対して割り当てられた物理ＣＰＵ時間の合計を示すＬＰＡＲサ−ビス時間（０４４）を有する。
【００２４】
ＬＰＡＲ管理テ−ブル（０４０）は、システムで定義される最大ＬＰＡＲ数のエントリを持つ。論理ＣＰＵ数ｉｉ（０４１）、ＣＰＵグル−プ番号ｉｉｉ（０４３）は、オペレ−タ操作によって定義される。図４では、最大ＬＰＡＲ数を４として記述している。オペレ−タ操作が行われる前の初期状態においては、ハイパバイザは図４の値を設定する。
【００２５】
図５に示す論理ＣＰＵ管理テ−ブル（０５０）は、論理ＣＰＵの属するＬＰＡＲの番号を示すＬＰＡＲ番号ｉｉ（０５１）、論理ＣＰＵのＬＰＡＲ内の識別子である論理ＣＰＵ番号（０５２）、論理ＣＰＵの状態を示す論理ＣＰＵ状態（０５３）、論理ＣＰＵを起動した時刻を示すタイマ値を設定する起動開始時刻（０５４）、ゲストモ−ドからハイパバイザに移行して論理ＣＰＵ動作が終了する時刻を示すタイマ値を設定する起動終了時刻（０５５）とを備える。
【００２６】
論理ＣＰＵ管理テ−ブル（０５０）の各エントリは、ＬＰＡＲをアクティベイトするときに、ＬＰＡＲ管理テ−ブル（０４０）に定義された論理ＣＰＵ数ｉｉ（０４２）に応じて定義される。アクティベイトされているＬＰＡＲが存在しない初期状態においては、ハイパバイザは図５の値を設定する。
【００２７】
図６は、物理ＣＰＵ構成を変更および確認するための画面の一例を示す。図９は、ＬＰＡＲ構成を変更および確認するための画面の一例を示している。ハイパバイザの入出力制御部（０１２）およびリソ−ス管理部（０１３）を介して、入出力装置（００６）とリソ−ス管理デ−タ（０１１）との間でデ−タを送受信することにより、リソ−ス管理デ−タ（０１１）の定義内容を画面に表示し、画面からの変更をリソ−ス管理デ−タ（０１１）に反映する。
【００２８】
図６のＰｈｙｓｉＣａｌ  ＣＰＵ  Ｇｒｏｕｐ  ＣｏｎｆｉｇｕｒａｔｉｏｎブロックのＧｒｏｕｐ＃フィ−ルド（０６１）は、ＣＰＵグル−プの識別子であるＣＰＵグル−プ番号を、システムで定義される最大ＣＰＵグル−プ数個表示する。図６では、最大ＣＰＵグル−プ数を２個とし、０および１を表示している。
【００２９】
Ｎｕｍ  Ｐ−ＣＰＵフィ−ルド（０６２）は、ＣＰＵグル−プを割り当てる物理ＣＰＵ数を、設定および表示するためのフィ−ルドである。図６では、ＣＰＵグル−プ０を割り当てる物理ＣＰＵ数を２個と設定し、ＣＰＵグル−プ１を割り当てる物理ＣＰＵ数を２個と設定した状況を示している。
【００３０】
ＳＲＶフィ−ルド（０６３）は、ＣＰＵグル−プのサ−ビス率を設定および表示するためのフィ−ルドである。図６では、ＣＰＵグル−プ０のサ−ビス率を６５、ＣＰＵグル−プ１のサ−ビス率を３５と設定した状況を示している。
【００３１】
図６のＰｈｙｓｉＣａｌ  ＣＰＵ  Ｃｏｎｆｉｇｕｒａｔｉｏｎブロックは、前記Ｎｕｍ  Ｐ−ＣＰＵフィ−ルド（０６２）に物理ＣＰＵ数を設定した時に、リソ−ス管理部（０１３）が物理ＣＰＵに対しＣＰＵグル−プ割り当て処理を実施した結果を、表示する。Ｐ−ＣＰＵ＃フィ−ルド（０６４）は物理ＣＰＵ番号を示し、Ｇｒｏｕｐ＃フィ−ルド（０６５）は当該物理ＣＰＵに割り当てたＣＰＵグル−プを表示し、またオペレ−タによる変更も受け付ける。図６では、物理ＣＰＵ０、１にＣＰＵグル−プ０を割り当て、物理ＣＵＰ２、３にＣＰＵグル−プ１を割り当て、物理ＣＰＵ４にはＣＰＵグル−プを割り当てていない状況を示している。
【００３２】
図７、図８は、ハイパバイザの初期状態から図６に示す状況に設定変更された後のＣＰＵグル−プ管理テ−ブル（０２０）、物理ＣＰＵ管理テ−ブル（０３０）の各設定値の変更を示す。
【００３３】
図９の#フィ−ルド（０７１）は、ＬＰＡＲ番号を表示する。Ｇｒｐフィ−ルド（０７２）は、ＬＰＡＲに割り当てるＣＰＵグル−プ番号を変更および表示するフィ−ルドで、Ｐｒｏフィ−ルド（０７３）は、ＬＰＡＲを構成する論理ＣＰＵ数を変更および表示するためのフィ−ルドである。図９では、ＬＰＡＲ１，２に割り当てるＣＰＵグル−プを０に、ＬＰＡＲ３，４に割り当てるＣＰＵグル−プ１に、各ＬＰＡＲを構成する論理ＣＰＵ数を２に設定した後の状況を表示している。
【００３４】
図１０は、ハイパバイザの初期状態から図９に示す状況に設定変更した後の、ＬＰＡＲ管理テ−ブル（０３０）の各設定値の変更を示す。
【００３５】
図１１は、図９の状況でＬＰＡＲ１，２，３，４を順にアクティベイトした後の、論理ＣＰＵ管理テ−ブル（０５０）の変更を示す。論理ＣＰＵ状態（０５３）には、ＲＥＡＤＹを示すコ−ドである２を設定する。論理ＣＰＵ番号（０５２）には、論理ＣＰＵのＬＰＡＲ内の識別子（本実施例では、０または１）を設定する。
【００３６】
図１２に、論理ＣＰＵ状態コ−ドと論理ＣＰＵ状態の対応および状態遷移を示す。ＲＵＮは、物理ＣＰＵを割り当てられている状態を示す。ＲＥＡＤＹは、プロセススケジュ−ラ（０１４）によって物理ＣＰＵが割り当てられればＲＵＮに変わる物理ＣＰＵ割り当て待ち状態を示す。ＨＬＴは、ゲストＯＳによって論理ＣＰＵの動作が一時停止している状態であることを示す。
【００３７】
プロセススケジュ−ラ（０１４）が論理ＣＰＵに対して物理ＣＰＵを割り当て、ゲストプログラムが動作する状態になるとき、論理ＣＰＵ状態はＲＥＡＤＹからＲＵＮ変更される。
【００３８】
図１３は、ハイパバイザ画面のＮｕｍ  Ｐ−ＣＰＵフィ−ルド（０６２）がオペレ−タによって変更されたときに、リソ−ス管理部（０１３）が実行する物理ＣＰＵへのＣＰＵグル−プ割り当て処理を示す。以下、Ｎｕｍ  Ｐ−ＣＰＵフィ−ルド（０６２）設定値をオペレ−タ指定物理ＣＰＵ数、Ｎｕｍ  Ｐ−ＣＰＵフィ−ルドに対応するＣＰＵグル−プ番号（０６１）をオペレ−タ指定ＣＰＵグル−プ番号として、処理手順を示す。
【００３９】
オペレ−タ指定ＣＰＵグル−プ番号をインデックスとして、ＣＰＵグル−プ管理テ−ブル（０２０）のエントリを取得し、ＣＰＵグル−プ管理テ−ブルの物理ＣＰＵ数（０２２）を処理上の一時的な変数Ｎｕｍ  Ｐ-ｃｐｕに代入する（８００）。
【００４０】
物理ＣＰＵ管理テ−ブル（０３０）を先頭から順に参照し(８０１、８０２)、物理ＣＰＵ管理テ−ブル（０３０）のエントリに対して、処理８０３〜８１３を実行する。
【００４１】
物理ＣＰＵ管理テ−ブル（０３０）のエントリのＣＰＵグル−プ番号ｉｉ（０３２）を処理上の一時的な変数ＰｃｐｕＧｒｐに代入し（８０３）、ＮｕｍＰｃｐｕとオペレ−タ指定物理ＣＰＵ数を比較する（８０４）。
【００４２】
８０４にてＮｕｍＰｃｐｕとオペレ−タ指定物理ＣＰＵ数とが一致している場合、処理を終了する（８０４→８１６）。
【００４３】
８０４にてＮｕｍＰｃｐｕがオペレ−タ指定物理ＣＰＵ数よりも大きい場合、処理８０５〜８０７を実行する。
【００４４】
８０４にてＮｕｍＰｃｐｕがオペレ−タ指定物理ＣＰＵ数よりも小さい場合、処理８０８〜８１４を実行する。
【００４５】
まず、８０４にてＮｕｍＰｃｐｕがオペレ−タ指定物理ＣＰＵ数よりも小さい場合の処理８０５〜８０７について、説明する。
【００４６】
ＰｃｐｕＧｒｐとオペレ−タ指定ＣＰＵグル−プ番号とを比較する（８０５）。
【００４７】
ＰｃｐｕＧｒｐとオペレ−タ指定ＣＰＵグル−プ番号とが一致している場合、物理ＣＰＵ管理テ−ブル（０３０）のエントリのＣＰＵグル−プ番号ｉｉ（０３２）に、未定義を示す−１を設定し（８０６）、ＣＰＵグル−プ管理テ−ブル（０２０）のエントリの物理ＣＰＵ数を１減算する（８０７）。例えば、ＮｕｍＰｃｐｕが３、オペレータ指定物理ＣＰＵ数が１の場合、物理ＣＰＵ番号ループ(８０１〜８１５)が２回実行されＣＰＵグループ管理テーブルの物理ＣＰＵ数を１減算する処理が２回実行され、終了時のはＣＰＵグループ管理テーブルの物理ＣＰＵ数はオペレータ指定物理ＣＰＵ数の１になる。
【００４８】
ＰｃｐｕＧｒｐとオペレ−タ指定ＣＰＵグル−プ番号とが一致していない場合、次の物理ＣＰＵ番号を対象とした処理に移行する（８０５→８１５）。
【００４９】
次に、８０４にてＮｕｍＰｃｐｕがオペレ−タ指定物理ＣＰＵ数よりも小さい場合の処理８０８〜８１４について、説明する。
【００５０】
物理ＣＰＵ管理テ−ブル（０３０）を順次参照し、ＣＰＵグル−プ未割り当ての物理ＣＰＵの数をカウントし、処理上の一時的な変数ＮｕｍＮｏＧｒｐに代入する（８０８）。
【００５１】
（ＮｕｍＰｃｐｕ＋ＮｕｍＮｏｇｒｐ）とオペレ−タ指定物理ＣＰＵ数を比較する（８０９）。
【００５２】
（ＮｕｍＰｃｐｕ＋ＮｕｍＮｏｇｒｐ）よりもオペレ−タ指定物理ＣＰＵ数が大きい場合、指定値に対して物理ＣＰＵ資源が不足しているので、その旨を示すメッセ−ジを出力してオペレ−タに注意を喚起し（８１０）、処理を中断する（８１１）。
【００５３】
（ＮｕｍＰｃｐｕ＋ＮｕｍＮｏｇｒｐ）よりもオペレ−タ指定物理ＣＰＵ数のほうが小さい又は等しい場合、、物理ＣＰＵ管理テ−ブル（０３０）のエントリのＣＰＵグル−プ番号ｉｉ（０３２）を代入したＰｃｐｕＧｒｐと、未定義値である−1とを比較する（８１２）。
【００５４】
（８１２）の比較の結果、ＰｃｐｕＧｒｐと、未定義値−１とが一致していれば、物理ＣＰＵ管理テ−ブル（０３０）のエントリの物理ＣＰＵグル−プ番号ｉｉ（０３２）にオペレ−タ指定ＣＰＵグル−プ番号を設定し（８１３）、ＣＰＵグル−プ管理テ−ブル（０２０）のエントリの物理ＣＰＵ数（０２２）を１加算する（８１４）。
【００５５】
（８１２）の比較の結果、ＰｃｐｕＧｒｐと、未定義値−１とが不一致ならば、次の物理ＣＰＵ番号を対象とした処理に移行する（８１２→８１５）。
【００５６】
本フロ−では、オペレ−タ指定物理ＣＰＵ数に応じて物理ＣＰＵ管理テ−ブル（０３０）のエントリのＣＰＵグル−プ番号ｉｉ（０３２）を設定することで、物理ＣＰＵに対するＣＰＵグル−プの割り当てを変更する例を示している。なお、図６の物理ＣＰＵ番号（０６４）に対するＣＰＵグル−プ割り当て（０６５）をオペレ−タが変更した場合には、物理ＣＰＵ番号（０６４）をインデックスとして、物理ＣＰＵ管理テ−ブル（０３０）のエントリを取得し、当該テ−ブルのエントリにＣＰＵグル−プ番号（０６５）の値を設定する処理を実施すればよい。
【００５７】
図１４は、プロセススケジュ−ラ（０１４）による論理ＣＰＵへの、物理ＣＰＵの割り当て処理を示す。プロセススケジュ−ラ（０１４）は、メモリ上に展開され、ハイパバイザの初期化処理が終了したあと、全物理ＣＰＵ上で動作を開始する。
【００５８】
プロセススケジュ−ラ（０１４）は、動作している物理ＣＰＵの識別子である物理ＣＰＵ番号をインデックスとして、物理ＣＰＵ管理テ−ブル（０３０）のエントリを取得する（９００）。
【００５９】
次に、物理ＣＰＵ管理テ−ブル（０３０）のエントリのＣＰＵグル−プ番号ｉｉ（０３２）が未定義値−１であるかを判定する（９１５）。
【００６０】
９１５においてＣＰＵグル−プ番号ｉｉ（０３２）が未定義値−１である場合、物理ＣＰＵをホルト状態にして（９１３、９１４）処理を中断する。
【００６１】
９１５においてＣＰＵグル−プ番号ｉｉ（０３２）が未定義値−１でない場合、ＣＰＵグル−プ番号ｉｉ（０３２）をインデックスとしてＣＰＵグル−プ管理テ−ブル（０２０）のエントリを取得する（９０１）。
【００６２】
次に、ＣＰＵグル−プ管理テ−ブル（０２０）のエントリの、論理ＣＰＵ管理テ−ブルアドレス（０２６）を使用して、論理ＣＰＵ管理テ−ブルを参照する（９０２）。
【００６３】
次に、参照している論理ＣＰＵ管理テ−ブル（０５０）から、論理ＣＰＵ状態（０５３）がＲＥＡＤＹの論理ＣＰＵ管理テ−ブル（０５０）のエントリを選択する（９０３）。
【００６４】
プロセススケジュ−ラ（０１４）は、論理ＣＰＵ管理テ−ブル（０５０）のエントリの選択に成功したかどうかを判断する（９０４）。
【００６５】
９０４においてエントリの選択に失敗したと判断した場合、物理ＣＰＵをホルト状態にして（９１３、９１４）処理を中断する。なお、割り込みの発生によってホルト状態が解除されたならば、スケジュ−ラの先頭処理（９００）に戻って、物理ＣＰＵの割り当て処理を継続する。
【００６６】
９０４においてエントリの選択に成功したと判断した場合、論理ＣＰＵ管理テ−ブル（０５０）のエントリの起動開始時刻（０５４）に論理ＣＰＵの起動処理９０６を実行するときの時刻を書き込み、論理ＣＰＵ状態（０５３）をＲＵＮにし（９０５）、論理ＣＰＵを起動する（９０６）。なお、物理ＣＰＵはゲストＯＳの命令をハイパバイザの介入なしに直接実行するゲストモ−ドに移行する（９０７）。
【００６７】
割り込みの発生によってゲストモ−ドが解除され、再度プロセススケジュ−ラ（０１４）が起動した場合、プロセススケジュ−ラ（０１４）は、ハ−ドウェアレジスタに設定されるゲストモ−ド終了要因コ−ドを読み出す。
【００６８】
ハイパバイザが定めた図１５に例を示す論理ＣＰＵ終了要因コードと論理ＣＰＵ状態の対応表にしたがって、論理ＣＰＵ状態を決定しｃの論理ＣＰＵ状態（０５３）に、決定した論理ＣＰＵ状態に対応する論理ＣＰＵ状態コードを書き込む（９０８）
次に、論理ＣＰＵ管理テ−ブル（０５０）のエントリの起動終了時刻（０５５）にゲストモード（９０７）が終了したときの時刻を書き込み（９０９）、論理ＣＰＵ管理テ−ブル（０５０）のエントリのＬＰＡＲ番号をインデックスとしてＬＰＡＲ管理テ−ブル（０４０）のエントリを取得する（９１０）。
【００６９】
次に、ＬＰＡＲ管理テ−ブル（０４０）のエントリのＬＰＡＲサ−ビス時間（０４４）に、論理ＣＰＵ管理テ−ブル（０５０）のエントリの起動終了時刻（０５５）と起動開始時刻（０５４）の差分を加算する（９１１）。
【００７０】
更に、前記の論理ＣＰＵ管理テ−ブル（０５０）のエントリの起動終了時刻（０５５）と起動開始時刻（０５４）の差分をを、ＣＰＵグル−プ管理テ−ブル（０２０）のエントリのＣＰＵグル−プサ−ビス時間（０２５）にも加算する（９１２）。
【００７１】
その後、スケジュ−ラの先頭処理（９００）に戻って、処理を継続する。
【００７２】
前述のように、物理ＣＰＵ管理テ−ブル（０３０）のＣＰＵグループ番号ｉｉ（０３２）にＣＰＵグループ番号を設定することで、物理ＣＰＵに対してしてＣＰＵグループを割り当て、ＣＰＵグループ毎の論理ＣＰＵ管理テーブル（０５０）に同ＣＰＵグループを割り当てられたＬＰＡＲの論理ＣＰＵを登録し、ＣＰＵグループ毎の論理ＣＰＵ管理テーブルに登録されている論理ＣＰＵ群から、物理ＣＰＵを割り当てる論理ＣＰＵを選択することで、物理ＣＰＵと論理ＣＰＵのグルーピングを実施している。これにより、物理ＣＰＵを割り当てる論理ＣＰＵを同じグル−プ内のＬＰＡＲの論理ＣＰＵに限定する効果を得ることができる。
【００７３】
例えば、物理ＣＰＵ数が１２８、ＬＰＡＲ辺りの論理ＣＰＵ数が１６、ＬＰＡＲ数が１６、システム全体の論理ＣＰＵ数が１６×１６＝２５６といった大規模な構成を、物理ＣＰＵ数、ＬＰＡＲ数の同じ８個のＣＰＵグループにグルーピングした場合、各ＣＰＵグループの物理ＣＰＵ数、ＬＰＡＲ数、論理ＣＰＵ数はそれぞれ、物理ＣＰＵ数が１６（＝１２８÷８）、ＬＰＡＲ数が２（＝１６÷８）、論理ＣＰＵ数が３２（＝ＬＰＡＲ辺りの論理ＣＰＵ数×ＬＰＡＲ数＝１６×２）となる。
【００７４】
論理ＣＰＵへの物理ＣＰＵの割り当て処理において、物理ＣＰＵで動作するプロセススケジュ−ラ（０１４）が、各物理ＣＰＵで起動する論理ＣＰＵを選択する処理（図１４）の対象とする論理ＣＰＵの数は、ＣＰＵグループを実施しない場合はシステムで定義された全論理ＣＰＵ数である２５６個となり、ＣＰＵグループ構成を実施した場合は３２個となる。
【００７５】
一般に広く知られている線形探索法では、データ数ｎの場合の平均探索回数はｎ／2である。したがって、論理ＣＰＵに対する物理ＣＰＵ割り当て処理における論理ＣＰＵの検索処理を例えば線形探索で行った場合、前記のように３２個の論理ＣＰＵを１つのＣＰＵグループとすると、平均探索回数は３２／２＝１６となる。これに対して、ＣＰＵグル−プを実施しない場合は、２５６／２＝１２８である。つまり、ＣＰＵグループ化を実施することにより、ＣＰＵグループを実施しない場合に比べて、を論理ＣＰＵの検索処理に要する時間を１／８にすることができると言える。
【００７６】
また、例えば、ＬＰＡＲ１〜２で本番稼動用のゲストＯＳ、ＬＰＡＲ３〜４で開発用のゲストＯＳを動作させる場合、ＬＰＡＲ１〜２及びＬＰＡＲ３〜４に、それぞれ別のＣＰＵグループを割り当てる。本番稼動用のゲストＯＳが動作するＣＰＵグループには、より多くの物理ＣＰＵを割り当てることで、本番稼動用のゲストＯＳの性能向上がはかれる。
【００７７】
図１６（ａ）（ｂ）は、サ−ビス時間監視部の処理を示す。サ−ビス時間監視部は、ハイパバイザが決定するサ−ビス時間監視インタ−バル毎に動作するサ−ビス時間監視プロセスが実行されることにより実現される。サ−ビス時間監視部は、ＣＰＵグル−プ毎のサ−ビス時間からグル−プサービス率実測値を計算し、サ−ビス率と比較することによりグル−プの物理ＣＰＵ資源の過不足を判断し、物理ＣＰＵに割り当てるＣＰＵグル−プを動的に変更する。
【００７８】
なお、グル−プサービス率実測値とは、「システム全体の物理ＣＰＵ時間の何％をＣＰＵグループに割り当てたか」を示す測定値のことである。また、サ−ビス時間監視インタ−バルは「グル−プサービス率実測値を計算する時間間隔」であり、ハイパバイザが定める値である。
【００７９】
サ−ビス時間監視部は、ＣＰＵグループ管理テ−ブル（０２０）を先頭から順に参照し(９５０，９５１)、ＣＰＵグループ管理テ−ブル（０２０）のエントリに対して、図１６（a）および図１６（ｂ）の処理を実行する。
【００８０】
サ−ビス時間監視部は、図１７に示す計算式にしたがってグル−プサービス率実測値を計算し（９５２）、ＣＰＵグループ管理テ−ブル（０２０）のグル−プサ−ビス率（０２４）とグル−プサービス率実測値とを比較する（９５３）。
【００８１】
比較処理９５３で、グル−プサ−ビス率（０２４）がグループサービス率実測値と等しい場合、ＣＰＵグル−プ管理テ−ブル（０２０）エントリのグル−プサ−ビス時間（０２５）を初期値０に巻き戻す処理９６０を実行し、次のＣＰＵグループ番号を対象としてＣＰＵグループ管理テ−ブル（０２０）のエントリの参照ループ（９５０〜９６１）を実行する。
【００８２】
なお、図１６の処理は、サービス時間監視インターバル毎の時刻t0,t1,t2・・,tn, n+1, ・・で実行される。 tn+1での実行では、tn〜tn+1の間に各ＣＰＵグループに割り当てられたＣＰＵ時間からＣＰＵサービス率実測値を計算するので、tnでの実行ではグループサービス時間をゼロにする（９６０）。これが、上述の「初期値０に巻き戻す処理」のことである。
【００８３】
比較処理９５３で、グル−プサ−ビス率（０２４）がグループサービス率実測値より小さい場合、物理ＣＰＵ資源が不足していると判断し、処理９５４〜９６２を実行する。
【００８４】
比較処理９５３で、グル−プサ−ビス率（０２４）がグループサービス率実測値より大きい場合、物理ＣＰＵ資源に余裕があると判断し、サ−ビス時間監視部は図１６（ｂ）の処理を実施する。
【００８５】
まず、比較処理９５３で、グル−プサ−ビス率（０２４）がグループサービス率実測値より小さい場合の、処理９５４〜９６２について説明する。
【００８６】
サ−ビス時間監視部は物理ＣＰＵ管理テ−ブル（０３０）のエントリを順次参照（９５４，９５５）して、物理ＣＰＵ管理テ−ブル（０３０）のＣＰＵグル−プ番号ｉｉ（０３２）が未定義値を示す−１であり、且つＣＰＵグル−プを割り当てられていない物理ＣＰＵを検索する（９５６）。
【００８７】
９５６の検索の結果、ＣＰＵグル−プを割り当てられていない物理ＣＰＵが無い場合、次の物理ＣＰＵ番号を対象として物理ＣＰＵ管理テ−ブル（０３０）のエントリの参照ループ（９５４〜９５９）を実行する。
【００８８】
９５６の検索の結果、ＣＰＵグル−プを割り当てられていない物理ＣＰＵが有る場合、物理ＣＰＵ管理テ−ブル（０３０）のエントリのＣＰＵグル−プ番号ｉｉ（０３２？）に、ＣＰＵグル−プ番号を書き込む（９５７）。
【００８９】
そして、ＣＰＵグル−プ管理テ−ブル（０２０）のエントリの物理ＣＰＵ数（０２２）に、１加算し（９５８）する。
【００９０】
そして、物理ＣＰＵ管理テ−ブル（０３０）のエントリの参照ループを終了し（９５８→９６０）、ＣＰＵグル−プ管理テ−ブル（０２０）エントリのグル−プサ−ビス時間（０２５）を初期値０に巻き戻す（９６０）。
【００９１】
そして、次のＣＰＵグループ番号を対象としてＣＰＵグループ管理テ−ブル（０２０）のエントリの参照ループ（９５０〜９６１）を実行する。対象ＣＰＵグループ番号が最大ＣＰＵグループ番号より大きくなったならループ処理からぬけて、サ−ビス時間監視部の処理を終了する（９６２）
以上のように、グループサービス率がグループサービス率実測値より小さい場合、まず、ＣＰＵグル−プを割り当てられていない物理ＣＰＵを検索する。そして、９５８の処理により、その物理ＣＰＵを、グループサービス率がグループサービス率実測値よりも低いＣＰＵグループに割り当てるので、グループサービス率が低いＣＰＵグル−プを構成する物理ＣＰＵ数が増加する。結果として、当該ＣＰＵグル−プのグル−プサービス率実測値が低くなるので、予め指定したグル−プサ−ビス率に近づけることが可能となる。
【００９２】
次に、比較処理９５３で、グル−プサ−ビス率（０２４）がグループサービス率実測値より大きい場合の処理について、図１６（ｂ）を用いて説明する。
【００９３】
物理ＣＰＵ数が１以下であるときに、ＣＰＵグループを割り当てた物理ＣＰＵ数を減算する処理（９７７）を実施してしまうと、当該ＣＰＵグループを割り当てた物理ＣＰＵで動作するプロセススケジュ−ラ処理（図１４）の条件判断９１５が常に不成立になり、処理９０１に分岐するケースがなくなる。この場合、当該ＣＰＵグループを割り当てたＬＰＡＲの論理ＣＰＵを起動することができなくなる。そこで、ＣＰＵグル−プ管理テ−ブル（０２０）のエントリの物理ＣＰＵ数（０２２）をチェックする（９７０）。  チェック処理９７０の結果、物理ＣＰＵ数が１以下であれば、、物理ＣＰＵ管理テ−ブル（０３０）のエントリの参照ル−プを（９５４〜９５９）を終了し、処理９６０を実行する。
【００９４】
チェック処理９７０の結果、物理ＣＰＵ数が２以上であれば、物理ＣＰＵ管理テ−ブル（０３０）の対象エントリを使用して、９７１〜９７８の処理を行う。
【００９５】
ＣＰＵグル−プ管理テ−ブル（０２０）のエントリのグル−プサ−ビス時間を使用し、図１８に示す計算式にしたがって、予測グル−プサービス率を計算する（９７１）。ここで、予測グル−プサービス率とは、ＣＰＵグループを割り当てる物理ＣＰＵの数を１減らした場合のグループサービス率を予測する数値である。
【００９６】
次に、予測グル−プサービス率とグル−プサ−ビス率とを比較する。
【００９７】
比較処理９７２の結果、予測グル−プサービス率の方がグル−プサ−ビス率よりも大きい場合、ＣＰＵグループを割り当てる物理ＣＰＵ数を減らすと物理ＣＰＵ資源の不足が生じるので処理９７３〜９７８を実行することなく処理９６０に戻る（９７２→９６０）。
【００９８】
比較処理９７２の結果、予測グル−プサービス率の方がグル−プサ−ビス率よりも小さいか、等しい場合、当該物理ＣＰＵ数を１減らしても、グル−プサービス率実測値がグル−プサ−ビス率を超えることは無い。そこで、物理ＣＰＵ管理テ−ブル（０３０）を順に検索し、物理ＣＰＵ管理テ−ブル（０３０）のエントリのＣＰＵグル−プ番号ｉｉ（０３２）がＣＰＵグル−プ番号ループ（９５０〜９６１）対象のＣＰＵグループ番号を一致しているかを判断し（９７５）、一致していなければ、物理ＣＰＵ管理テ−ブル（０２０）の次のエントリに対する処理を行う（９７５→９７８）。
【００９９】
判断処理９７５で、物理ＣＰＵ管理テ−ブル（０３０）のエントリのＣＰＵグル−プ番号ｉｉ（０３２）がＣＰＵグル−プ番号ループ（９５０〜９６１）対象のＣＰＵグループ番号と一致していると判断すれば、物理ＣＰＵ管理テ−ブル（０３０）のエントリのＣＰＵグル−プ番号ｉｉ（０３２）に、未定義を意味する−１を書き込み（９７６）物理ＣＰＵグル−プ管理テ−ブル（０２０）のエントリの物理ＣＰＵ数（０２２）を、１減算し（９７７）、物理ＣＰＵ管理テ−ブル（０２０）の次のエントリに対する処理を行う（９７８）。
【０１００】
物理ＣＰＵ 管理テ−ブルの参照ル−プが終了すれば、処理９６０に戻りＣＰＵグル−プ参照テ−ブルの参照ル−プを実行する（９７９→９６０）。
【０１０１】
図１９に、サ−ビス時間監視プロセスによって実効するサ−ビス時間監視部が、図１６（ａ）（ｂ）に示される処理を実行したときの、ＣＰＵグル−プ構成の動的な変更の例を、ＣＰＵグル−プ管理テ−ブルの変更と対峙して示す。本図のＣＰＵグル−プ管理テ−ブルでは、論理ＣＰＵ数（０２３）および、論理ＣＰＵ管理テ−ブルアドレス（０２６）の記述は省略する。
【０１０２】
状態１は、ハイパバイザがたちあがった後、ＬＰＡＲをアクティベイトする前に、オペレ−タによって図６、図９に示す状態に設定されたときの、ＣＰＵグル−プ管理テ−ブル（０２０）及びＣＰＵグル−プ構成を示している。ＬＰＡＲがアクティベイトされていないので、物理ＣＰＵ（００１〜００５）と論理ＣＰＵとの対応付けは、形成されていいない。
【０１０３】
４個のＬＰＡＲ（２００〜２０３）をアクティベイトすると、図１４に示すプロセススケジュ−ラ（０１４）により、論理ＣＰＵへの物理ＣＰＵの割り当て処理が動作する。本実施例では、１０００ミリ秒とするサ−ビス時間監視インタ−バルが経過したとき、当該インターバルでのＣＰＵグループ０およびＣＰＵグループ１の物理ＣＰＵ割り当て時間は、２０００ミリ秒（＝１０００ミリ秒×ＣＰＵグループの物理ＣＰＵ数２）になる。
【０１０４】
当該サ−ビス時間監視インタ−バルで、ＣＰＵグループ０の論理ＣＰＵはＣＰＵ使用率が平均７５％、ＣＰＵグループ０の論理ＣＰＵは平均１５％のＣＰＵ使用率になるような負荷のプログラムが動作していた場合、ＣＰＵグル−プ０およびＣＰＵグル−プ１のグル−プサ−ビス時間は、状態２に示す１５００（＝２０００ミリ秒×７５％）と３００（＝２０００ミリ秒×１５％）（ミリ秒）になる。ここで、サ−ビス時間監視プロセスにより、図１６に示すサ−ビス時間監視部処理が動作し、ＣＰＵグル−プ０，１の各グル−プサービス率実測値を、図１７にしたがって計算すると、グル−プ０は７５、グル−プ１は１５となる。
【０１０５】
グル−プ０のグル−プサービス率実測値７５は、グル−プサ−ビス率６５より大きいので、図１６処理ステップ９５４〜９５９を実行し、物理ＣＰＵ４（００５）に対する物理ＣＰＵ管理テ−ブル（０３０）のエントリにグル−プ０を設定する。この作用により、物理ＣＰＵ４（００５）にはＣＰＵグル−プ０が割り当てられ、状態３に示すＣＰＵグル−プ構成になる。
【０１０６】
ＣＰＵグル−プ０の物理ＣＰＵ数が３となった当該構成で、グル−プサ−ビス時間１５００に対するグル−プサービス率実測値を計算すると、グル−プサービス率実測値は５０となり、本実施例で設定されているグループサービス率：６５よりも、低い値に抑えられる。
【０１０７】
グル−プ１のグル−プサービス率実測値１５は、グル−プサ−ビス率３５より小さいので、図１６処理ステップ９７０〜９７８を実行し、物理ＣＰＵ２（００３）に対する物理ＣＰＵ管理テ−ブル（０３０）のエントリに、未定義値−１を設定する。この作用により、物理ＣＰＵ２（００３）は、ＣＰＵグル−プ１から解放され、状態４に示すＣＰＵグル−プ構成になる。
【０１０８】
ＣＰＵグル−プ１の物理ＣＰＵ数が１となった当該構成で、グル−プサ−ビス時間３００に対するグル−プサービス率実測値を計算すると、グル−プサービス率実測値は３０となり、グル−プサ−ビス率３５より低いまま、余っている物理ＣＰＵを開放することができた。
【０１０９】
以上の通り、本実施例の計算機システムによれば、ＣＰＵグループ毎のグループサービス率に着目し、サービス時間監視インターバルごとにグループサービス率実測値を計算しとぐループサービス率と比較することにより、ＣＰＵグループの物理ＣＰＵ資源の過不足を判断し物理ＣＰＵへのＣＰＵグループ割り当てを動的に変更する作用を実現し、物理ＣＰＵ資源を効率よく使用する効果を達成できる。
【符号の説明】
【０１１０】
００１〜００５  物理ＣＰＵ、００６  入出力装置、０１０  ハイパバイザ、０１１  リソ−ス管理デ−タ、０１２  入出力管理部、０１３  リソ−ス管理部、０１４  プロセススケジュ−ラ、０１５  論理ＣＰＵプロセス、０１６  サ−ビス時間監視プロセス、１００〜１０１  ＣＰＵグル−プ、２００〜２０３  ＬＰＡＲ、３００〜３０７  論理ＣＰＵ。
【図１】
2011253334.tif 000003
【図２】
2011253334.tif 000004
【図３】
2011253334.tif 000005
【図４】
2011253334.tif 000006
【図５】
2011253334.tif 000007
【図６】
2011253334.tif 000008
【図７】
2011253334.tif 000009
【図８】
2011253334.tif 000010
【図９】
2011253334.tif 000011
【図１０】
2011253334.tif 000012
【図１１】
2011253334.tif 000013
【図１２】
2011253334.tif 000014
【図１３】
2011253334.tif 000015
【図１４】
2011253334.tif 000016
【図１５】
2011253334.tif 000017
【図１６（ａ）】
2011253334.tif 000018
【図１６（ｂ）】
2011253334.tif 000019
【図１７】
2011253334.tif 000020
【図１８】
2011253334.tif 000021
【図１９】
2011253334.tif 000022