(57)【要約】【課題】仮想計算機におけるスケジューリング処理の３つの基本要請事項である、「（１）割込みの誤差をなるべく少なく」、「（２）各仮想計算機のプロセッサ使用時間の累積を均等に」、「（３）プロセッサの空き時間を有効に利用する」、が同時に満足されるスケジューリングの方法を提供し、特に（１）については、タイマ割込み時の仮想計算機への報告遅延が０となるような機能を実現する。【解決手段】物理計算機におけるタイマ機構を、物理タイマをタイマ源とする仮想タイマという形で、各仮想計算機に専用に持たせるようにする。ハイパバイザ１５０は仮想計算機へのスケジューリング処理の際、各仮想計算機１４０，１４１の「仮想タイマ値」や「プロセッサ使用時間の累積」などの情報を利用して、優先的にディスパッチすべき仮想計算機とそのディスパッチ時間を算出してディスパッチを行う。【選択図】図１
2008171293.tif 000002
【特許請求の範囲】
【請求項１】
物理計算機を論理的に分割して複数の仮想計算機として使用する仮想計算機システムにおいて、優先度に従って各仮想計算機にプロセッサを割当てるスケジューリング方法であって、
前記各仮想計算機のタイマ割込みの起こる時刻を格納する仮想タイマ値、プロセッサ使用時間の累積、タイムスライス値、および現在時刻を設け、前記仮想タイマ値、前記プロセッサ使用時間の累積、前記タイムスライス値、および前記現在時刻を前記各仮想計算機のプロセッサ割当てアルゴリズムに利用して、前記各仮想計算機上で動作するプログラムが設定するタイマによる割込みを発生させることを特徴とする仮想計算機システムのスケジューリング方法。
【請求項２】
請求項１記載の仮想計算機システムのスケジューリング方法において、
前記プロセッサ割当てアルゴリズムは、前記各仮想計算機の仮想タイマ値を利用して、他の仮想計算機のプロセッサ割当て時間を、最も近い将来の仮想タイマ値までに短縮することでタイマによる割込みを発生させることを特徴とする仮想計算機システムのスケジューリング方法。
【請求項３】
請求項１記載の仮想計算機システムのスケジューリング方法において、
前記プロセッサ割当てアルゴリズムは、前記各仮想計算機のプロセッサ使用時間の累積を利用して、均等なサービス率を実現するために累積時間が最も少ない仮想計算機にプロセッサを割当てることを特徴とする仮想計算機システムのスケジューリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システム、特に物理計算機を論理的に分割して複数の仮想計算機として使用する仮想計算機システムにおける、精度の高いタイマ割込みを実現するスケジューリング方法に適用して有効な技術に関するものである。
【背景技術】
【０００２】
仮想計算機システムのスケジューリング方法の一つとして、タイムスライス方式が知られている。タイムスライス方式は、物理計算機の命令プロセッサの稼動時間をタイムスライスと呼ばれる時間間隔で分割して利用する技術である。仮想計算機ごとにあらかじめ処理能力を定義しておき、その定義に従って各仮想計算機に対して物理計算機のプロセッサ割当てをタイムスライス単位で行う。これにより、複数の仮想計算機で物理計算機の処理能力を分割利用できる。
【０００３】
この種のタイムスライス方式による仮想計算機のスケジューリング方法としては、例えば特許文献１に、タイムスライス時間を可変的な値とすることによりスケジュールパターンの偏りの発生を防止するスケジューリング方法が開示されている。仮想計算機のサービス率によって、一回に割当てるタイムスライス時間を可変的な値とし、サービス率により異なっていた一定時間におけるスケジューリング回数が同一となるようにスケジューリングする技術である。
【０００４】
一方、各仮想計算機のプライオリティの変化に応じて、ハイパバイザが仮想計算機に対するプロセッサの割当て対象・性能・時間を算出して割当てるスケジューリング方法が、例えば特許文献２に開示されている。各仮想計算機上にプライオリティ設定部と監視部を設け、ハイパバイザは「各仮想計算機のプロセッサ割当て時間の累積」や「前単位時間のプロセッサ資源の過不足」といったプライオリティの変化通知を受付けて、それに応じてプロセッサ資源の割当てを行う技術である。
【特許文献１】特開２００３−１７７９２８号公報
【特許文献２】特開２００５−１８５６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上記特許文献１で述べられている、従来技術のタイムスライス方式のスケジューリング方法には次の問題が存在する。仮想計算機に対する割込みが発生した場合、その割込みを受付ける仮想計算機が物理計算機の命令プロセッサを使用できるようになるまで、その割込みを受付けられないため、割込み処理の遅延が発生し、仮想計算機の処理性能の低下を招くという点である。
【０００６】
また、上記特許文献２ではそれを解決するため、各仮想計算機のプライオリティの変化に応じてプロセッサ資源（特に割当て時間）を変えて、割込み処理の遅延を改善している。これにより、低コストで安定運用ができるプロセッサ割当てスケジューリング方法が実現される。
【０００７】
しかし、割込みの中でも特にタイマ割込みのように、ハイパバイザが割込みを発生させるべき時刻が既知である割込み処理に対して、その仮想計算機への報告遅延を０にするような方法は開示されていない。
【０００８】
そこで、本発明では、仮想計算機におけるスケジューリング処理の３つの基本要請事項である、「（１）割込みの誤差をなるべく少なく」、「（２）各仮想計算機のプロセッサ使用時間の累積を均等に」、「（３）プロセッサの空き時間を有効に利用する」、が同時に満足されるスケジューリングの方法を提供し、特に（１）については、タイマ割込み時の仮想計算機への報告遅延が０となるような機能を実現することを目的とするものである。
【０００９】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１１】
本発明は、上記の目的を達成するため、以下のような特徴を有するものである。物理計算機におけるタイマ機構を、物理タイマをタイマ源とする仮想タイマという形で、各仮想計算機に専用に持たせるようにする。ハイパバイザ（プロセッサ割当てアルゴリズム利用）は仮想計算機へのスケジューリング処理の際、各仮想計算機の「仮想タイマ値」や「プロセッサ使用時間の累積」などの情報を利用して、優先的にディスパッチ（プロセッサの割当て）すべき仮想計算機とそのディスパッチ時間を算出してディスパッチを行うものである。
【発明の効果】
【００１２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１３】
本発明によれば、ハイパバイザのスケジューリング処理に、「仮想タイマ値」を考慮に入れることにより基本要請事項（１）が、「プロセッサ使用時間の累積」を考慮に入れることにより基本要請事項（２）が解決され、さらに休止状態のプロセスをディスパッチの対象としないことで基本要請事項（３）も解決される。これら３つの機能の実現により、プロセッサリソースの効率的な運用が可能となり、仮想計算機の処理性能の向上が期待できる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１５】
図１は、本発明の一実施の形態における仮想計算機システムの構成例を示す図である。本実施の形態の仮想計算機システムにおいて、物理計算機１９０は、Ｉ／Ｏデバイス２００、プロセッサ２１０、およびメモリ２３０を有する。プロセッサ２１０は、タイマ２２０と現在時刻２２１を内部に有する。
【００１６】
ハイパバイザ１５０は、物理計算機１９０上で動作するソフトウェアであり、プロセッサ２１０などの物理計算機資源を論理的に分割して仮想計算機１１０，１１１，・・・を構築し、それらを管理、制御する機能を持つ。これらの仮想計算機１１０，１１１，・・・は、仮想計算機群１００を構成する。
【００１７】
仮想計算機１１０，１１１，・・・内の仮想プロセッサ１２０，１２１，・・・は、物理計算機１９０のプロセッサ２１０におけるタイマ２２０と同じ仕様の仮想タイマ１３０，１３１，・・・を有する。この仮想タイマ１３０，１３１，・・・は、物理計算機１９０のタイマ２２０をタイマ源とする論理的タイマである。
【００１８】
これらの機能により、仮想計算機１１０，１１１，・・・の上では、ゲストオペレーティングシステム（ＯＳ）１４０，１４１，・・・を動作させることができる。
【００１９】
プロセッサ２１０の分割は、ある一定期間（タイムスライス値）ごとにプロセッサ２１０を各仮想計算機１１０，１１１，・・・に割当てることにより実現する。このプロセッサ２１０の時分割方式によりハイパバイザ１５０は、各仮想計算機１１０，１１１，・・・に対するタイムスライスのスケジューリングを実行したり、各仮想計算機１１０，１１１，・・・に物理計算機１９０から上がってくる割込みを発生させたりする。この処理を実現するのが、命令シミュレーション１６０内のタイマ設定処理１６１、スケジューリング処理１７０、および各種制御テーブル１８０内の、スケジューリング処理を行う際の情報源となるスケジューリング制御テーブル１８１である。
【００２０】
図２は、本実施の形態の仮想計算機システムにおいて、２つの仮想計算機（１）１１０，（２）１１１上でそれぞれ動作するゲストＯＳにおけるプログラム動作例を示す図である。
【００２１】
仮想計算機（１）１１０上を走行するプログラムによりタイマがセットされると、仮想計算機（１）１１０はハイパバイザ１５０へその制御を移行する。ここで、ハイパバイザ１５０はそのタイマ値を記憶し、仮想計算機（１）１１０へ制御を返す。
【００２２】
仮想計算機（１）１１０へ制御が戻った後、プロセッサ休止要求２９９が呼び出されたとする。このプロセッサ休止要求２９９はハイパバイザ１５０への介入となるが、一般的に効率化のため、ハイパバイザ１５０は休止状態のプロセスをディスパッチの対象としない。すなわちこの場合、ハイパバイザ１５０は仮想計算機（２）１１１をディスパッチする。
【００２３】
その際、ハイパバイザ１５０は、仮想計算機（１）１１０へのタイマ割込みの報告遅延が発生しないよう、タイマ設定時に記憶した仮想タイマの値などから、仮想計算機（２）１１１をディスパッチすべき時間を算出して割当てる。仮想計算機（２）１１１がこのディスパッチ時間を使い切ると、制御が再びハイパバイザ１５０に戻り、ハイパバイザ１５０は仮想計算機（１）１１０へのタイマ割込みを起こすが、仮想計算機（２）１１１へのディスパッチ時間を調整したことにより、タイマの設定時刻に正確に割込みが起こり、タイマ割込みの報告遅延が発生することはない。
【００２４】
図３は、ハイパバイザ１５０の内部における制御動作の詳細例を示す図である。仮想計算機群１００の仮想計算機１１０，１１１，・・・の処理からハイパバイザ１５０へ戻る契機は２つある。一つはシステム全体を制御する命令（特権命令）が発行されたとき、もう一つは仮想計算機１１０，１１１，・・・に与えられたタイムスライス時間が満了したときである。
【００２５】
前者の場合は命令シミュレーション１６０で必要なシミュレーションを行って、ハイパバイザ１５０のスケジューリング処理１７０へ制御を渡す。後者の場合は、ハイパバイザ１５０のスケジューリング処理１７０に直接制御が渡されるので、そのままスケジューリング処理を実行する。ハイパバイザ１５０のスケジューリング処理１７０は制御を受け取ると、各種制御テーブル１８０内のスケジューリング制御テーブル１８１により次にディスパッチすべき仮想計算機とそのディスパッチ時間を直ちに算出して、その仮想計算機をディスパッチする。
【００２６】
以上が、ある仮想計算機（例えば仮想計算機（１）１１０）からハイパバイザ１５０に制御が戻ってから、次の仮想計算機（例えば仮想計算機（２）１１１）をディスパッチするまでの基本的な動作であるが、命令シミュレーション１６０においてタイマ設定処理１６１が発生した場合は、上記に仮想タイマ値の更新という処理が加わる。命令シミュレーション１６０でタイマ設定処理１６１が働くと、ハイパバイザ１５０はスケジューリング制御テーブル１８１内の、該仮想計算機の仮想タイマ値を更新してから、スケジューリング処理１７０へ制御を渡す。ハイパバイザ１５０のスケジューリング処理１７０は制御を受け取ると、更新された仮想タイマ値を含む、スケジューリング制御テーブル１８１の情報をもとに次にディスパッチすべき仮想計算機とそのディスパッチ時間を算出して、その仮想計算機へディスパッチする。
【００２７】
図４は、スケジューリング制御テーブル１８１の構成例を示す図である。ハイパバイザ１５０のスケジューリング処理１７０は、このスケジューリング制御テーブル１８１をもとに行われる。スケジューリング制御テーブル１８１には、各仮想計算機１１０，１１１，・・・に次回タイマ割込みが起こる時刻である仮想タイマ値４００，４０１，・・・、各仮想計算機のプロセッサ使用時間の累積４１０，４１１，・・・、仮想計算機のタイムスライス値４２０、および物理プロセッサ内の現在時刻２２１から取得した現在時刻４３０が格納されている。
【００２８】
図５は、ハイパバイザ１５０のスケジューリング処理１７０が、スケジューリング制御テーブル１８１を利用して、優先的にディスパッチする仮想計算機とそのディスパッチ時間を決定するアルゴリズムの一例を示すフローチャートである。ただし前提として、図２の例におけるプロセッサの休止要求が呼び出された仮想計算機のように、ディスパッチ不可能な仮想計算機はディスパッチ対象から外して処理を進めるものとする。
【００２９】
処理フローは、ディスパッチ対象の決定（５００，５０１，５０２）と、ディスパッチ時間の決定（５０３）の２つに分かれる。スケジューリング処理１７０は制御を受け取ると、まずスケジューリング制御テーブル１８１の各仮想計算機の仮想タイマ値４００，４０１，・・・と現在時刻４３０を比較し、即時、タイマ割込みを発生させる仮想計算機があるかどうかをチェックする（５００）。すなわち、［仮想タイマ値］＝［現在時刻］である仮想計算機があるか否かのチェックを行う。
【００３０】
即時、タイマ割込みを発生させる仮想計算機がある場合（ＹＥＳ）は、その仮想計算機をディスパッチ対象とし（５０１）、ない場合（ＮＯ）はスケジューリング制御テーブル１８１の、各仮想計算機のプロセッサ使用時間の累積同士を比較し、累積時間が最も少ない仮想計算機をディスパッチ対象とする（５０２）。このように累積時間の少ない仮想計算機の優先度を上げることで、各仮想計算機へのプロセッサリソースの均等な割当てを実現することができる。
【００３１】
続いて、ディスパッチ時間の決定フローであるが、最も近い将来に発生させるタイマ割込み時刻までの現在時刻からの時間と、スケジューリング制御テーブル１８１のタイムスライス値４２０とを比較し、短い方をディスパッチ時間とする（５０３）。これにより、直近（現在時刻からタイムスライス時間以内）でタイマ割込みを発生させる仮想計算機がある場合、その一つ前にディスパッチする仮想計算機へのディスパッチ時間がタイマ割込みの発生時刻直前までとなり、タイマ割込みの前にハイパバイザへ制御が戻る。ハイパバイザはスケジューリング処理により、即時、タイマ割込みを発生させる仮想計算機を優先的にディスパッチの対象とするので、タイマの設定時刻にタイマ割込みが発生し、割込みの報告遅延を防ぐことができる。
【００３２】
以上の方式により、本実施の形態の仮想計算機システムによれば、スケジューリング処理の３つの基本要請事項である、「（１）割込みの誤差をなるべく少なく」、「（２）各仮想計算機のプロセッサ使用時間の累積を均等に」「（３）プロセッサの空き時間を有効に使う」、が同時に満足されるスケジューリングが実現される。特に、（１）に関してはタイマ割り込みの誤差が０に、（２）に関しては累積時間の最大・最小の差が常にタイムスライス時間以内に抑えられ、（３）に関しても休止状態のプロセスをディスパッチの対象としないことで、仮想計算機へのスケジューリング処理が連続して行なわれるため、プロセッサに空き時間が発生することがない。よって、プロセッサリソースの効率的な運用が可能となり、仮想計算機の処理性能の向上が期待できる。
【００３３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００３４】
本発明は、物理計算機を論理的に分割して複数の仮想計算機として使用する仮想計算機システムに適用され、特に精度の高いタイマ割込みを実現することにより、例えば時間に対して高い精度が必要なソフトウェアなど、仮想計算機システムの適応対象の拡大が可能となる。
【図面の簡単な説明】
【００３５】
【図１】本発明の一実施の形態における仮想計算機システムの構成例を示す図である。
【図２】本発明の一実施の形態における仮想計算機システムにおいて、２つの仮想計算機上でそれぞれ動作するゲストＯＳにおけるプログラム動作例を示す図である。
【図３】本発明の一実施の形態における仮想計算機システムにおいて、ハイパバイザの内部における制御動作の詳細例を示す図である。
【図４】本発明の一実施の形態における仮想計算機システムにおいて、スケジューリング制御テーブルの構成例を示す図である。
【図５】本発明の一実施の形態における仮想計算機システムにおいて、スケジューリング処理の制御動作例（優先的にディスパッチする仮想計算機とそのディスパッチ時間を決定するアルゴリズム）を示すフローチャート図である。
【符号の説明】
【００３６】
１００…仮想計算機群、１１０，１１１…仮想計算機、１２０，１２１…仮想プロセッサ、１３０，１３１…仮想タイマ、１４０，１４１…ゲストオペレーティングシステム（ＯＳ）、１５０…ハイパバイザ、１６０…命令シミュレーション、１６１…タイマ設定処理、１７０…スケジューリング処理、１８０…各種制御テーブル、１８１…スケジューリング制御テーブル、１９０…物理計算機、２００…Ｉ／Ｏデバイス、２１０…プロセッサ、２２０…タイマ、２２１…現在時刻、２３０…メモリ、２９９…プロセッサ休止要求、４００，４０１…仮想タイマ値、４１０，４１１…プロセッサ使用時間の累積、４２０…タイムスライス値、４３０…現在時刻。
【図１】
2008171293.tif 000003
【図２】
2008171293.tif 000004
【図３】
2008171293.tif 000005
【図４】
2008171293.tif 000006
【図５】
2008171293.tif 000007