(57)【要約】【課題】第１の処理と第２の処理とを実行する複数の仮想計算機を、異なるＣＰＵ時間で異なる物理ＣＰＵで動作させるプログラムを提供する。【解決手段】スケジューリングデータ設定部１０は、第１の処理（ＩＯバウンド）用の物理ＣＰＵ２１の割り当てる時間（第１のＣＰＵ時間）よりも、第２の処理（ＣＰＵバウンド）用の物理ＣＰＵ２１の割り当て時間（第２のＣＰＵ時間）を、十分に長く設定する。スケジューラ１１は、第１の処理用の物理ＣＰＵ２１をその割当の時間を第１のＣＰＵ時間に設定してゲストＯＳ３３に割り当て、第２の処理用の物理ＣＰＵ２１をその割当の時間を第２のＣＰＵ時間に設定してゲストＯＳ３３に割り当てる。【選択図】図２
2009223842.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ＣＰＵと、各々が前記複数の物理ＣＰＵ上で動作するプログラムからなる複数の仮想計算機と、前記複数の仮想計算機の制御を行う仮想計算機モニタとを備える仮想計算機システムにおける前記仮想計算機モニタを実現するプログラムであって、
前記仮想計算機システムであるコンピュータに、
前記複数の物理ＣＰＵについて、各々が第１の処理用であるか第２の処理用であるかを定めるステップと、
前記第１の処理用とされた物理ＣＰＵを前記複数の仮想計算機に割り当てる時間である第１のＣＰＵ時間と、前記第２の処理用とされた物理ＣＰＵを前記複数の仮想計算機に割り当てる時間である第２のＣＰＵ時間とを異なる値に設定するステップと、
前記第１の処理用とされた物理ＣＰＵの制御権を前記複数の仮想計算機のいずれかに割り当てる場合には、当該割当の時間を前記第１のＣＰＵ時間に設定して前記制御権を当該仮想計算機に割り当て、前記第２の処理用とされた物理ＣＰＵの制御権を前記複数の仮想計算機のいずれかに割り当てる場合には、当該割当の時間を前記第２のＣＰＵ時間に設定して前記制御権を当該仮想計算機に割り当てるステップとを実行させる
ことを特徴とする仮想計算機制御プログラム。
【請求項２】
前記第１の処理はＩＯバウンドジョブの処理であり、前記第２の処理はＣＰＵバウンドジョブの処理であり、前記第２のＣＰＵ時間は前記第１のＣＰＵ時間よりも長い値に設定される
ことを特徴とする請求項１に記載の仮想計算機制御プログラム。
【請求項３】
前記コンピュータに、更に、
前記第１及び第２の処理用とされた物理ＣＰＵの使用率に応じて、前記第１及び第２の処理用とされた物理ＣＰＵの数を変更するステップを実行させる
ことを特徴とする請求項１に記載の仮想計算機制御プログラム。
【請求項４】
複数の物理ＣＰＵと、各々が前記複数の物理ＣＰＵ上で動作するプログラムからなる複数の仮想計算機と、前記複数の仮想計算機の制御を行う仮想計算機モニタとを備える仮想計算機システムにおいて、
前記仮想計算機モニタが、
前記複数の物理ＣＰＵについて、各々が第２の処理用であるか第１の処理用であるかを定める処理設定手段と、
前記第１の処理用とされた物理ＣＰＵを前記複数の仮想計算機に割り当てる時間である第１のＣＰＵ時間と、前記第２の処理用とされた物理ＣＰＵを前記複数の仮想計算機に割り当てる時間である第２のＣＰＵ時間とを異なる値に設定するＣＰＵ時間設定手段と、
前記第１の処理用とされた物理ＣＰＵの制御権を前記複数の仮想計算機のいずれかに割り当てる場合には、当該割当の時間を前記第１のＣＰＵ時間に設定して前記制御権を当該仮想計算機に割り当て、前記第２の処理用とされた物理ＣＰＵの制御権を前記複数の仮想計算機のいずれかに割り当てる場合には、当該割当の時間を前記第２のＣＰＵ時間に設定して前記制御権を当該仮想計算機に割り当てる割当手段とを備える
ことを特徴とする仮想計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機制御プログラム及び仮想計算機システムに関し、特に、第１の処理と第２の処理とを実行する複数の仮想計算機を異なる物理ＣＰＵで動作させる仮想計算機制御プログラム及び仮想計算機システムに関するものである。
【背景技術】
【０００２】
仮想計算機システムにおいては、仮想計算機モニタが、複数の物理ＣＰＵの制御権を複数のＯＳ（オペレーティングシステム、即ち、仮想計算機）に割り当て（ディスパッチして）、また、複数のＯＳに割り当てた物理ＣＰＵの制御権が仮想計算機モニタに戻るようにしている。
【０００３】
例えば、仮想計算機システムにおいて、そのスケジューリング方法の一つとしてタイムスライス方式を採用すると共に、仮想計算機毎に処理する物理計算機の命令プロセッサの性能を変更する手段と、命令プロセッサの使用時間を設定する手段を備えることが提案されている（特許文献１参照）。
【０００４】
また、例えば、複数の論理プロセッサがタイムシェアリングにより物理プロセッサを使用すると共に、ハードウェアの負荷やプログラムの態様により、最適な論理プロセッサと物理プロセッサの対応を設定した処理を可能とするシステムが提案されている（特許文献２参照）。
【特許文献１】特開２００６−０５９０５２号公報
【特許文献２】特開２００６−１２７４６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一般に、仮想計算機システムにおいては、複数のゲストＯＳ（仮想計算機）が動作し、各々のゲストＯＳは種類の異なるジョブ（ワークロード即ち仕事を行うプログラム）を実行する。代表的なジョブの種類としては、ＣＰＵバウンドジョブと、ＩＯバウンドジョブとがある。ＣＰＵバウンドジョブは、科学技術計算等のように、ＣＰＵ（物理ＣＰＵ、以下同じ）を極めて多用して計算処理を実行するプログラムであり、ＣＰＵ時間を与える程、応答が良くなるという特性を持つ。ＩＯバウンドジョブは、データベースシステムに代表され、ディスク装置やネットワークへの入出力処理（ＩＯ処理）を頻繁に行うプログラムであり、ＩＯ処理の完了が早い程、レスポンスが良くなるという特性を持つ。
【０００６】
仮想計算機システムでは、複数のゲストＯＳが、混在するＣＰＵバウンドジョブとＩＯバウンドジョブとを実行する。このため、ゲストＯＳから仮想計算機モニタにＣＰＵの制御権を効率良く取り戻す方法として、ディスパッチタイマの設定と、アイドル検出の利用とを併用することが考えらる。
【０００７】
ディスパッチタイマは、当該ディスパッチの際に所定の値に設定される。これにより、ゲストＯＳがＣＰＵを使用し続けても、当該所定の時間の経過後、必ず仮想計算機モニタに制御権が戻る。ＣＰＵバウンドジョブがゲストＯＳで動作している場合、当該所定の時間が経過した後に、制御権が仮想計算機モニタに戻ることが多い。換言すれば、このようにして仮想計算機モニタに制御権が戻った場合、ＣＰＵバウンドジョブを実行するゲストＯＳ（以下、ＣＰＵバウンドのゲストＯＳという）であると考えることができる。
【０００８】
アイドル検出は、ゲストＯＳがアイドルとなった場合に、これを検出する。アイドルとなった後もディスパッチタイマによる時間の経過を待つことは無駄である。このため、仮想計算機モニタは、アイドルとなったゲストＯＳから仮想計算機モニタに制御権を切り換えた上で、別のゲストＯＳにＣＰＵの制御権を与える。ＩＯバウンドジョブがゲストＯＳで動作している場合、ＩＯ処理の完了待ちが発生するので、アイドルを契機に制御権が仮想計算機モニタに戻ることが多い。換言すれば、このようにして仮想計算機モニタに制御権が戻った場合、ＩＯバウンドジョブを実行するゲスト（以下、ＩＯバウンドのゲストＯＳという）であると考えることができる。
【０００９】
しかし、本発明者の検討によれば、ディスパッチタイマの設定とアイドル検出の利用とを併用することには、以下のような問題があることが判った。
【００１０】
即ち、図７に示すように、ＩＯバウンドのゲストＯＳ＃１０１が、タイミングｔ１０１の時点でＩＯ割込みを実行する。このＩＯ割込みは、タイミングｔ１０２の時点で完了する。しかし、この時点では、ＣＰＵバウンドのゲストＯＳ＃１０２及びゲストＯＳ＃１０３が動作しているので、仮想計算機モニタは、ＣＰＵの制御権をこれらに順に割り当てる。このため、ゲストＯＳ＃１０１は、ＣＰＵの制御権が割り当てられるタイミングｔ１０３の時点まで、ＩＯ完了割込みの実行を待たされる。
【００１１】
このように、ＩＯバウンドのゲストＯＳ＃１０１は、ＣＰＵバウンドのゲストＯＳ＃１０２及びゲストＯＳ＃１０３の影響を大きく受ける。即ち、そのＩＯレスポンスが悪化する。ＣＰＵバウンドのゲストＯＳの数が多くなるほど、影響が大きくなる。
【００１２】
そこで、例えば、ディスパッチタイマに設定する値を小さくして、ゲストＯＳにＣＰＵの制御権を与える時間を短くすることが考えられる。この場合、ＩＯバウンドのゲストＯＳになるべく早くＣＰＵを与えるようにすることができる。しかし、ＣＰＵの制御権の切り換えが頻繁に発生し、仮想計算機モニタの走行する回数が増加し、オーバヘッドが増加してしまう。
【００１３】
また、例えば、ＩＯ完了割込み待ちのＩＯバウンドのゲストＯＳに対して、優先的にＣＰＵの制御権を割り当てることが考えられる。この場合、ＩＯ割込みの完了割込み待ちのゲストＯＳを検出し、優先してＩＯ完了待ちを通知する。しかし、ＩＯバウンドのゲストが多くてＣＰＵバウンドのゲストが少ない場合、ＣＰＵバウンドのゲストＯＳにＣＰＵの制御権が与えられにくくなる。更に、仮想計算機モニタがＩＯ完了割込み待ちのゲストＯＳを検出する手段を備える必要があり、オーバヘッドが増加してしまう。
【００１４】
本発明は、第１の処理と第２の処理とを実行する複数の仮想計算機を、異なるＣＰＵ時間で異なる物理ＣＰＵで動作させる仮想計算機制御プログラムを提供することを目的とする。
【００１５】
また、本発明は、第１の処理と第２の処理とを実行する複数の仮想計算機を、異なるＣＰＵ時間で異なる物理ＣＰＵで動作させる仮想計算機システムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
このプログラムは、複数の物理ＣＰＵと、各々が前記複数の物理ＣＰＵ上で動作するプログラムからなる複数の仮想計算機と、前記複数の仮想計算機の制御を行う仮想計算機モニタとを備える仮想計算機システムにおける前記仮想計算機モニタを実現するプログラムである。このプログラムは、前記仮想計算機システムであるコンピュータに、処理設定ステップと、ＣＰＵ時間設定ステップと、割当ステップとを実行させる。処理設定ステップは、前記複数の物理ＣＰＵについて、各々が第１の処理用であるか第２の処理用であるかを定める。ＣＰＵ時間設定ステップは、前記第１の処理用とされた物理ＣＰＵを前記複数の仮想計算機に割り当てる時間である第１のＣＰＵ時間と、前記第２の処理用とされた物理ＣＰＵを前記複数の仮想計算機に割り当てる時間である第２のＣＰＵ時間とを異なる値に設定する。割当ステップは、前記第１の処理用とされた物理ＣＰＵの制御権を前記複数の仮想計算機のいずれかに割り当てる場合には、当該割当の時間を前記第１のＣＰＵ時間に設定して前記制御権を当該仮想計算機に割り当て、前記第２の処理用とされた物理ＣＰＵの制御権を前記複数の仮想計算機のいずれかに割り当てる場合には、当該割当の時間を前記第２のＣＰＵ時間に設定して前記制御権を当該仮想計算機に割り当てる。
【００１７】
好ましくは、このプログラムの一実施態様においては、前記第１の処理はＩＯバウンドジョブの処理であり、前記第２の処理はＣＰＵバウンドジョブの処理であり、前記第２のＣＰＵ時間は前記第１のＣＰＵ時間よりも長い値に設定される
好ましくは、このプログラムの一実施態様においては、前記コンピュータに、更に、前記第１及び第２の処理用とされた物理ＣＰＵの使用率に応じて、前記第１及び第２の処理用とされた物理ＣＰＵの数を変更するステップを実行させる。
【００１８】
この仮想計算機システムは、複数の物理ＣＰＵと、各々が前記複数の物理ＣＰＵ上で動作するプログラムからなる複数の仮想計算機と、前記複数の仮想計算機の制御を行う仮想計算機モニタとを備える。この仮想計算機システムにおいて、前記仮想計算機モニタが、処理設定手段と、ＣＰＵ時間設定手段と、割当手段とを備える。処理設定手段は、前記複数の物理ＣＰＵについて、各々が第１の処理用であるか第２の処理用であるかを定める。ＣＰＵ時間設定手段は、前記第１の処理用とされた物理ＣＰＵを前記複数の仮想計算機に割り当てる時間である第１のＣＰＵ時間と、前記第２の処理用とされた物理ＣＰＵを前記複数の仮想計算機に割り当てる時間である第２のＣＰＵ時間とを異なる値に設定する。割当手段は、前記第１の処理用とされた物理ＣＰＵの制御権を前記複数の仮想計算機のいずれかに割り当てる場合には、当該割当の時間を前記第１のＣＰＵ時間に設定して前記制御権を当該仮想計算機に割り当て、前記第２の処理用とされた物理ＣＰＵの制御権を前記複数の仮想計算機のいずれかに割り当てる場合には、当該割当の時間を前記第２のＣＰＵ時間に設定して前記制御権を当該仮想計算機に割り当てる。
【発明の効果】
【００１９】
この仮想計算機制御プログラム及び仮想計算機システムによれば、第１の処理用の物理ＣＰＵの割り当て時間（第１のＣＰＵ時間）と、第２の処理用の物理ＣＰＵの割り当て時間（第２のＣＰＵ時間）とが、異なる値に設定される。この上で、第１の処理用の物理ＣＰＵが第１のＣＰＵ時間で仮想計算機に割り当てられ、第２の処理用の物理ＣＰＵが第２のＣＰＵ時間で仮想計算機に割り当てられる。
【００２０】
これにより、第１の処理及び第２の処理が、各々、別の物理ＣＰＵにおいて実行される。従って、第１及び第２の処理を実行する仮想計算機が相互に影響を大きく受けることを防止して、そのレスポンスを改善することができる。例えば、第２の処理を実行する仮想計算機が動作している場合、第１の処理を実行する仮想計算機が、第１の処理の完了を待たされることを防止することができる。また、第１の処理を実行する仮想計算機により早く物理ＣＰＵを与えることができ、例えば当該仮想計算機が第１の処理の完了待ちである場合等により早く当該処理を完了することができる。更に、ＣＰＵの制御権の頻繁な切り換えが第２の処理を実行する仮想計算機の処理に影響を与えることを防止することができ、例えば第２の処理を実行する仮想計算機ゲストにＣＰＵの制御権が与えられにくくなることを防止することができる。
【００２１】
この仮想計算機制御プログラムの一実施態様によれば、第１の処理はＩＯバウンドジョブの処理であり、第２の処理はＣＰＵバウンドジョブの処理であり、第２のＣＰＵ時間は第１のＣＰＵ時間よりも長い値に設定される。これにより、例えば、ＣＰＵバウンドの仮想計算機が動作している場合、ＩＯバウンドの仮想計算機が、ＩＯバウンドの完了を待たされることを防止することができる。また、ＩＯバウンドの仮想計算機により早く物理ＣＰＵを与えることができ、例えば当該仮想計算機が、ＩＯバウンドの完了待ちである場合等により早く当該処理を完了することができる。更に、ＣＰＵの制御権の頻繁な切り換えが、ＣＰＵバウンドの仮想計算機の処理に影響を与えることを防止することができ、例えばＣＰＵバウンドの仮想計算機ゲストにＣＰＵの制御権が与えられにくくなることを防止することができる。
【００２２】
この仮想計算機制御プログラムの一実施態様によれば、第１及び第２の処理用の物理ＣＰＵの使用率に応じて、第１及び第２の処理用の物理ＣＰＵの数が変更される。これにより、物理ＣＰＵが第１及び第２の処理用に固定されずに、その用途又は種類が動的に変更される。この結果、オペレータが介在することなく、当該仮想計算機システムが実行するプログラムにおける第１及び第２の処理の割合に応じて、第１及び第２の処理用の物理ＣＰＵの数（相互の比率）を動的に変更して、最適化することができる。
【発明を実施するための最良の形態】
【００２３】
図１は、この仮想計算機システムの構成の一例を示す図である。仮想計算機システムは、仮想計算機モニタ（ＶＭＭ：Virtual Machine Monitor 又はHypervisor）１、ハードウェア２、複数の仮想計算機（ＶＭ：Virtual Machine ）３からなる。ハードウェア２上で仮想計算機モニタ１及び仮想計算機３が動作する。
【００２４】
仮想計算機システムは、複数の仮想計算機３を備える。即ち、ホストＯＳ（オペレーティングシステム即ち制御プログラム）３１、ドライバＯＳ３２、ゲストＯＳ３３が、各々、仮想計算機３である。各々の仮想計算機３は、各々のＯＳ３１〜３３がハードウェア２の１個の物理ＣＰＵ２１（図２参照）の制御権を獲得して当該物理ＣＰＵ２１上で実行されることにより実現される。仮想計算機モニタ１も同様にして実現される。
【００２５】
仮想計算機モニタ１は、この仮想計算機システムの全体を制御する。即ち、仮想計算機モニタ１は、複数の仮想計算機３、即ち、ＯＳ３１〜３３のディスパッチ（物理ＣＰＵ２１の制御権の割当て）、ＯＳ３１〜３３が実行する特権命令のエミュレーション、物理ＣＰＵ２１等のハードウェア２の制御等を行う。
【００２６】
ホストＯＳ３１は、１個設けられ、仮想計算機（ドメイン）として動作し、仮想計算機システム全体の管理を行う。ホストＯＳ３１は、仮想計算機システムのブート時に起動され、ドライバＯＳ３２やゲストＯＳ３３の制御（起動及び停止等を含む全ての制御）を行う。ホストＯＳ３１は、同時に、ドライバＯＳ３２としても動作可能である。ホストＯＳ３１は、表示装置等のコンソール４１を備える。
【００２７】
ドライバＯＳ３２は、物理（又は実）入出力装置（Ｉ／Ｏ装置）４２、４３を制御するＯＳである。物理Ｉ／Ｏ装置４２、４３は、複数の種類、例えば磁気ディスク装置４２、ネットワーク４３等からなる。ドライバＯＳ３２は、複数の種類の物理Ｉ／Ｏ装置４２、４３毎に、設けられる。物理Ｉ／Ｏ装置４２、４３の制御はドライバＯＳ３２が実行する。ドライバＯＳ３２は、ホストＯＳ３１上やゲストＯＳ３３上でも動作可能である。ドライバＯＳ３２がゲストＯＳ３３上で動作する場合、そのゲストＯＳ３３は、見かけ上ドライバＯＳ３２となる。
【００２８】
ゲストＯＳ３３は、物理Ｉ／Ｏ装置４２、４３を持たないＯＳである。ゲストＯＳ３３は、通常の（いわゆる）ＯＳと考えてよい。例えば、アプリケーションプログラムは、いずれかのゲストＯＳ３３上で動作する。ゲストＯＳ３３は、ドライバＯＳ３２に対してＩ／Ｏ命令の実行を依頼することにより、そのＩ／Ｏ命令の実行が可能となる。
【００２９】
図２は、主として、仮想計算機モニタ１及びハードウェア２の構成の一例を示す図である。なお、図２においては、仮想計算機３として複数のゲストＯＳ３３（＃１〜＃４）のみを示す。また、以下においては、仮想計算機３がゲストＯＳ３３である場合について説明するが、仮想計算機３が他のＯＳ３１及び３２であっても同様である。
【００３０】
仮想計算機モニタ１は、スケジューリングデータ設定部（以下、設定部）１０と、複数のスケジューラ１１と、複数のスケジューリングデータ格納部（以下、格納部）１２とを備える。スケジューラ１１は複数の物理ＣＰＵ２１毎にその各々に対応して設けられる。スケジューラ１１は、各々、スケジューリングデータを格納する格納部１２を備える。従って、格納部１２及びスケジューリングデータも、複数の物理ＣＰＵ２１毎にその各々に対応して設けられる。
【００３１】
ハードウェア２は複数の物理ＣＰＵ（実ＣＰＵ）２１を備える。図２においては、図示の簡単化のために、２個の物理ＣＰＵ２１のみを示す。複数の物理ＣＰＵ２１を区別する場合には、例えば物理ＣＰＵ＃０のように表す。スケジューラ１１及び格納部１２についても同様である。
【００３２】
図２において、例えば、物理ＣＰＵ＃０がＩＯバウンドのＣＰＵとされ、物理ＣＰＵ＃１がＩＯバウンドのＣＰＵとされる。ＩＯバウンドジョブは、データベースシステムに代表され、ディスク装置やネットワークへの入出力処理（ＩＯ処理）を頻繁に行うプログラム（ＩＯ装置を使用する処理が支配的なプログラム）であり、ＩＯ処理の完了が早い程、レスポンスが良くなるという特性を持つプログラムである。ＣＰＵバウンドジョブは、科学技術計算等のように、ＣＰＵ（物理ＣＰＵ）を極めて多用して計算処理を実行するプログラム（物理ＣＰＵを使用する処理が支配的なプログラム）であり、ＣＰＵ時間を与えれば与える程、応答が良くなるという特性を持つプログラムである。
【００３３】
また、後述するように、ＣＰＵバウンドの物理ＣＰＵ２１とＩＯバウンドの物理ＣＰＵ２１とは固定されておらず、また、その数が同数である必要はない。
【００３４】
仮想計算機モニタ１やゲストＯＳ３３（即ち、仮想計算機３、以下同じ）は、前述のように、複数の物理ＣＰＵ２１上で動作する。仮想計算機システムでは、仮想計算機モニタ１のスケジューラ１１が、各々の物理ＣＰＵ２１（の制御権）を複数のゲストＯＳ３３のいずれかに択一的に配分することにより、ＣＰＵの仮想化を行う。あるゲストＯＳ３３が動作した後には、必ず仮想計算機モニタ１に物理ＣＰＵ２１の制御権が戻る。
【００３５】
この仮想計算機システムにおいては、ＩＯバウンドのゲストＯＳ３３とＣＰＵバウンドのゲストＯＳ３３とを、異なる物理ＣＰＵ２１上で動作させる。その上で、この仮想計算機システムにおいては、物理ＣＰＵ２１毎に、ゲストＯＳ３３に制御権を割り当てる時間（ＣＰＵ時間）を異なるようにする。これにより、ＩＯバウンドのゲストＯＳ３３及びＣＰＵバウンドのゲストＯＳ３３に対して、当該プログラムの特性に応じて、最適な制御を行うことができる。
【００３６】
スケジューラ１１は、格納部１２に格納されたスケジューリングデータ１２２又は１２３に従って、物理ＣＰＵ２１の制御権をゲストＯＳ３３に割り当てる（ディスパッチする）。スケジューリングデータ１２２及び１２３は、物理ＣＰＵ２１のゲストＯＳ３３への割当に先立って、設定部１０により設定される。
【００３７】
図３は、スケジューリングデータ１２２及び１２３のデータ構造１２１を示す。スケジューリングデータ（即ち、データ構造１２１）は、ＣＰＵ／ＩＯフラグ、ＶＭＩＤ、スケジューリングタイム、ＣＰＵ使用率を格納するフィールドを備える。なお、図３においても、仮想計算機３としてゲストＯＳ３３のみを示すが、他の仮想計算機３についても同様である。
【００３８】
ＣＰＵ／ＩＯフラグは、処理設定情報であり、当該物理ＣＰＵ２１がＣＰＵバウンドであるのか、ＩＯバウンドであるのかを示すフラグである。ＶＭＩＤは、ゲストＯＳ（即ち、仮想計算機：ＶＭ）３３の識別情報（ＩＤ）であり、当該仮想計算機システムにおいて一意に識別され、予め定められる。ＶＭＩＤは、当該物理ＣＰＵ２１上でその時点で動作しているゲストＯＳ３３を示し、当該物理ＣＰＵ２１上で複数のゲストＯＳ３３が動作している場合、当該複数のＩＤが格納される。スケジューリングタイムは、割当時間情報であり、当該物理ＣＰＵ２１について、当該ゲストＯＳ３３に制御権が割り当てられる時間を示す。ＣＰＵ使用率は、その時点での当該物理ＣＰＵ２１の使用率（％）である。即ち、ＣＰＵ使用率は、当該仮想計算機システムの動作時間に対する当該物理ＣＰＵ２１が使用された時間の割合（％）である。
【００３９】
設定部１０は、複数の物理ＣＰＵ２１について、その処理又は用途（処理という）を設定する処理設定手段である。即ち、設定部１０は、各々が、ＩＯバウンドジョブの処理（第１の処理）用であるか、又は、ＣＰＵバウンドジョブの処理（第２の処理）用であるかを定める。このために、設定部１０は、スケジューリングデータのＣＰＵ／ＩＯフラグを設定する。従って、物理ＣＰＵ２１の処理は、格納部２１を用いて定められる。ＣＰＵ／ＩＯフラグは、ＣＰＵフラグとＩＯフラグとを含む。ＣＰＵフラグは当該物理ＣＰＵ２１がＣＰＵバウンドである場合に「１」とされ、ＩＯフラグは当該物理ＣＰＵ２１がＩＯバウンドである場合に「１」とされる。
【００４０】
また、設定部１０は、複数のゲストＯＳ３３について、そのＩＤを設定する。即ち、設定部１０は、例えば、ゲストＯＳ３３からの割当要求があった順に、これに割り当てようとしている物理ＣＰＵ２１に対応するスケジューリングデータのＶＭＩＤに、そのＩＤを登録する。これにより、当該ゲストＯＳ３３に物理ＣＰＵ２１が割り当てられる。従って、当該ゲストＯＳ３３は、スケジューリングデータ１２２又は１２３のいずれか一方に登録される。なお、スケジューラ１１がＶＭＩＤの登録を行うようにしても良い。
【００４１】
また、設定部１０は、ＣＰＵ時間を設定するＣＰＵ時間設定手段である。ＣＰＵ時間は、物理ＣＰＵ２１の制御権を、ゲストＯＳ３３の各々に割り当てる時間である。この時、第２のＣＰＵ時間は第１のＣＰＵ時間と異なる値に設定される。第１のＣＰＵ時間は、ＩＯバウンドジョブの処理（第１の処理）用とされた物理ＣＰＵ２１（＃０）の制御権を、ゲストＯＳ３３の各々に割り当てる時間である。第２のＣＰＵ時間は、ＣＰＵバウンドジョブの処理（第２の処理）用とされた物理ＣＰＵ２１（＃１）の制御権を、ゲストＯＳ３３の各々に割り当てる時間である。
【００４２】
ＣＰＵ時間の設定のために、設定部１０は、スケジューリングデータのスケジューリングタイムを設定する。この時、格納部２１において、第２のＣＰＵ時間は、第１のＣＰＵ時間よりも長い値に設定される。例えば、第１のＣＰＵ時間は１ミリ秒とされ、第２のＣＰＵ時間は５０ミリ秒とされる。従って、スケジューリングタイムは、ＩＯバウンドの物理ＣＰＵ２１については短くされ、ＣＰＵバウンドの物理ＣＰＵ２１については長くされる。
【００４３】
スケジューラ１１は、物理ＣＰＵ２１の制御権を、複数のゲストＯＳ３３のいずれかに割り当てる割当手段である。この時、スケジューラ１１は、格納部１２に格納されたスケジューリングデータに従って、当該時間だけ物理ＣＰＵ２１を割り当てる。
【００４４】
即ち、スケジューラ１１は、ＩＯバウンドジョブの処理用とされた（ＩＯバウンドの）物理ＣＰＵ２１の制御権を、複数のゲストＯＳ３３のいずれかに割り当てる場合、当該割当の時間を第１のＣＰＵ時間に設定して制御権をゲストＯＳ３３に割り当てる。また、スケジューラ１１は、ＣＰＵバウンドジョブの処理用とされた（ＣＰＵバウンドの）物理ＣＰＵ２１の制御権を、複数のゲストＯＳ３３のいずれかに割り当てる場合、当該割当の時間を第２のＣＰＵ時間に設定して、制御権をゲストＯＳ３３に割り当てる。
【００４５】
スケジューラ１１は、ゲストＯＳ３３に物理ＣＰＵ２１を割り当てた後、当該ゲストＯＳ３３を監視する。即ち、当該ゲストＯＳ３３がアイドルか否かを周期的に調べる。ゲストＯＳ３３がアイドルか否かは、周知のように、例えば当該ゲストＯＳ３３に割り当てられている物理ＣＰＵ２１のレジスタの内容が変化したか否かを調べることにより検出される。
【００４６】
ＩＯバウンドのゲストＯＳ３３即ちゲストＯＳ３３は、ＩＯ処理の完了待ちが発生するので、アイドルとなり易い。換言すれば、アイドルのゲストＯＳ３３はＩＯバウンドであると考えることができる。従って、アイドルか否かの判定の結果に基づいて、当該ゲストＯＳ３３がＩＯバウンドであるか又はＩＯバウンドでない（即ち、ＣＰＵバウンドであるか）を判定することができる。
【００４７】
そこで、アイドルとなったゲストＯＳ３３には、次回、ＩＯバウンドの物理ＣＰＵ２１を割り当てることとする。即ち、当該ゲストＯＳ３３は、スケジューリングデータ１２２に登録される。アイドルとならなかったゲストＯＳ３３は、スケジューリングデータ１２３に登録される。これにより、ゲストＯＳ３３に応じた適切な物理ＣＰＵ２１を決定することができる。
【００４８】
なお、この例では、アイドルとなったゲストＯＳ３３から、そのアイドル検出の時点で、物理ＣＰＵ２１の制御権を取り戻す処理は実行しない。これは、この例では、（定常状態となった後は）殆どの場合、ＩＯバウンドのゲストＯＳ３３はＩＯバウンド用の物理ＣＰＵ２１において実行されるためである。従って、アイドルとなった後スケジューリングタイムの経過を待っても時間的な無駄は少ない。一方、制御権取り戻す処理の負担は少なくない。このため、当該処理は実行されない。
【００４９】
なお、アイドルの検出処理は、その制御権がゲストＯＳ３３即ちゲストＯＳ３３（及びホストＯＳ３１、ドライバＯＳ３２）に与えられている全ての物理ＣＰＵ２１について、予め定められた時間間隔で実行される。この時間間隔は経験的に定まり、例えば第１のＣＰＵ時間よりも十分に短い。
【００５０】
また、設定部１０は、第１及び第２の処理用とされた物理ＣＰＵの使用率に応じて、前記第１及び第２の処理用とされた物理ＣＰＵの数を変更する。従って、ＣＰＵバウンドの物理ＣＰＵ＃０は、必要に応じて、ＩＯバウンドの物理ＣＰＵとされる。例えば、物理ＣＰＵ＃０のスケジューリングデータ１２２において、ＣＰＵフラグを「１」と、ＩＯフラグを「０」と書き換えれば良い。ＩＯバウンドの物理ＣＰＵ＃１についても同様である。ＣＰＵ使用率は、予め定められた時間間隔で更新される。この時間間隔は経験的に定まり、例えば第１のＣＰＵ時間と同程度とされる。
【００５１】
図４（Ａ）は、ＩＯバウンドの物理ＣＰＵ２１（＃０）のスケジューリングデータ１２２の一例を示す。設定部１０は、格納部１２（＃０）にスケジューリングデータ１２２を格納することにより、対応する物理ＣＰＵ２１（＃０）をＩＯバウンドとする。
【００５２】
ＣＰＵ／ＩＯフラグのフィールドにおいて、ＣＰＵフラグは「０」とされ、ＩＯフラグは「１」とされているので、当該物理ＣＰＵ２１はＩＯバウンドである。ＶＭＩＤのフィールドには、例えば４個のＶＭＩＤが格納されている。従って、当該物理ＣＰＵ２１上では、例えば４個のゲストＯＳ３３が動作し、この順に当該物理ＣＰＵ２１の制御権を与えられることを示す。スケジューリングタイムは、当該物理ＣＰＵ２１がＩＯバウンドであるので、例えば「１ミリ秒」と短くされる。ＣＰＵ使用率は、その時点での当該物理ＣＰＵ２１の使用率が「５０％」であることを示す。
【００５３】
なお、例えばＶＭＩＤ「guest3＿vcpu0 」は、仮想計算機「vcpu0 」を構成するゲストＯＳ「guest3」を示す。ゲストＯＳ「guest3」は、複数のゲストＯＳ３３の中のゲストＯＳ＃３を示す。仮想計算機「vcpu0 」は、仮想計算機（仮想ＣＰＵ）＃０を示す。即ち、ゲストＯＳ＃３は、当該物理ＣＰＵ＃０上で動作して、仮想計算機＃０を構成する。
【００５４】
図４（Ｂ）は、ＣＰＵバウンドの物理ＣＰＵ２１（＃１）のスケジューリングデータ１２３の一例を示す。設定部１０は、格納部１２（＃１）にスケジューリングデータ１２３を格納することにより、対応する物理ＣＰＵ２１（＃１）をＣＰＵバウンドとする。
【００５５】
ＣＰＵ／ＩＯフラグのフィールドにおいて、ＣＰＵフラグは「１」とされ、ＩＯフラグは「０」とされているので、当該物理ＣＰＵ２１はＣＰＵバウンドである。ＶＭＩＤのフィールドには、３個のＶＭＩＤが格納されている。従って、ＶＭＩＤのフィールドは、当該物理ＣＰＵ２１上で、例えば３個のゲストＯＳ３３が動作し、この順に当該物理ＣＰＵ２１の制御権を与えられることを示す。スケジューリングタイムは、当該物理ＣＰＵ２１がＣＰＵバウンドであるので、例えば「５０ミリ秒」と長くされる。ＣＰＵ使用率は、その時点での当該物理ＣＰＵ２１の使用率が「８０％」であることを示す。
【００５６】
図４（Ａ）及び図４（Ｂ）から判るように、物理ＣＰＵ＃０はＩＯバウンドのスケジューリングデータ１２２により管理され、物理ＣＰＵ＃１はＣＰＵバウンドのスケジューリングデータ１２３により管理される。従って、物理ＣＰＵ＃０はＩＯバウンドであり、物理ＣＰＵ＃１はＣＰＵバウンドである。このように、ＩＯバウンドのＣＰＵとＣＰＵバウンドのＣＰＵとは、異なる物理ＣＰＵとされる。
【００５７】
その上で、ＩＯバウンドの物理ＣＰＵ２１（＃０）に対して割り当てる時間（スケジューリングタイム）と、ＣＰＵバウンドの物理ＣＰＵ２１（＃１）に対して割り当てる時間とは、異なるようにされる。即ち、後者が前者よりも十分に長くされる。
【００５８】
例えば、一般的に、仮想計算機システムにおけるスケジューリングタイムは例えば２０ミリ秒である。この場合、仮想計算機モニタ１は、１秒当たり５０回動作する。これに対して、図４（Ａ）のＩＯバウンドの物理ＣＰＵ＃０のスケジューリングタイムは１ミリ秒であるので、４個のゲストＯＳ３３が動作する場合においても、ＩＯレスポンスとして４ミリ秒を確保することができる。従って、ＩＯレスポンスを２０倍（＝（２０ミリ秒×４個）／４ミリ秒）改善することができる。また、図４（Ｂ）のＣＰＵバウンドの物理ＣＰＵ＃０のスケジューリングタイムは５０ミリ秒であるので、仮想計算機モニタ１は、１秒当たり２０回動作する。従って、仮想計算機モニタ１のオーバヘッドを６０（＝（２０回／５０回）×１００）％削減することができる。
【００５９】
図５は、仮想計算機システムにおける物理ＣＰＵ２１での動作を説明する図である。この例は、物理ＣＰＵ２１が２個（＃０及び＃１）で、ゲストＯＳ３３が４個（＃１〜＃４）の場合において、スケジューリングデータ１２２及び１２３に基づいて、物理ＣＰＵ２１の制御権を割り当てる処理の例である。物理ＣＰＵ＃０はＩＯバウンド用であり、物理ＣＰＵ＃１はＣＰＵバウンド用である。ゲストＯＳ＃１及び＃２はＩＯバウンドであり、ゲストＯＳ＃３及び＃４はＣＰＵバウンドである。
【００６０】
なお、時間ｔioは１ミリ秒と短く、時間ｔcpu は５０ミリ秒と長いが、図５においては、図示の簡単化のために、時間の縮尺は無視している。
【００６１】
ＩＯバウンド用の物理ＣＰＵ＃０については、以下のように割り当てられる。最初に、対応するスケジューラ＃０が、スケジューリングデータ１２２に基づいて、ゲストＯＳ＃１に物理ＣＰＵ＃０の制御権を割り当てる。そこで、ゲストＯＳ＃１が、タイミングｔ１の時点でＩＯ割込みを実行して、アイドルとなる。ゲストＯＳ＃１は、ＩＯバウンドであるので、制御権が割り当てられた時間（ＣＰＵ割当時間）ｔioは１ミリ秒と短い。従って、ゲストＯＳ＃１がアイドルとなってあまり時間が経過しないタイミングで、制御権はスケジューラ＃０（即ち、仮想計算機モニタ１、以下同じ）に戻る。
【００６２】
次に、スケジューラ＃０が、ゲストＯＳ＃２に物理ＣＰＵ＃０の制御権を割り当てる。ゲストＯＳ＃２が、タイミングｔ２の時点でＩＯ割込みを実行してアイドルとなるが、その後あまり時間が経過しないタイミングで、制御権はスケジューラ＃０に戻る。
【００６３】
この後、ゲストＯＳ＃１が実行したＩＯ割込みは、タイミングｔ３の時点で完了する。一方、スケジューラ＃０が、再びゲストＯＳ＃１に物理ＣＰＵ＃０の制御権を割り当てる。そこで、ゲストＯＳ＃１が、制御権を割り当てられたタイミングｔ４で、ＩＯ割込みの完了を通知する。従って、ゲストＯＳ＃１は、ＩＯ割込みを実行してからあまり待たされることなく、ＩＯ完了割込みを実行することができる。この後、あまり時間が経過しないタイミングで、制御権はスケジューラ＃０に戻る。
【００６４】
この後、ゲストＯＳ＃２が実行したＩＯ割込みは、タイミングｔ５の時点で完了する。一方、スケジューラ＃０が、再びゲストＯＳ＃２に物理ＣＰＵ＃０の制御権を割り当てる。そこで、ゲストＯＳ＃２は、ＩＯ割込みを実行してからあまり待たされることなく、制御権を割り当てられたタイミングｔ６で、ＩＯ割込みの完了を通知することができる。この後、あまり時間が経過しないタイミングで、制御権はスケジューラ＃０に戻る。
【００６５】
このように、ＩＯバウンドのゲストＯＳ３３（＃１、＃２）においては、ＩＯレスポンスを良く（短く）することができる。特に、ＩＯバウンドのゲストＯＳ３３（＃１、＃２）において、ＣＰＵバウンドのゲストＯＳ３３（＃３、＃４）の影響で、ＩＯレスポンスが悪化することを防止することができる。
【００６６】
一方、ＣＰＵバウンド用の物理ＣＰＵ＃１については、以下のように割り当てられる。最初に、対応するスケジューラ＃１が、スケジューリングデータ１２３に基づいて、ゲストＯＳ＃３に物理ＣＰＵ＃１の制御権を割り当てる。そこで、ゲストＯＳ＃３が、アイドルとなることなく、物理ＣＰＵ＃１を使用する処理を実行する。この時、割り当てられた時間ｔcpu は５０ミリ秒と十分に長いので、物理ＣＰＵ＃１を使用する処理を十分に実行することができる。この後、制御権はスケジューラ＃０に戻る。
【００６７】
次に、スケジューラ＃１が、ゲストＯＳ＃４に物理ＣＰＵ＃１の制御権を割り当てる。ゲストＯＳ＃４は、アイドルとなることなく、５０ミリ秒と十分に長く割り当てられた時間ｔcpu を使用して、物理ＣＰＵ＃１を使用する処理を十分に実行する。その後、制御権はスケジューラ＃０に戻る。
【００６８】
このように、ＣＰＵバウンドの物理ＣＰＵ２１（＃１）においては、早いＩＯレスポンスが要求されるゲストＯＳ３３（＃１、＃２）が動作しないので、ゲストＯＳ３３（＃３、＃４）に対する１回の割り当て時間ｔcpu を長くすることができる。この結果、ゲストＯＳ３３（＃３、＃４）が１回で走行する（動作する）時間を長くすることができるので、物理ＣＰＵ２１（＃１）におけるキャッシュヒット率を向上することができ、仮想計算機システムの性能を向上させることができる。また、仮想計算機モニタ１が動作する回数を減らすことができるので、オーバヘッドを削減することができる。
【００６９】
図６は、図１の仮想計算機システムにおける物理ＣＰＵ２１のディスパッチ処理フローである。
【００７０】
設定部１０が、ジョブの実行開始に先立って、物理ＣＰＵ２１の中の１個をＩＯバウンド用とする（ステップＳ１１）。例えば、当該格納部１２において、ＩＯフラグを「１」とし、ＣＰＵフラグを「０」とし、スケジュールタイムを１ミリ秒とする。この時、残りの物理ＣＰＵ２１については、ＩＯフラグが「０」のままとされ、ＣＰＵフラグが「１」のままとされ、スケジュールタイムが５０ミリ秒とされる。また、全ての物理ＣＰＵ２１について、そのＶＭＩＤは「空」であり、ＣＰＵ使用率は０％である。
【００７１】
この後、ゲストＯＳ３３がジョブの実行を開始して仮想計算機モニタ１に物理ＣＰＵ２１の割当を要求する。これに応じて、スケジューラ１１が、ゲストＯＳ３３に割り当てようとする物理ＣＰＵ２１の対応する格納部１２のＶＭＩＤに当該ゲストＯＳ３３を登録し、そのＣＰＵ／ＩＯフラグを参照して、当該物理ＣＰＵ２１がＩＯバウンド用か否かを調べる（ステップＳ１２）。従って、ゲストＯＳ３３に割り当てられる時間が、物理ＣＰＵ２１の属性（処理）に応じて決定される。
【００７２】
当該物理ＣＰＵ２１がＩＯバウンド用である場合、スケジューラ１１が、スケジューリングデータ１２２のスケジュールタイムに基づいて、当該スケジューラ１１が備えるディスパッチタイマ（図示せず）に、当該ゲストＯＳ３３に割り当てるＣＰＵ時間を短くセットする（ステップＳ１３）。当該物理ＣＰＵ２１がＩＯバウンド用でない（ＣＰＵバウンド用である）場合、スケジューラ１１が、スケジューリングデータ１２３のスケジュールタイムに基づいて、当該スケジューラ１１のディスパッチタイマに、当該ゲストＯＳ３３に割り当てるＣＰＵ時間を長くセットする（ステップＳ１４）。
【００７３】
この後、スケジューラ１１が、当該ゲストＯＳ３３に当該物理ＣＰＵ２１の制御権を与え（ステップＳ１５）、その後、当該ゲストＯＳ３３がアイドルか否かを調べる（ステップＳ１６）。物理ＣＰＵ２１の制御権は、周知のように、例えば当該ゲストＯＳ３３がメモリ（図示せず）の所定の領域にロックワードを書き込むことにより与えられる。
【００７４】
当該ゲストＯＳ３３がアイドルでない場合、設定部１０が、次回に当該ゲストＯＳ３３を動作させる（即ち、ゲストＯＳ３３に割り当てようとする）物理ＣＰＵ２１をＣＰＵバウンド用とする（ステップＳ１７）。即ち、設定部１０が、スケジューラ１１からのアイドルでない旨の通知に基づいて、当該ゲストＯＳ３３をスケジューリングデータ１２３に登録する。当該ゲストＯＳ３３がアイドルである場合、設定部１０が、次回に当該ゲストＯＳ３３を動作させる物理ＣＰＵ２１をＩＯバウンド用とする（ステップＳ１８）。即ち、設定部１０が、スケジューラ１１からのアイドルである旨の通知に基づいて、当該ゲストＯＳ３３をスケジューリングデータ１２２に登録する。
【００７５】
この後、ステップＳ１７及びＳ１８の後で、物理ＣＰＵ２１の制御権が、当該ディスパッチタイマの時間切れに応じて、スケジューラ１１（仮想計算機モニタ１）に戻る。物理ＣＰＵ２１の制御権は、周知のように、例えば当該ゲストＯＳ３３が前記書き込んだロックワードを消去することにより戻される。
【００７６】
この後、設定部１０が、ＩＯバウンド用のＣＰＵの使用率（％）がＩＯバウンド用のＣＰＵの数が全ての物理ＣＰＵ２１に占める割合（占有率）（％）と等しいか又はより大きいか否かを調べる（ステップＳ１９）。即ち、設定部１０が、ＩＯバウンド用のＣＰＵの数が不足していて、物理ＣＰＵ２１をＩＯバウンド用に補充する必要があるか否かを調べる。
【００７７】
前者が後者と等しいか又はより大きい場合、設定部１０が、ＩＯバウンド用のＣＰＵの数が不足していると判断し、ＣＰＵバウンド用の物理ＣＰＵ２１の中の１個をＩＯバウンド用に変更する（ステップＳ２０）。即ち、設定部１０が、１個の格納部１２において、そのＣＰＵフラグを「０」とし、ＩＯフラグを「１」とし、スケジュールタイムを１ミリ秒とする。即ち、１個のスケジューリングデータ１２３をスケジューリングデータ１２２とする。これにより、当該物理ＣＰＵ２１はＩＯバウンドとされる。この後、スケジューラ１１がステップＳ１２以下を繰り返す。
【００７８】
なお、ステップＳ２０においてＩＯフラグを「１」とされたスケジューリングデータ１２２において、ＶＭＩＤに登録されているゲストＯＳ３３はそのままとされる。これは、当該ゲストＯＳ３３がＣＰＵバウンドであるとは限らないので、他のスケジューリングデータ１２３に登録しなおす意義が少ないためである（ステップＳ２１においても同様である）。
【００７９】
前者が後者と等しいか又はより大きい場合、設定部１０が、更に、ＩＯバウンド用のＣＰＵの使用率（％）がＩＯバウンド用の占有率（％）から１００（％）を引いた値より小さいか否かを調べる（ステップＳ２１）。前者が後者より小さい場合、設定部１０が、ＩＯバウンド用のＣＰＵの数が不足していない（ＣＰＵバウンド用のＣＰＵの数が不足している）と判断し、ＣＰＵバウンド用の物理ＣＰＵ２１の中の１個をＣＰＵバウンド用に変更する（ステップＳ２２）。即ち、設定部１０が、１個の格納部１２において、スケジューリングデータ１２２をスケジューリングデータ１２３とする。これにより、当該物理ＣＰＵ２１はＣＰＵバウンドとされる。この後、スケジューラ１１がステップＳ１２以下を繰り返す。
【００８０】
ステップＳ２１において、前者が後者より小さい場合、設定部１０が、ＩＯバウンド用のＣＰＵ及びＣＰＵバウンド用のＣＰＵの数が共に不足していない（適切な数となっている）と判断し、スケジューラ１１がステップＳ１２以下を繰り返す。
【００８１】
ステップＳ１１の時点では、ＩＯバウンド用のＣＰＵとされる物理ＣＰＵ２１は、 1個である。しかし、ステップＳ１２〜Ｓ２２を繰り返すことにより、全ての物理ＣＰＵ２１についてＩＯバウンド用かＣＰＵバウンド用かが定まり、その数が増減され、最適化される。
【００８２】
また、ステップＳ１５の時点では、ＣＰＵバウンドのゲストＯＳ３３がＣＰＵバウンドの物理ＣＰＵ２１の制御権を割り当てられるとは限らない。しかし、ステップＳ１２〜Ｓ２２を繰り返すことによりＣＰＵバウンドの物理ＣＰＵ２１の数が最適化され、また、ステップＳ１７及びＳ１８により次回の割当においては例えばＣＰＵバウンドのゲストＯＳ３３にＣＰＵバウンドの物理ＣＰＵ２１を割り当てることができる。これにより、平均的には最も効率良く、ＣＰＵバウンドのゲストＯＳ３３をＣＰＵバウンドの物理ＣＰＵ２１に割り当てることができる。ＩＯバウンドのゲストＯＳ３３についても同様である。
【００８３】
また、物理ＣＰＵ２１がＣＰＵバウンドであるかＩＯバウンドであるかは固定されていないので、オペレータがこれを管理する必要はない。また、仮想計算機モニタ１をＩＯ割込みの完了割り込み待ちを検出する必要が無いので、ゲストＯＳ３３等のゲストＯＳ３３を改造する必要がない。
【００８４】
以上、本発明の実施の形態について説明したが、本発明は以上に述べた実施の形態に限られるものではない。
【００８５】
例えば、ＩＯバウンドのゲストＯＳ３３が動作する物理ＣＰＵ２１のみで、物理的な割込み（特に、ＩＯ割込み）を受け付けるようにしても良い。即ち、ＣＰＵバウンドのゲストＯＳ３３が動作する物理ＣＰＵ２１では、ＩＯ割込み処理を行わないこととする。この場合、ＣＰＵバウンドの物理ＣＰＵ２１は、ＩＯ割込み処理を行わないので、その分仮想計算機モニタ１のオーバヘッドを削減することができる。
【図面の簡単な説明】
【００８６】
【図１】仮想計算機システムの構成の一例を示す図である。
【図２】仮想計算機モニタ及びハードウェアの構成の一例を示す図である。
【図３】スケジューリングデータのデータ構造を示す図である。
【図４】スケジューリングデータの一例を示す図である。
【図５】仮想計算機システムにおける物理ＣＰＵでの動作を説明する図である。
【図６】図１の仮想計算機システムにおける制御処理フローである。
【図７】本発明者が検討した仮想計算機システムの制御を説明する図である。
【符号の説明】
【００８７】
１  仮想計算機モニタ
２  ハードウェア
３  仮想計算機
１１  スケジューラ
１２  スケジューリングデータ格納部
２１  物理ＣＰＵ
３１  ホストＯＳ
３２  ドライバＯＳ
３３  ゲストＯＳ
１２１  スケジューリングデータのデータ構造
１２２  ＣＰＵバウンドのスケジューリングデータ
１２３  ＩＯバウンドのスケジューリングデータ
【図１】
2009223842.tif 000003
【図２】
2009223842.tif 000004
【図３】
2009223842.tif 000005
【図４】
2009223842.tif 000006
【図５】
2009223842.tif 000007
【図６】
2009223842.tif 000008
【図７】
2009223842.tif 000009