(57)【要約】【課題】無駄な割込み処理を減らして処理効率を向上すること。【解決手段】ハイパーバイザ１０は、仮想ネットワーク機能を有し、ＶＭ２０に割込みを発生する割込み発生処理部１８を有する。割込み発生処理部１８は、保留タイマと、保留タイマ設定部と、割込み発生部を有する。保留タイマ設定部は、保留タイマにＶＭプロセスの状態情報に応じた割込み保留時間を設定する。そして、保留タイマが発動すると、割込み発生部がＶＭ２０に割込みを発生する。【選択図】図５
2019049844.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンに対する割込み要求を通知するタイミングを該仮想マシンの状態情報に応じて制御するタイミング制御部と、
前記タイミング制御部により制御されるタイミングで前記仮想マシンに割込み要求を通知する割込み通知部と
を有することを特徴とする制御装置。
【請求項２】
前記仮想マシンは、他の仮想マシンと仮想ネットワークを用いて通信を行い、該仮想ネットワーク用の仮想ＮＩＣを備え、
前記割込み通知部により通知される割込み要求は仮想ＮＩＣの割込み要求であることを特徴とする請求項１に記載の制御装置。
【請求項３】
前記タイミング制御部は、前記仮想マシンの状態が実行中である場合に、該仮想マシンに割り当てられた実ＣＰＵの残り割当時間に応じて割込み保留時間を調整することで前記タイミングを制御することを特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記タイミング制御部は、前記仮想マシンの状態が実行中である場合に、該仮想マシンに割り当てられた実ＣＰＵの残り割当時間及び前記仮想ＮＩＣにおける受信バッファ残量に応じて割込み保留時間を調整することで前記タイミングを制御することを特徴とする請求項２に記載の制御装置。
【請求項５】
前記タイミング制御部は、前記仮想マシンの状態が待機状態の場合、前記仮想マシンに対する割込み要求の頻度又は該仮想マシンが割込み処理を受理する頻度に応じて割込み保留時間を調整することで前記タイミングを制御することを特徴とする請求項１又は２に記載の制御装置。
【請求項６】
前記タイミング制御部は、前記仮想マシンの状態が実行待ち状態の場合、該仮想マシンに割り当てられた実ＣＰＵで実行中のプロセスの実行残時間に応じて割込み保留時間を調整することで前記タイミングを制御することを特徴とする請求項１又は２に記載の制御装置。
【請求項７】
前記タイミング制御部は、前記仮想マシンの状態が実行中又は実行待ち状態にある時間に対する実行中である時間の比率に応じて割込み保留時間を調整することで前記タイミングを制御することを特徴とする請求項１又は２に記載の制御装置。
【請求項８】
前記タイミング制御部は、前記仮想マシンの状態が実行待ち状態から実行中に遷移する実行待ち時間に応じて割込み保留時間を調整することで前記タイミングを制御することを特徴とする請求項１又は２に記載の制御装置。
【請求項９】
前記タイミング制御部は、前記仮想マシンの優先度に応じて割込み保留時間を調整することで前記タイミングを制御することを特徴とする請求項１又は２に記載の制御装置。
【請求項１０】
コンピュータが、
仮想マシンに対する割込み要求を通知するタイミングを該仮想マシンの状態情報に応じて制御し、
制御したタイミングで前記仮想マシンに割込み要求を通知する
処理を実行することを特徴とする制御方法。
【請求項１１】
コンピュータに、
仮想マシンに対する割込み要求を通知するタイミングを該仮想マシンの状態情報に応じて制御し、
制御したタイミングで前記仮想マシンに割込み要求を通知する
処理を実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、制御方法及び制御プログラムに関する。
【背景技術】
【０００２】
半導体技術の進歩により、近年のマイクロプロセッサは複数のＣＰＵ（Central  Processing  Unit）コアが１つのパッケージに集積されている。複数のＣＰＵコアを有効活用する方法として、実サーバ上で複数のＶＭ（Virtual  Machine：仮想マシン）を動作させるサーバ仮想化の利用が一般的になっている。ＶＭは、実サーバ上で動作するハイパーバイザによるエミュレーションにより、ＶＭ上で動作するＯＳ（Operating  System）やアプリケーションに対し擬似的にコンピュータが存在するかのように見せることにより実現される。
【０００３】
図１１は、ＮＦＶ（Network  Functions  Virtualization）を含むサーバ仮想化を説明するための図である。図１１において、ＣＰＵｓは、複数のＣＰＵ２を表す。ＣＰＵ２は実ＣＰＵである。ＮＩＣ（Network  Interface  Card）３は、ネットワークを介して実コンピュータ間で通信を行うためのネットワークインタフェースカードである。ＣＰＵ２、ＮＩＣ３等のハードウェアリソースは、ＣＰＵ２で動作するハイパーバイザ８０により管理される。ハイパーバイザ８０上では複数のＶＭ２０が動作する。ＶＭ２０上ではＯＳ（Operating  System）が動作する。
【０００４】
ハイパーバイザ８０は、スケジューラ８２と、イーサドライバ８５と、ｂｒ８６と、ｖｌｉｎｋ８７と、ＩＰｆｗｄ８９とを有する。スケジューラ８２は、ＣＰＵ２をＶＭ２０に割り当てる。イーサドライバ８５は、ＮＩＣ３を制御する。ｂｒ８６は、レイヤ２中継機構を備えたブリッジである。ｖｌｉｎｋ８７は、ＶＭ２０とｂｒ８６を接続する仮想リンクである。ＩＰｆｗｄ８９は、レイヤ３の中継機構である。ハイパーバイザ８０は、ｂｒ８６、ｖｌｉｎｋ８７、ＩＰｆｗｄ８９等を用いて仮想ネットワークを提供する。
【０００５】
ＶＭ２０は、仮想ＮＩＣ２３と仮想ＰＩＣ（Programmable  Interrupt  Controller）２４を有する。仮想ＮＩＣ２３は、ＶＭ２０間の通信に用いられる仮想のネットワークインタフェースカードである。仮想ＰＩＣ２４は、ハイパーバイザ８０からの割込みをＶＭ２０に与える仮想割込みコントローラである。ハイパーバイザ８０は、ＮＩＣ３からの割込みを検出すると、割込みに対応するＶＭ２０に割込みを発生する。
【０００６】
ハイパーバイザ８０によるエミュレーションによるオーバーヘッドは、ＣＰＵ２に搭載された仮想化支援機能によりプログラム実行時は少なくなっているが、Ｉ／Ｏエミュレーションや割込みエミュレーションの負荷は依然として高い。
【０００７】
図１２は、ＶＭ２０における割込み処理を説明するための図である。図１２に示すように、実マシン上での割込み処理には、ＣＰＵ２による割込みハンドラ処理と割込みバックエンド処理がある。割込みハンドラ処理は、割込みを受け付け、次の割込みを受け付けるまでに最低限行う必要がある処理である。割込みバックエンド処理は、割込みの種類に応じて実行される処理である。
【０００８】
一方、ＶＭ２０における割込み処理には、ハイパーバイザ８０による割込みエミュレーション処理と、ｖＣＰＵによるＶＭ停止／再開処理、割込みハンドラ処理及び割込みバックエンド処理とがある。ここで、ｖＣＰＵはＶＭ２０を実行する仮想ＣＰＵであり、ＶＭ停止／再開処理はＶＭ２０実行を停止する処理及び再開する処理である。このように、ＶＭ２０における割込み処理は、実マシン上での割込み処理と比較してオーバーヘッドが大きい。
【０００９】
また、ＮＩＣ３は、ハードウェアとの処理同期のため、パケット単位で割込みを発生する。したがって、通信トラフィックが増えると割込み発生頻度が増えるため、ハイパーバイザ８０及びｖＣＰＵによるオーバーヘッドが増加する。
【００１０】
従来、ＮＩＣ３においては、割込み集約（Interrupt  Coalesce）あるいは割込みスロットル制御と呼ばれる技術が実用化されている。割込み集約は、割込みの発生頻度を制限することにより割込み処理のオーバーヘッドを減らす。
【００１１】
図１３は、割込み集約を説明するための図である。図１３に示すように、割込み集約では、割込み要因が発生する毎に割込み要求を行うことはない。ＣＰＵ２によって割込みが受理され応答されるまでに次の割込み要求は行われないため、結果的に割込みは集約されることがあるが、割込み集約は、割込み要求を最小間隔（１）又は遅延（２）で間引くことによって、割込みの発生頻度を制限する。
【００１２】
図１４は、割込み集約による処理効率の改善効果を説明するための図である。図１４に示すように、割込みハンドラ処理については、割込み要求の間引きにより回数が減り、また、間引きがあっても１回の処理量は間引きのない場合と比べてあまり変わらない。割込みバックエンド処理については、間引いた場合の処理量は基本的には各割込みの処理量を加えたものとなるが、まとめることによって多少減る。このように、割込み集約によって割込みの処理効率を改善することができる。
【００１３】
なお、複数のＯＳに基づく処理を切替え制御するプロセス制御において、割込み処理要求に対応する割込み処理実行期間としての割込み処理パーティションを予め設定されたパーティション切替えタイミングに一致させることで、処理負荷の増大を防ぐ技術がある。
【００１４】
また、入出力装置の応答が俊敏なコンパクトで性能の良い仮想計算機システムの入出力割込み制御を行う技術がある。この技術は、仮想計算機が翻訳実行モードにより動作している時、該ＣＰＵのポーリングインターバル又は仮想計算機に対する割込み動作を契機として入出力割込み認識手順を起動する。そして、この技術は、保留入出力割込みの数と、他仮想計算機が保留できる最大入出力割込み要因数とを比較し、他仮想計算機の保留入出力割込みの数が他仮想計算機が保留できる最大入出力割込み要因数より大きければ、実行中の処理を中断する。そして、この技術は、保留入出力割込みインターセプションを起こし、制御を仮想計算機制御プログラムに渡す。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００４−３６２１００号公報
【特許文献２】特開平６−１８７１７８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
図１３に示した割込み集約では、一定の時間間隔又は一定の遅延で割込みを発生させる。しかしながら、ＶＭ２０に対して割込み集約を行う場合、ＶＭ２０の状態によっては、一定の時間間隔又は一定の遅延で発生する割込みは効率良く処理されないという問題がある。例えば、ＶＭ２０の実行が保留されている場合には、割込みは処理されないため、図１２に示した割込み処理は無駄になる。
【００１７】
本発明は、１つの側面では、無駄な割込み処理を減らして処理効率を向上することを目的とする。
【課題を解決するための手段】
【００１８】
１つの態様では、制御装置は、タイミング制御部と割込み通知部とを有する。タイミング制御部は、仮想マシンに対する割込み要求を通知するタイミングを該仮想マシンの状態情報に応じて制御する。割込み通知部は、タイミング制御部により制御されるタイミングで仮想マシンに割込み要求を通知する。
【発明の効果】
【００１９】
１つの側面では、本発明は、無駄な割込み処理を減らして処理効率を向上することができる。
【図面の簡単な説明】
【００２０】
【図１】図１は、ＶＭのｖＣＰＵとオーバコミットを説明するための図である。
【図２】図２は、プロセス実行状態を説明するための図である。
【図３】図３は、プロセススケジューリングとプロセスの状態を説明するための図である。
【図４】図４は、ハイパーバイザによる割込み集約を説明するための図である。
【図５】図５は、実施例に係る情報処理システムの構成を示す図である。
【図６】図６は、割込み発生処理部の機能構成を示す図である。
【図７】図７は、ＶＭプロセスが実行中、実行待ち、待機のうちのいずれの状態にあるかの情報をＶＭプロセスの状態情報とする場合の割込み発生処理部による処理のフローを示すフローチャートである。
【図８】図８は、ＶＭプロセスの実行情報をＶＭプロセスの状態情報とする場合の割込み発生処理部による処理のフローを示すフローチャートである。
【図９】図９は、ＶＭプロセスの優先度情報をＶＭプロセスの状態情報とする場合の割込み発生処理部による処理のフローを示すフローチャートである。
【図１０】図１０は、保留タイマが発動したときの割込み発生処理部による処理のフローを示すフローチャートである。
【図１１】図１１は、ＮＦＶを含むサーバ仮想化を説明するための図である。
【図１２】図１２は、ＶＭにおける割込み処理を説明するための図である。
【図１３】図１３は、割込み集約を説明するための図である。
【図１４】図１４は、割込み集約による処理効率の改善効果を説明するための図である。
【発明を実施するための形態】
【００２１】
以下に、本願の開示する制御装置、制御方法及び制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００２２】
まず、実施例に係る割込み集約について図１〜図４を用いて説明する。図１は、ＶＭ２０のｖＣＰＵとオーバコミットを説明するための図である。図１において、ＣＰＵ２は実ＣＰＵであり、ｖＣＰＵ３０は仮想ＣＰＵである。ＶＭ２０はｖＣＰＵ３０上で動作する仮想マシンである。ハイパーバイザ１０はＣＰＵ２等のハードウェアリソースを管理し、ｖＣＰＵ３０をＣＰＵ２にマッピングする。
【００２３】
具体的には、ｖＣＰＵ３０が行う処理は、ハイパーバイザ１０で稼働するｖＣＰＵ実行プロセスによって行われる。ｖＣＰＵ実行プロセスは、ハイパーバイザ１０により１つのプロセスとして管理される。ｖＣＰＵ３０がアイドル状態にある場合等で実際に処理する命令がない状態は、ｖＣＰＵ実行プロセスがアイドル状態としてハイパーバイザ１０により管理される。一方、ｖＣＰＵ３０が実行すべき命令が存在する状態では、ｖＣＰＵ実行プロセスが実行状態となり、ハイパーバイザ１０によりｖＣＰＵ実行プロセスにＣＰＵ２が割り当てられる。
【００２４】
図１に示すように、オーバコミットなしの場合には、ｖＣＰＵ３０の数は６でありＣＰＵ２の数である８より少ない。したがって、ハイパーバイザ１０は、全ｖＣＰＵ３０にＣＰＵ２を割り当てることができる。一方、オーバーコミットありの場合には、ｖＣＰＵ３０の数は１２でありＣＰＵ２の数である８より多い。この場合、ｖＣＰＵ実行プロセスに時分割でＣＰＵ２が割り当てられる。
【００２５】
図２は、プロセス実行状態を説明するための図である。プロセスは、実行権を獲得すると実行状態（ＰＲＯＣＥＳＳ＿ＲＵＮＮＩＮＧ）に遷移する。ただし、プロセスは、ＣＰＵ２が割り当てられていない場合には実行待ち状態（ｒｅａｄｙ）であり、ＣＰＵ２が割り当てられると実行中状態（ｒｕｎｎｉｎｇ）に遷移する。プロセスが実行中状態でＣＰＵ２が他のプロセスに割り当てられる（ｐｒｅｅｍｐｔ）と、プロセスは実行待ち状態に遷移する。また、実行中のプロセスがブロックされたり、ＣＰＵ２を解放すると、プロセスは他の状態に遷移する。
【００２６】
図３は、プロセススケジューリングとプロセスの状態を説明するための図である。図３において、Ａ〜Ｄはプロセスを表す。プロセスは起動されると実行状態に遷移する。（１）の時点では、Ａだけが実行状態であり、プロセススケジューラはＡにタイムスライスを与え、Ａは起動から実行待遅延後に実行中状態に遷移する。（２）の時点、すなわちＡの実行時間（タイムスライス）終了時点では、Ｂ、Ｃも実行状態であり、プロセススケジューラは先に起動されたＢにタイムスライスを与え、Ｂは実行中状態に遷移する。なお、ＡからＢへの切り替え時には、プロセス切替処理が行われる。
【００２７】
（３）の時点、すなわちＢの実行時間終了時点では、Ａ、Ｃも実行状態であり、プロセススケジューラは未実行のＣにタイムスライスを与え、Ｃは実行中状態に遷移する。（４）の時点、すなわちＣの実行時間終了時点では、新たにＤも実行状態であり、プロセススケジューラはＤにタイムスライスを与え、Ｄは実行中状態に遷移する。（５）の時点では、Ｄがイベント待ちに入り、プロセススケジューラは実行状態のプロセス（Ａ〜Ｃ）の中からＡを選んでタイムスライスを与え、Ｄは待機中状態に遷移し、Ａは実行中状態に遷移する。ＤがＶＭ２０のｖＣＰＵ実行を担うｖＣＰＵ実行プロセスの場合、ＶＭ２０がある限りＤは存続する。
【００２８】
その後、Ａが終了すると、Ｂが実行され、Ｂが終了するとＣが実行される。そして、Ｃの実行中に割込みが発生し、割込みハンドラ処理が行われる。このとき、Ｃの実行は中断されるがプロセス状態としては“実行中”のままである。
【００２９】
ＶＭ２０のｖＣＰＵ実行を担うｖＣＰＵ実行プロセスが実行待ち状態又は待機状態の場合には、ＶＭ２０の視点ではＣＰＵ処理が停止しているのと等価であり、割込み要求が行われても割込みは処理されない。一方、ｖＣＰＵ実行プロセスが実行中状態である場合には、ｖＣＰＵに割込みを入れる処理は以下のとおりである。
【００３０】
（Ａ）ＶＭ停止を起こし制御をハイパーバイザ１０に移す。
（Ｂ）ハイパーバイザ１０は、仮想化実現処理にて割込み要因が起きているようにハードウェアエミュレーションを行う。
（Ｃ）ハイパーバイザ１０は、ＶＭ２０のプロセスの状態が割込み受付可能か否かを調べる。
（Ｄ）割込み受付可能であれば、ハイパーバイザ１０は、ＶＭの状態を割込み受付状態に強制的に変更し、割込みハンドラからＶＭ２０のｖＣＰＵ実行プロセスを再開させるようにＶＭ再開を実施する。一方、割込み受付可能でなければ、ハイパーバイザ１０は、ＶＭ再開を実施し、ＶＭ２０のｖＣＰＵ実行プロセスを再開させ、ＶＭ２０が割込可能な処理を実行するポイントでトラップを起こし、ＶＭ２０を停止し、改めて割込み発生状態に設定し直しＶＭ２０を再開する。
【００３１】
このように、割込み要因が発生してすぐに割込みをＶＭ２０に設定すると、頻繁なＶＭ停止と再開が発生する。そこで、ハイパーバイザ１０は、割込み集約を行う。ただし、ＶＭ２０のｖＣＰＵ実行を担うｖＣＰＵ実行プロセスが実行待ち状態又は待機状態の場合には、割込みを入れる処理を行っても割込みは処理されないため、ＣＰＵ２が割り当てられるまで割込みを保留してもかまわない。そこで、ハイパーバイザ１０は、ＶＭ２０のｖＣＰＵ実行を担うｖＣＰＵ実行プロセスの状態に応じて適切なタイミングで割込みを注入する割込み集約を行う。なお、以下の説明では、ＶＭ２０のｖＣＰＵ実行を担うｖＣＰＵ実行プロセスを単にＶＭプロセスと呼ぶ。
【００３２】
図４は、ハイパーバイザ１０による割込み集約を説明するための図である。図４に示すように、ハイパーバイザ１０は、ＶＭプロセスが待機状態、実行待ち状態、実行中状態のどの状態にあるかで割込み保留時間を変える。
【００３３】
ＶＭプロセスの状態が待機である場合には、割込みを発生させることでＶＭプロセスは実行状態になるが、この状態遷移のオーバーヘッドは大きい。そこで、ハイパーバイザ１０は、ＶＭプロセスが待機状態である場合には、従来の割込み集約で用いられる割込み保留時間を待機用遅延時間として用いる。
【００３４】
なお、ハイパーバイザ１０は、ＶＭ２０に対して行う割込み要求の発生頻度の統計、あるいは、ＶＭ２０が実際に割込み処理を受理する頻度の統計に応じて割込み保留時間を調整してもよい。ハイパーバイザ１０は、例えば、割込み要求の平均発生間隔の１０倍又は１６倍の時間を割込み保留時間としてもよい。あるいは、ハイパーバイザ１０は、受理頻度の逆数である受理間隔の１〜２倍程度を割込み保留時間としてもよい。ただし、割込み処理の遅延が大きくなりすぎないように、ハイパーバイザ１０は、割込み保留時間の上限（１０ｍｓ（ミリ秒））を設ける。
【００３５】
ＶＭプロセスの状態が実行待ちである場合には、ハイパーバイザ１０は、実行待ち用遅延時間を割込み保留時間の算定に用いる。そして、ハイパーバイザ１０は、実行中のプロセスに割り当てられたＣＰＵ２の残り割当時間（次に実行権を割り当ててもらえる期待があるまでの時間）に応じて割込み保留時間を調整する。すなわち、ハイパーバイザ１０は、次のプロセススケジューリング実施時、あるいは、ＶＭプロセスにＣＰＵ２が割り当てられるタイミングで割込みを入れるように割込み保留時間を調整する。
【００３６】
ＶＭプロセスの状態が実行中である場合には、ハイパーバイザ１０は、待機用遅延時間より小さな実行中用遅延時間を割込み保留時間の算定に用いる。そして、ハイパーバイザ１０は、割り当てられたＣＰＵ２の残り割当時間に応じて割込み保留時間を調整する。ハイパーバイザ１０は、ＣＰＵ２の残り割当時間が所定の閾値より小さい場合には、割込み処理が割当時間内に終了するように割込み保留時間を調整する。
【００３７】
また、ハイパーバイザ１０は、仮想ＮＩＣ２３の受信バッファ残量が所定の閾値よりも小さいときには、受信バッファが溢れることを防ぐため割込み保留時間を所定の短い時間あるいは０にする。また、ハイパーバイザ１０は、ＶＭ２０へ送信されるパケットレートを測定しておき、測定したパケットレートの場合に仮想ＮＩＣ２３の受信バッファ残量がなくなると予想される時間に対しマージンを差し引いた値を割込み保留時間としてもよい。
【００３８】
その他、ハイパーバイザ１０は、ＶＭプロセスが実行状態であった時間に対する実行中状態であった時間の比率、ＶＭプロセスが実行待ち状態であった時間、又は、ＶＭプロセスの優先度に応じて割込み保留時間を変える。例えば、ハイパーバイザ１０は、ＶＭプロセスの優先度が所定の閾値より高い場合には、割込み保留時間を０とする。
【００３９】
次に、実施例に係る情報処理システムの構成について説明する。図５は、実施例に係る情報処理システムの構成を示す図である。図５に示すように、実施例に係る情報処理システム１は、複数のＣＰＵ２と複数のＮＩＣ３をハードウェアリソースとして有する。また、情報処理システム１は、ＣＰＵ２で動作し、プロセスのスケジューリング、ＮＩＣ３の制御、仮想ネットワークの提供、ＶＭ２０の制御、ＶＭ２０への割込みの制御等を行うハイパーバイザ１０を有する。また、情報処理システム１は、ハイパーバイザ１０上で動作する複数のＶＭ２０を有する。
【００４０】
ＮＩＣ３は、通信路を介して他の情報処理システムと通信するネットワークインタフェースカードである。ＮＩＣ３は、パケット送信用の送信バッファ３ａとパケット受信用の受信バッファ３ｂを有する。
【００４１】
ハイパーバイザ１０は、情報処理システム１により読み出し可能な記録媒体の一例であるＤＶＤに記憶され、ＯＤＤ（Optical  Disk  Drive）によってＤＶＤから読み出されて情報処理システム１にインストールされる。あるいは、ハイパーバイザ１０は、ＮＩＣ３を介して接続された他の情報処理システムのデータベースなどに記憶され、これらのデータベースから読み出されて情報処理システム１にインストールされる。そして、インストールされたハイパーバイザ１０は、ＨＤＤ（Hard  Disk  Drive）に記憶され、メインメモリに読み出される。メインメモリが記憶するハイパーバイザ１０は、ＣＰＵ２によって実行される。
【００４２】
ハイパーバイザ１０は、管理情報記憶部１１と、プロセススケジューラ１２と、複数のイーサドライバ１４と、仮想スイッチ中継処理部１５と、複数の仮想リンク１６と、複数の対仮想ＮＩＣ転送処理部１７と、複数の割込み発生処理部１８とを有する。イーサドライバ１４は、ＮＩＣ３に対応付けられる。仮想リンク１６、対仮想ＮＩＣ転送処理部１７及び割込み発生処理部１８は、ＶＭ２０に対応付けられる。
【００４３】
管理情報記憶部１１は、プロセスの実行時間を管理するための情報、割込みに関する統計情報、割込み保留時間の調整に用いられる各種時間、各種閾値等を記憶する。例えば、管理情報記憶部１１は、各プロセスの状態、実行中のプロセスに割り当てられた残り割当時間、待機用遅延時間、実行待ち用遅延時間、実行中用遅延時間、受信バッファ残量の閾値を記憶する。また、管理情報記憶部１１は、ＶＭプロセス毎に割込み要求の発生頻度の統計値、割込み要求の受理頻度の統計値、実行待ち時間、実行権獲得数、優先度情報を記憶する。
【００４４】
プロセススケジューラ１２は、プロセスの実行をスケジューリングし、プロセスへのＣＰＵ２の割り当てを行う。プロセスには、ＶＭプロセス、すなわち、ＶＭ２０のｖＣＰＵ３０の実行を担うｖＣＰＵ実行プロセス１３が含まれる。
【００４５】
イーサドライバ１４は、ＮＩＣ３を制御する。イーサドライバ１４は、ＮＩＣ送信処理部１４ａとＮＩＣ受信処理部１４ｂを有する。ＮＩＣ送信処理部１４ａは、ＶＭ２０が他の情報処理装置に送信するパケットを仮想スイッチ中継処理部１５から受け取り、ＮＩＣ３の送信バッファ３ａに書き込む。ＮＩＣ受信処理部１４ｂは、他の情報処理装置がＶＭ２０に送信するパケットをＮＩＣ３の受信バッファ３ｂから読み出し、仮想スイッチ中継処理部１５に渡す。
【００４６】
仮想スイッチ中継処理部１５は、レイヤ２中継機構を備えた仮想スイッチである。仮想スイッチ中継処理部１５は、ＶＭ２０が他の情報処理装置に送信するパケットをＶＭ２０に対応付けられた仮想リンク１６から受信し、パケットの送信先に対応付けられたイーサドライバ１４に渡す。仮想スイッチ中継処理部１５は、他の情報処理装置がＶＭ２０に送信するパケットをイーサドライバ１４から受け取り、パケットの宛先のＶＭ２０に対応付けられた仮想リンク１６に送信する。
【００４７】
仮想リンク１６は、仮想スイッチ中継処理部１５と対仮想ＮＩＣ転送処理部１７を接続する仮想的なリンクである。
【００４８】
対仮想ＮＩＣ転送処理部１７は、仮想リンク１６から受信したパケットを仮想ＮＩＣ受信バッファ２３ｂに書き込み、仮想送信バッファ２３ａからパケットを読み出して仮想リンク１６へ送信する。対仮想ＮＩＣ転送処理部１７は、仮想リンク１６からパケットを受信すると割込み発生処理部１８に通知する。
【００４９】
割込み発生処理部１８は、仮想ＮＩＣ２３の割込みを発生する処理を行う。割込み発生処理部１８は、割込みを発生する処理において、管理情報記憶部１１を参照し、図４に示した、割込み集約を行う。図６は、割込み発生処理部１８の機能構成を示す図である。図６に示すように、割込み発生処理部１８は、保留タイマ１８ａと、保留タイマ設定部１８ｂと、割込み発生部１８ｃとを有する。
【００５０】
保留タイマ１８ａは、割込み保留時間が設定されるタイマである。保留タイマ設定部１８ｂは、対仮想ＮＩＣ転送処理部１７からパケット受信を通知されると、保留タイマ１８ａが起動済であるか否かを判定し、起動済である場合には、処理を終了する。一方、保留タイマ１８ａが起動済でない場合には、保留タイマ設定部１８ｂは、ＶＭプロセスの状態情報に基づいて異なる割込み保留時間を設定して保留タイマ１８ａを起動する。割込み発生部１８ｃは、保留タイマ１８ａに設定された時間が経過し、保留タイマ１８ａが発動すると、割込みをＶＭ２０に発生させる処理を行う。
【００５１】
図５に戻って、ＶＭ２０では、ＯＳ２１と、アプリ２２と、仮想ＮＩＣ２３と、仮想ＰＩＣ２４とが動作する。ＯＳ２１は、ＶＭ２０を制御する。アプリ２２は、アプリケーションである。仮想ＮＩＣ２３は、ＶＭ２０間の通信に用いられる仮想のネットワークインタフェースカードである。仮想ＰＩＣ２４は、割込み発生処理部１８が発生した割込みをＶＭ２０に与える仮想割込みコントローラである。
【００５２】
ＯＳ２１は、仮想ＮＩＣ２３を制御するドライバ２１ａを有する。ドライバ２１ａは、割込み発生処理部１８により起動される。ドライバ２１ａは、ＮＩＣ送信処理部２１ｂと、ＮＩＣ受信処理部２１ｃとを有する。ＮＩＣ送信処理部２１ｂは、アプリ２２が他のＶＭ２０で動作するアプリ２２に送信するパケットをアプリ２２から受け取り、仮想ＮＩＣ２３の仮想送信バッファ２３ａに書き込む。ＮＩＣ受信処理部２１ｃは、他のＶＭ２０で動作するアプリ２２がアプリ２２に送信するパケットを仮想ＮＩＣ２３の仮想受信バッファ２３ｂから読み出し、アプリ２２に渡す。
【００５３】
次に、ＶＭ割込み要因が発生したときの割込み発生処理部１８による処理のフローについて図７〜図９を用いて説明する。ＶＭ割込み要因の一例としては、対仮想ＮＩＣ転送処理部１７による仮想リンク１６からのパケット受信がある。
【００５４】
図７は、ＶＭプロセスが実行中、実行待ち、待機のうちのいずれの状態にあるかの情報をＶＭプロセスの状態情報とする場合の割込み発生処理部１８による処理のフローを示すフローチャートである。図８は、ＶＭプロセスの実行情報をＶＭプロセスの状態情報とする場合の割込み発生処理部１８による処理のフローを示すフローチャートである。図９は、ＶＭプロセスの優先度情報をＶＭプロセスの状態情報とする場合の割込み発生処理部１８による処理のフローを示すフローチャートである。
【００５５】
図７に示すように、割込み発生処理部１８は、保留タイマ１８ａが動作中であるか否かを判定し（ステップＳ１）、動作中である場合には、処理を終了する。一方、保留タイマ１８ａが動作中でない場合には、割込み発生処理部１８は、ＶＭプロセスの状態を判定する（ステップＳ２）。
【００５６】
そして、ＶＭプロセスの状態が実行中である場合には、割込み発生処理部１８は、管理情報記憶部１１を参照し、ＶＭプロセスに割り当てられた実行時間の残り時間ＴREMを取得する（ステップＳ３）。そして、割込み発生処理部１８は、保留タイマ１８ａに割込み保留時間ＴDLY＝ｍｉｎ（ＴREM×０．８，ＴRUN）を設定し、保留タイマ１８ａを起動する（ステップＳ４）。
【００５７】
ここで、ＴRUNは、実行中用遅延時間であり、例えば０．２ｍｓである。０．８は一例であり、割込み処理がＴREM内に終了するように調整される。また、割込み発生処理部１８は、ＮＩＣ３の受信バッファ３ｂの残量が所定の閾値よりも小さいときには、受信バッファ３ｂが溢れることを防ぐため割込み保留時間を所定の短い時間あるいは０にする。
【００５８】
また、ＶＭプロセスの状態が実行待ちである場合には、割込み発生処理部１８は、管理情報記憶部１１を参照し、ＶＭプロセスに割り当てられたＣＰＵ２を特定し（ステップＳ５）、特定したＣＰＵ２で実行中のプロセスに割り当てられた実行時間の残り時間ＴREMを取得する（ステップＳ６）。そして、割込み発生処理部１８は、保留タイマ１８ａに割込み保留時間ＴDLY＝ｍｉｎ（ＴREM，ＴWAI）を設定し、保留タイマ１８ａを起動する（ステップＳ７）。ここで、ＴWAIは、実行待ち用遅延時間であり、例えば５ｍｓである。
【００５９】
また、ＶＭプロセスの状態が待機である場合には、割込み発生処理部１８は、保留タイマ１８ａに割込み保留時間ＴDLY＝ＴIDLを設定し、保留タイマ１８ａを起動する（ステップＳ８）。ここで、ＴIDLは、待機用遅延時間であり、例えば１ｍｓである。また、割込み発生処理部１８は、ＶＭプロセスに対して行う割込み要求の発生頻度の統計、あるいは、ＶＭプロセスが実際に割込み要求を受理する頻度の統計に応じて割込み保留時間を調整してもよい。
【００６０】
このように、割込み発生処理部１８は、ＶＭプロセスが実行中、実行待ち、待機のうちのいずれの状態にあるかに基づいて保留タイマ１８ａに割込み保留時間を設定し、保留タイマ１８ａを起動するので、無駄な割込み処理を減らすことができる。
【００６１】
また、図８に示すように、割込み発生処理部１８は、保留タイマ１８ａが動作中であるか否かを判定し（ステップＳ２１）、動作中である場合には、処理を終了する。一方、保留タイマ１８ａが動作中でない場合には、割込み発生処理部１８は、管理情報記憶部１１を参照し、ＶＭプロセスの実行情報を取得する（ステップＳ２２）。
【００６２】
そして、割込み発生処理部１８は、ＶＭプロセスの平均実行待ち時間を算出する（ステップＳ２３）。すなわち、割込み発生処理部１８は、ＶＭプロセスの平均実行待ち時間ＴWAIAVE＝ＶＭプロセスの待ち時間累計値ＴWAISUM÷ＶＭプロセスの累計実行権獲得数ＮTSWを計算する。そして、割込み発生処理部１８は、ＶＭプロセスの平均実行待ち時間が所定の閾値ＴWAITHRより大きいか否かを判定する（ステップＳ２４）。すなわち、割込み発生処理部１８は、ＴWAIAVE＞ＴWAITHRか否かを判定する。例えば、ＴWAITHRは８ｍｓである。
【００６３】
そして、割込み発生処理部１８は、ＶＭプロセスの平均実行待ち時間が所定の閾値より大きい場合には、保留タイマ１８ａに割込み保留時間ＴDLY＝ＴDLＹLを設定し、保留タイマ１８ａを起動する（ステップＳ２５）。ここで、ＴDLYLは、平均待ち時間大用遅延時間であり、例えば５ｍｓである。一方、ＶＭプロセスの平均実行待ち時間が所定の閾値より大きくない場合には、割込み発生処理部１８は、保留タイマ１８ａに割込み保留時間ＴDLY＝ＴDLＹSを設定し、保留タイマ１８ａを起動する（ステップＳ２６）。ここで、ＴDLYSは、平均待ち時間小用遅延時間であり、例えば０．２ｍｓである。
【００６４】
このように、割込み発生処理部１８は、ＶＭプロセスの平均実行待ち時間に基づいて保留タイマ１８ａに割込み保留時間を設定し、保留タイマ１８ａを起動するので、無駄な割込み処理を減らすことができる。
【００６５】
また、図９に示すように、割込み発生処理部１８は、保留タイマ１８ａが動作中であるか否かを判定し（ステップＳ３１）、動作中である場合には、処理を終了する。一方、保留タイマ１８ａが動作中でない場合には、割込み発生処理部１８は、管理情報記憶部１１を参照し、ＶＭプロセスの優先度情報を取得する（ステップＳ３２）。
【００６６】
そして、割込み発生処理部１８は、ＶＭプロセスの優先度Priが所定の閾値PriTHRより大きいか否かを判定する（ステップＳ３３）。例えば、最高優先度が１５で最低優先度が０である場合には、PriTHRは７である。
【００６７】
そして、割込み発生処理部１８は、ＶＭプロセスの優先度が所定の閾値より大きい場合には、保留タイマ１８ａに割込み保留時間ＴDLY＝ＴDLＹHPを設定し、保留タイマ１８ａを起動する（ステップＳ３４）。ここで、ＴDLYHPは、高優先度用遅延時間であり、例えば０．２ｍｓである。一方、ＶＭプロセスの優先度が所定の閾値より大きくない場合には、割込み発生処理部１８は、保留タイマ１８ａに割込み保留時間ＴDLY＝ＴDLＹLPを設定し、保留タイマ１８ａを起動する（ステップＳ３５）。ここで、ＴDLYLPは、低優先度用遅延時間であり、例えば５ｍｓである。
【００６８】
このように、割込み発生処理部１８は、ＶＭプロセスの優先度に基づいて保留タイマ１８ａに割込み保留時間を設定し、保留タイマ１８ａを起動するので、優先度の高いＶＭ２０の割込みを迅速に処理することができる。
【００６９】
図１０は、保留タイマ１８ａが発動したときの割込み発生処理部１８による処理のフローを示すフローチャートである。図１０に示すように、割込み発生処理部１８は、保留された割込み要因は継続中であるか否かを判定し（ステップＳ４１）、継続中でない場合には、処理を終了する。一方、保留された割込み要因が継続中である場合には、ＶＭ割込みを発生する処理を行う（ステップＳ４２）。
【００７０】
このように、保留タイマ１８ａが発動したときにＶＭ割込みを発生する処理を行うことで、割込み発生処理部１８は、割込み要求を間引くことができる。
【００７１】
上述してきたように、実施例では、保留タイマ設定部１８ｂが、保留タイマ１８ａにＶＭプロセスの状態情報に応じた割込み保留時間を設定する。そして、保留タイマ１８ａが発動すると、割込み発生部１８ｃがＶＭ２０に割込みを発生する。したがって、割込み発生処理部１８は、無駄な割込み処理を減らして処理効率を向上することできる。
【００７２】
また、実施例では、ＶＭ２０は、仮想ＮＩＣ２３を有し、割込み発生部１８ｃは、仮想ＮＩＣ２３の割込みを発生するので、ＮＩＣ３の割込みをＶＭ２０に発生することができる。
【００７３】
また、実施例では、ＶＭプロセスの状態が実行中である場合には、保留タイマ設定部１８ｂは、ＶＭプロセスに割り当てられたＣＰＵ２の残り割当時間に基づいて割込み保留時間を調整する。したがって、割込み発生処理部１８は、ＶＭプロセスが実行中に割込みを処理できるように制御することができる。
【００７４】
また、実施例では、ＶＭプロセスの状態が実行中である場合には、保留タイマ設定部１８ｂは、仮想ＮＩＣ２３の仮想受信バッファ２３ｂの残量に基づいて割込み保留時間を調整する。したがって、割込み発生処理部１８は、仮想受信バッファ２３ｂの溢れを防ぐことができる。
【００７５】
また、実施例では、ＶＭプロセスの状態が待機である場合には、保留タイマ設定部１８ｂは、ＶＭに対する割込み要求の頻度又はＶＭが割込み処理を受理する頻度に基づいて割込み保留時間を調整する。したがって、割込み発生処理部１８は、ＶＭプロセスの状態を待機と実行中との間で切り替えるオーバーヘッドを抑えることができる。
【００７６】
また、実施例では、ＶＭプロセスの状態が実行待ちである場合には、保留タイマ設定部１８ｂは、ＶＭプロセスに割り当てられたＣＰＵ２で実行中のプロセスの残り割当時間に基づいて割込み保留時間を調整する。したがって、割込み発生処理部１８は、ＶＭプロセスが実行中状態になったタイミングで割込みを発生させることができる。
【００７７】
また、実施例では、保留タイマ設定部１８ｂは、ＶＭプロセスの状態が実行中又は実行待ち状態にある時間に対する実行中である時間の比率に基づいて割込み保留時間を調整する。したがって、割込み発生処理部１８は、ＶＭプロセスが実行中状態になったタイミングで割込みを発生させることができる。
【００７８】
また、実施例では、保留タイマ設定部１８ｂは、ＶＭプロセスの状態が実行待ちから実行中に遷移する実行待ち時間に基づいて割込み保留時間を調整する。したがって、割込み発生処理部１８は、ＶＭプロセスが実行中状態になったタイミングで割込みを発生させることができる。
【００７９】
また、実施例では、保留タイマ設定部１８ｂは、ＶＭプロセスの優先度に基づいて割込み保留時間を調整するので、割込み発生処理部１８は、優先度が高いＶＭプロセスの割込みを優先して処理することができる。
【００８０】
また、実施例では、ＮＩＣ３の割込みをＶＭ２０に発生する場合について説明したが、本発明はこれに限定されるものではなく、他の割込みをＶＭ２０に発生する場合にも同様に適用することができる。
【符号の説明】
【００８１】
１    情報処理システム
２    ＣＰＵ
３    ＮＩＣ
３ａ    送信バッファ
３ｂ    受信バッファ
１０，８０    ハイパーバイザ
１１    管理情報記憶部
１２    プロセススケジューラ
１３    ｖＣＰＵ実行プロセス
１４，８５    イーサドライバ
１４ａ    ＮＩＣ送信処理部
１４ｂ    ＮＩＣ受信処理部
１５    仮想スイッチ中継処理部
１６    仮想リンク
１７    対仮想ＮＩＣ転送処理部
１８    割込み発生処理部
１８ａ    保留タイマ
１８ｂ    保留タイマ設定部
１８ｃ    割込み発生部
２０    ＶＭ
２１    ＯＳ
２１ａドライバ
２１ｂ    ＮＩＣ送信処理部
２１ｃ    ＮＩＣ受信処理部
２２    アプリ
２３    仮想ＮＩＣ
２３ａ    仮想送信バッファ
２３ｂ    仮想受信バッファ
２４    仮想ＰＩＣ
３０    ｖＣＰＵ
８２    スケジューラ
８７    ｖｌｉｎｋ
８９    ＩＰｆｗｄ
【図１】
2019049844.tif 000003
【図２】
2019049844.tif 000004
【図３】
2019049844.tif 000005
【図４】
2019049844.tif 000006
【図５】
2019049844.tif 000007
【図６】
2019049844.tif 000008
【図７】
2019049844.tif 000009
【図８】
2019049844.tif 000010
【図９】
2019049844.tif 000011
【図１０】
2019049844.tif 000012
【図１１】
2019049844.tif 000013
【図１２】
2019049844.tif 000014
【図１３】
2019049844.tif 000015
【図１４】
2019049844.tif 000016