JP2009075766A - 仮想計算機システム及び同システムにおけるスケジュール調整方法 - Google Patents

仮想計算機システム及び同システムにおけるスケジュール調整方法 Download PDF

Info

Publication number
JP2009075766A
JP2009075766A JP2007242929A JP2007242929A JP2009075766A JP 2009075766 A JP2009075766 A JP 2009075766A JP 2007242929 A JP2007242929 A JP 2007242929A JP 2007242929 A JP2007242929 A JP 2007242929A JP 2009075766 A JP2009075766 A JP 2009075766A
Authority
JP
Japan
Prior art keywords
guest
time
cpu
reception
communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007242929A
Other languages
English (en)
Other versions
JP4620097B2 (ja
Inventor
Masaharu Takayama
雅陽 高山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2007242929A priority Critical patent/JP4620097B2/ja
Publication of JP2009075766A publication Critical patent/JP2009075766A/ja
Application granted granted Critical
Publication of JP4620097B2 publication Critical patent/JP4620097B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

【課題】ゲストOSをディスパッチするためのスケジュールを、受信側ゲストOSでの受信割り込みの解除後の受信処理が迅速に行えるように調整する。
【解決手段】CPU11を含む物理計算機1上で動作するVMM20は、割り込み管理部23及びゲストOSスケジューラ221を含む。割り込み管理部23は、送信側ゲストOSからVMM20に与えられる受信側ゲストOSへのゲストOS間通信の要求を受けて、ゲストOS間通信の受信を受信割り込みにより通知する。ゲストOSスケジューラ221は、ゲストOS31-1〜31-3ののうちの任意のゲストOSへの割り込みの要因が発生し、且つ当該要因がゲストOS間通信の受信である場合に、当該任意のゲストOSを受信側ゲストOSとして、受信割り込みの解除後の受信処理に必要なCPU時間が当該受信側ゲストOSに追加で割り当てられるようにスケジュールを調整する。
【選択図】 図1

Description

本発明は、CPUを含む物理計算機上で動作する仮想計算機マネージャによって提供される仮想計算機実行環境で複数のゲストOSが時分割で実行される仮想計算機システムに係り、特に複数のゲストOSを時分割で実行させるためのスケジュール(つまりゲストOSをディスパッチするためのスケジュール)を調整するのに好適な仮想計算機システム及び同システムにおけるスケジュール調整方法に関する。
近年、パーソナルコンピュータのような計算機システムにおいて、仮想計算機(Virtual Machine:VM)の技術を応用した研究や開発が行われているまた、仮想計算機システムを実現するための商用のアプリケーションプログラムが実際に広く利用されている。また、メインフレームにおいて古くからハードウェア(HW)で構成された仮想計算機支援機構を用いた仮想計算機システムも存在する。
一般に、パーソナルコンピュータのような計算機システム(物理計算機)は、CPU(実CPU)、各種の入出力(I/O)装置(実I/O装置)及びメモリ(実メモリ)を含むHW(実HW)で構成されている。この実HWで構成される物理計算機(物理環境)上でハイパバイザOS(オペレーティングシステム)である仮想計算機マネージャ(Virtual Machine Manager:VMM)が動作し、このVMMの提供する仮想計算機実行環境のもとで複数のゲストOSが動作をする。
VMMは、実CPU、実I/O装置及び実メモリのような物理資源の管理を行い、それらを仮想化して仮想計算機(VM)を構築する。つまりVMMは、実CPU、実I/O装置及び実メモリのような物理資源(HW資源)を時間的、空間(領域)的に、仮想計算機のそれぞれ仮想CPU、仮想I/O装置及び仮想メモリとして割り当てることによって、当該仮想計算機を構築(生成)する。各ゲストOSは仮想計算機にロードされて、当該仮想計算機内の仮想CPUによって実行される。このようにVMMは、実CPU、実I/O装置及び実メモリのような物理資源を各ゲストOSに割り当てることによって、当該各ゲストOSが同時に動作できる環境を提供し、仮想計算機システムの管理を行う。
VMMは一般に、ゲストOSに対して、仮想ネットワークや独自仕様のメッセージプロトコルのようなゲストOS同士が通信する手段(方法)を1種類以上提供する。通常、ゲストOS間通信では、受信の際に特定の処理を必要とする。例えば、受信パケットがあれば解析処理を行うとか、送信側に対してアクナレッジ(Acknowledge)を返す等の処理である。
受信の通知は割り込みによって行われることが多い。一般の仮想計算機システムでは、あるゲストOSが割り込み状態にあるときに、そのゲストOSにCPU実行時間が割り当てられる。但し、一般に割り込み処理時間が長時間にわたることは好ましくないため、実際には割り込み処理においては上記の処理のうち必要最小限のみを行って、残りの大部分は割り込み解除後に行われることが多い。
このように、受信後の処理は割り込み解除後に行われるのが一般的であるが、受信割り込み直後に実行されることが期待されている。但し、複数のゲストOSの存在する仮想計算機実行環境では、割り込み解除したために受信者以外のゲストOSにディスパッチされる可能性がある。
これらのディスパッチを伴う、複数のゲストOSを時分割で実行させるためのスケジュール(ゲストOSスケジュール)の調整に用いられる方法は、例えば非特許文献1乃至3に記載されている。非特許文献1には仮想計算機のCPUのディスパッチに関する説明が記載されている。ここには、CPU割り当て単位としての「タイム・スライス量子(Time Slice Quantum)」が記載されている。非特許文献2及び3には、パーソナルコンピュータでのオープンソースで開発されている仮想化ソフトウェア「Xen」のディスパッチャ及びスケジューリングに関する内容が記載されている。ここには、「sefdスケジューラ」と呼ばれているデッドラインベースのスケジューラポリシに関して記載されている。
岡崎世雄・全先実著,「OSシリーズ11 VM」,共立出版株式会社,1989年8月,p.97−100 高橋浩和,「仮想マシンモニター Xen3.0解読室 第3回 ドメインのスケジューリング(1)」,オープンソースマガジン,2006年6月号,ソフトバンククリエイティブ株式会社,第161−170ページ 高橋浩和,「仮想マシンモニター Xen3.0解読室 第4回 ドメインのスケジューリング(2)」,オープンソースマガジン,2006年7月号,ソフトバンククリエイティブ株式会社,第147−155ページ
上記したような仮想計算機システムでは、ゲストOSのディスパッチ方針が通信の効率に影響を与える。ここで、ゲストOS間の通信として、例えば以下に挙げるような2つの特徴的なモデルが考えられる。
(1)第1は、1対のゲストOSの間で定常的に一連の関連ある処理として交互に行われる通信(1対1の通信)である。このような通信(以下、第1のタイプの通信と称する)は、1対のゲストOSが協調して作業を行うような場合に発生する。
(2)第2は、1つのゲストOSと他の複数のゲストOSとの間で頻繁に行われる通信(つまり複数のゲストOSの間で頻々に行われる通信)であり、個々の通信の間には関連性はない。このような通信(以下、第2のタイプの通信と称する)は、サーバ・クライアントモデルの通信を行うような場合に発生する。
さて、仮想計算機システムにおいて、ゲストOSはVMMによってCPU時間を与えられた間のみディパッチして動作することができる。したがって、ゲストOS間の通信の性能(スループットまたはレスポンス)は、VMMによるゲストOSのディスパッチの方針に大きく依存する。
例えば、上記第1の通信では、一方のゲストOSに行うべき処理がある場合に他方のゲストOSにCPU時間が割り当てられると、結果として処理が進まずにスループットが低下する。一方、上記第2の通信では、個々の通信に対してゲストOSのディスパッチを実施すると、ディスパッチのコストが原因でシステムの効率を悪化させる可能性がある。
このように、ゲストOS間の通信とゲストOSのディスパッチは効率面において大きな関連がある。しかしながら、非特許文献1乃至3には、この点を考慮してゲストOSをディスパッチするためのスケジュール調整について記載されていない。
本発明は上記事情を考慮してなされたものでその目的は、ゲストOSをディスパッチするためのスケジュールを、受信側ゲストOSでの受信割り込みの解除後の受信処理が迅速に行えるように調整することができ、これによりゲストOS間通信が効率よく行える仮想計算機システム及び同システムにおけるスケジュール調整方法を提供することにある。
本発明の1つの観点によれば、CPUを含む物理計算機上で動作する仮想計算機マネージャによって提供される仮想計算機実行環境で複数のゲストOSが時分割で実行される仮想計算機システムが提供される。この仮想計算機システムにおいて、前記仮想計算機マネージャは、前記複数のゲストOSのうちの任意のゲストOSへの割り込みを管理する割り込み管理手段であって、送信側ゲストOSから前記仮想計算機マネージャに与えられる受信側ゲストOSへのゲストOS間通信の要求を受けて、前記送信側ゲストOSからの送信データの前記受信側ゲストOSでの受信を受信割り込みにより通知する割り込み管理手段と、前記複数のゲストOSを時分割で実行させるためのスケジュールを管理するスケジューラであって、前記複数のゲストOSのうちの任意のゲストOSへの割り込みの要因が発生し、且つ当該要因が前記受信割り込みである場合に、当該任意のゲストOSを前記受信側ゲストOSとして、前記受信割り込みの解除後の受信処理に必要なCPU時間が当該受信側ゲストOSに追加で割り当てられるように前記スケジュールを調整するスケジューラと、前記スケジューラによって調整された前記スケジュールに従って前記複数のゲストOSをディスパッチするディスパッチャとを具備することを特徴とする。
本発明によれば、あるゲストOSへの割り込みの要因が受信割り込みによる通知を必要とするゲストOS間通信の受信である場合に、当該ゲストOS(つまり受信側ゲストOS)での受信割り込みの解除後の受信処理に必要なCPU時間が当該ゲストOSに追加で割り当てられるようにスケジュールが調整される。これにより受信側ゲストOSでは、追加で割り当てられるCPU時間を使用して受信処理を迅速に行うことができ、その結果としてゲストOS間の通信の効率が向上し、仮想計算機システム全体の処理効率を向上させることができる。
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る仮想計算機システム(VMシステム)の構成を示すブロック図である。図1に示す仮想計算機システムは、物理計算機1を用いて実現される。物理計算機(実計算機)1は、仮想計算機の実行環境を提供するハードウェア(HW)10を備えている。HW10は、CPU(実CPU)11、I/O(入出力)装置(実I/O装置)12及びメモリ(実メモリ)13を含む。
物理計算機1のHW10上では、仮想計算機マネージャ(Virtual Machine Manager:VMM)20が動作する。VMM20は、仮想計算機システムの管理を行い、仮想計算機が動作する環境(仮想計算機実行環境)を構築する。更に具体的に述べるならば、VMM20は、物理計算機1のHW10を構成するCPU11、I/O12及びメモリ13のような物理資源(ハードウェアリソース)を制御すると共に当該物理資源の時間的、領域的な配分を管理することにより、複数の仮想計算機、例えば3台の仮想計算機(VM)30-1,30-2,30-3が動作する仮想計算機実行環境を提供する。VM30-1,30-2,30-3は何れも、VMM20が、物理計算機1のCPU11、I/O12及びメモリ13を、時間的、領域的に図示せぬ仮想CPU、仮想I/O及び(VM30-1,30-2,30-3の)メモリとして割り当てることにより構築される。
VM30-1,30-2,30-3上では、それぞれゲストOS31-1(OS#1),31-2(OS#2),31-3(OS#3)が動作する。更に具体的に述べるならば、ゲストOS31-1〜31-3は、それぞれVM30-1〜30-3にロードされて、当該VM30-1〜30-3内の仮想CPUによって実行される。ゲストOS31-1〜31-3には、それぞれゲストOS番号1〜3が割り当てられている。
VMM20は、ゲストOS間通信管理部21、ゲストOS実行管理部22、割り込み管理部23及びゲストOSコンテキスト管理部24を含む。
ゲストOS間通信管理部21は、ゲストOS31-1〜31-3間の通信を管理すると共にその通信のための機能(送信手続き及び受信手続き等の通信手段)を提供するモジュールである。本実施形態においてゲストOS間の通信手段は、送信元(送信側)のゲストOSからのデータパケットを送信先(受信側)のゲストOSの受信バッファにコピーすることによって情報の受け渡しを行うものであるとするが、これに限らない。例えば通信手段が、送信ゲストOSと受信側ゲストOSとで共有されるメモリ空間を介して情報の受け渡しを行うものであっても構わない。また、ゲストOS間の通信手段が複数存在する場合、ゲストOS間通信管理部21が通信手段の種類に応じて複数存在しても構わない。
ゲストOS間通信管理部21は、ゲストOSに対してゲストOS間の通信手段として、ゲストOS間通信インタフェース(ゲストOS間通信IF)を提供する。図1の例では、ゲストOS31-1,31-2に対し、ゲストOS間通信管理部21(VMM20内のゲストOS間通信管理部21)によってそれぞれゲストOS間通信IF210が提供されている状態が示されている。ゲストOS31-1,31-2は、それぞれゲストOS間通信IF210を使用して、他のゲストOSへのデータ送信、或いは他のゲストOSから受信したデータの取得を、VMM20に対して要求する。ここで、ゲストOS31-3に対してゲストOS間通信IF210が提供されるならば、当該ゲストOS31-3もゲストOS31-1,31-2と同様にデータ送信或いはデータ取得をVMM20に対して要求することができる。
ゲストOS間通信管理部21は、ゲストOS間通信監視部211を含む。ゲストOS間通信監視部211は、ゲストOS間通信管理部21によって送信側のゲストOS31-i(i=1,2,3)及び受信側のゲストOS31-j(j=1,2,3、但しj≠i)にそれぞれ提供されるゲストOS間通信IF210を用いてのゲストOS間通信の状況を監視する。ゲストOS間通信監視部211は、この監視の結果に基づき、受信側のゲストOS31-jにおける後述する受信処理に必要なCPU追加割当時間として用いられるCPU時間(CPU実行時間)を決定する。
ゲストOS実行管理部22はゲストOS31-1〜31-3の実行を管理する。ゲストOS実行管理部22は、ゲストOSスケジューラ221、CPU時間割当テーブル222及びディスパッチャ223を含む。
ゲストOSスケジューラ221は、各ゲストOS31-1〜31-3に対して、いつ、どれだけの期間CPU11を仮想CPUとして割り当てるか、つまり、どれだけのCPU時間(CPU実行時間)を割り当てるかを管理するモジュールである。
CPU時間割当テーブル222は、各ゲストOS31-1〜31-3をディスパッチするためのスケジュール(の情報)を保持するデータテーブルである。更に具体的に述べるならば、CPU時間割当テーブル222は、CPU時間を各ゲストOS31-1〜31-3にいつの時点でどれだけ割り当てるかの予定(スケジュール)を表すデータテーブルである。CPU時間割当テーブル222によって表される(保持される)スケジュール(の情報)は動的に変更可能である。図1では、CPU時間割当テーブル222はVMM20のゲストOS実行管理部22に含まれているが、物理的には例えばメモリ13に格納して用いられる。
図2はCPU時間割当テーブル222の示すスケジュール例を示す。図2に示すスケジュールでは、現在から24ms先の時点までのCPU時間割り当て予定が設定されている。ここでは、24msが2ms毎に12分割されて、CPU時間が3個のゲストOS31-1〜31-3に2ms(のフレーム)単位でラウンドロビンで割り当てられる予定であることが示されている。12分割された各枠内の数字はゲストOS番号を表している。CPU時間割当テーブル222は、ゲストOSスケジューラ221によって更新される。ここではCPU時間割当テーブル222は、実際にゲストOSのコンテキストスイッチ(他のゲストOSへのディスパッチ)が発生したタイミングで更新される。
ディスパッチャ223は、現在CPU11を使って実行しているゲストOSをCPU時間割当テーブル221に基づいて他のゲストOSに切り替えるためのモジュールである。即ちディスパッチャ223は、CPU時間割当テーブル222の示すCPU時間割り当ての順番(図2の例では左端から右端に向かう順番)に従ってゲストOSのディスパッチを行う。なお、図2に示されるCPU時間割当テーブル222のようなフレーム単位のスケジュール表に基づくスケジューリングに代えて、プライオリティキューを使ったスケジューリングを適用することも可能である。
割り込み管理部23は、ゲストOSへの割り込みを管理する。ゲストOSへの割り込みの1つに、受信割り込みがある。受信割り込みは、送信側ゲストOS31-iから受信側ゲストOS31-jへの通信(ゲストOS間通信)に伴う送信データの受信を当該ゲストOS31-jに通知するための割り込みである。
ゲストOSコンテキスト管理部24は、ゲストOS31-1〜31-3を実行する際に必要な情報の集合であるゲストOSコンテキスト241-1〜241-3を生成する。図1では、ゲストOSコンテキスト241-1〜241-3はVMM20のゲストOSコンテキスト管理部24に含まれているが、物理的には例えばメモリ13によって提供されるメモリ領域に格納して用いられる。
図3はゲストOSコンテキスト241-i(i=1,2,3)のデータ構造例を示す。ゲストOSコンテキスト241-iは、ゲストOS固有データ242、割り込み要因レジスタ243及びCPU追加割当時間情報244を含む。
ゲストOS固有データ242は、ゲストOS切り替え時のCPUレジスタ状態を含む情報である。
割り込み要因レジスタ243は、ゲストOS31-iに割り込みが発生した場合に、その割り込みの要因を識別するためのビットの群から構成される割り込み要因保持管理手段である。割り込み要因レジスタ243はゲストOS通信受信ビットを含む。ゲストOS通信受信ビットは、ゲストOS31-iへの割り込みが、ゲストOS間通信による送信データの受信を当該ゲストOS31-iに通知するための割り込み、つまり受信割り込みであることを示す特定ビットである。このゲストOS通信受信ビットは、ゲストOS間通信による送信データがゲストOS31-iで受信された際(本実施形態では、ゲストOS31-iの受信バッファにコピーされた際)にONされる。割り込み要因レジスタ243は、例えば、物理計算機1のHW10に含まれている物理レジスタをゲストOS31-iが動作するVM30-iの実行環境(仮想計算機実行環境)にマップすることによって実現されるものとする。しかし、割り込み要因レジスタ243が、VMM20によって作成される仮想レジスタであっても構わない。
CPU追加割当時間情報244は、ゲストOS31-iが他のゲストOSからの通信を受信した場合に、当該ゲストOS31-iに追加で割り当てられるCPU時間(CPU追加割当時間)の値を表す変数である。CPU追加割当時間情報244には、ゲストOS間通信の受信側でのデータ受信に伴う処理(受信処理)に必要なCPU時間(CPU実行時間)を示す値が用いられる。本実施形態ではCPU追加割当時間情報244として、4msの値が設定されているものとする。但し、CPU追加割当時間情報244は、後述するCPU追加割当時間設定部240によって動的に変更される。CPU追加割当時間情報244はゲストOS31-iから参照される必要のない変数である。なお、ゲストOS間通信の手段が複数存在する場合、それぞれの手段に対応した変数(CPU追加割当時間情報244)が設定される構成であっても良い。
再び図1を参照すると、ゲストOSコンテキスト管理部24はCPU追加割当時間設定部240を含む。CPU追加割当時間設定部240は、ゲストOS間通信管理部21内のゲストOS間通信監視部211によるゲストOS間通信の状況の監視結果に基づき、受信側のゲストOS31-j(j=1,2,3)における受信処理に必要なCPU時間(CPU実行時間)をCPU追加割当時間として決定する。CPU追加割当時間設定部240は、ゲストOSコンテキスト241-jに含まれているCPU追加割当時間情報244を、決定されたCPU追加割当時間の値に設定変更する。
このように、ゲストOS間通信の状況に応じて、受信側のゲストOS31-jにおける受信処理に必要なCPU時間がCPU追加割当時間として動的に設定される構成とすることにより、システム全体の処理が効率よく進められるようになる。
なお、各ゲストOSコンテキスト241-jに含まれるCPU追加割当時間情報244を、ゲストOS31-j毎のCPU追加割当時間の設定値が保存された設定ファイルを用いて、例えばシステム起動時にCPU追加割当時間設定部240が設定する構成とすることも可能である。ここで、HW10に含まれているI/O12がハードディスクドライブのようなディスクドライブであるとする。この場合、上述の設定ファイルをユーザの操作により予め作成してディスクドライブ(I/O12)に格納しておき、システム起動時に、CPU追加割当時間設定部240が当該設定ファイルを当該ディスクドライブから読み込んで、当該設定ファイルに基づいて各ゲストOSコンテキスト241-jに含まれるCPU追加割当時間情報244を設定すれば良い。
このように、ユーザの操作により予め作成された設定ファイルに基づき、各ゲストOSコンテキスト241-jに含まれるCPU追加割当時間情報244を設定する手法を適用しても、当該ユーザが各ゲストOS31-jの処理内容を熟知している場合は、各ゲストOS31-jに対して適切なCPU追加割当時間を設定することが可能となるため、システム全体の処理が効率よく進められる。
また、CPU追加割当時間情報244として有効なCPU追加割当時間の値が与えられているか否かによって、ゲストOS31-jに対する受信割り込み発生に伴う割り込み処理の直後に当該ゲストOS31-jに対して追加のCPU時間(CPU追加割当時間)を付与するか否かを決定することも可能である。
次に、図1の仮想計算機システムにおける動作の概要について説明する。
まず、あるゲストOS31-jが他のゲストOS(送信側ゲストOS)31-iからのゲストOS間通信の送信データをVMM20を介して受け取ったものとする。このような場合、VMM20内の割り込み管理部23は、送信側ゲストOS31-iからの送信データの受信をゲストOS31-j(つまり受信側ゲストOS31-j)に通知するために当該受信側ゲストOS31-jへの割り込み(受信割り込み)を発生する。
多くの通信形態では、受信側ゲストOS31-jは、データ受信後に受信データ(例えばパケットデータ)の解析やアクナレッジ(ACK)の返信のような受信に伴う処理(受信処理)を行う必要がある。一般にゲストOSは仮想計算機実行環境でない通常の計算機環境で動作するものをベースにしている場合が多い。このようなゲストOSは、割り込み処理と受信処理とを別々に実装していることが多い。そのため従来技術では、受信側ゲストOS31-jによる受信処理の大部分は、データを受信した直後ではなくて、割り込み解除後に行われるのが一般的である。
図4は、CPU時間割当テーブル222によって表されるゲストOS31-1〜32-3を対象とするスケジュール(CPU時間割り当てスケジュール)の問題を説明するための図である。図4において、時点t0は現在時点であり、時点t0から24ms先の時点tnまでの時間24msは、2ms毎に12分割されて管理される。図4の例では、時点t0から、CPU時間が3個のゲストOS31-1〜31-3に2ms単位でゲストOS31-2→ゲストOS31-3→ゲストOS31-1→ゲストOS31-2…のようにラウンドロビンで割り当てられることが予定されている。
さて、時点t0でゲストOS31-2にCPU11が割り当てられた結果、当該ゲストOS31-2の実行が開始されたものとする。そして、時点t0から例えば1msが経過した時点t1で、ゲストOS(送信側ゲストOS)31-2がゲストOS(受信側ゲストOS)31-1に対してVMM20を経由して通信を行ったものとする。
この場合VMM20の割り込み管理部23は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS間通信受信ビットをONにする。
またVMM20のゲストOS実行管理部22に含まれているディスパッチャ223は、従来技術であれば、受信側ゲストOS31-1が割り込み状態であることを確認して当該ゲストOS31-1の割り込みハンドラ(図示せず)に一時的にディスパッチする。ゲストOS31-1の割り込みハンドラは、当該ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS間通信受信ビットのON状態に基づき割り込み要因を確認し、当該受信ビットをOFFする割り込み処理を行う。そしてゲストOS31-1の割り込みハンドラは割り込み処理後、早い段階(実際の受信処理を行う前に)で割り込み解除をVMM20に通知する。
従来技術では、VMM20のディスパッチャ223はゲストOS31-1から割り込み解除の通知を受けた場合、当該ゲストOS31-1に一時的に割り当てていたCPU11をCPU時間割当テーブル222の示すスケジュールの通りにゲストOS31-2に返却する。これによりゲストOS31-2が再びディスパッチされる。ここで、ゲストOS31-1がゲストOS31-2からの送信データの受信処理に例えば4msの時間が必要であるものとする。この場合、従来技術でば、ゲストOS31-1が受信処理を終了するのは、当該ゲストOS31-1に2msのCPU時間が2回割り当てられて、その2回目のCPU時間が経過した時点t2である。この時点t2は、図4からも明らかなように、時点t0(つまりCPU時間割当テーブル222の示すスケジュールの開始時点)から10ms経過した時点である。
さて、送信側ゲストOS31-2が、受信側ゲストOS31-1に送信したデータに対する当該ゲストOS31-1の受信処理の後に当該ゲストOS31-1から返されるACKを待って、自身の処理を再開することがある。ところが従来技術では、受信側ゲストOS31-1の受信処理が終了するのは時点t0から10msが経過した時点t2である。時点t0から時点t2までの間に、送信側ゲストOS31-2にはCPU11が2ms単位で(つまり2msのCPU時間が)2度割り当てられる。
従来技術では、送信側ゲストOS31-2に2度割り当てられるCPU時間内に、受信側ゲストOS31-1からACKが返されない。このため送信側ゲストOS31-2は、2度割り当てられるCPU時間において処理を再開できず、CPU時間の無駄が生じる。このことから本発明者は、ゲストOS間通信が行われる場合に、受信側ゲストOSでの受信処理は迅速に行われた方が有利であることを認識するに至った。
そこで本実施形態では、受信側ゲストOS31-1へのゲストOS間通信の割り込みが発生する場合、当該割り込みに対応する割り込み処理の終了に伴う割り込み解除後も当該ゲストOS31-1に追加でCPU時間が割り当てられるように、VMM20のゲストOSスケジューラ221によってCPU時間割当テーブル222が変更される。
図5は、変更後のCPU時間割当テーブル222によって表されるスケジュールの例を示す。図5の例では、時点t1で受信側ゲストOS31-1への受信割り込みが発生し、その時点t1から受信処理に必要な4msが経過する時点t3までの期間、当該ゲストOS31-1にCPU時間(CPU追加割当時間)が割り当てられる。この結果、CPU時間割当テーブル222の示すスケジュールの開始時点t0から5ms経過した時点t3までの間に、受信側ゲストOS31-1は受信処理を完了させることができる。
このように本実施形態においては、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれているCPU追加割当時間情報244に基づいてCPU時間割当テーブル222を変更することにより、図5に示されるようにCPU時間割り当てのスケジュールを変更するようにしている。これにより、CPU時間割当テーブル222を変更せずに、図4で示されるような、元のCPU時間割当テーブル222の示すスケジュールの通りに受信側ゲストOS31-1をディスパッチする場合に比べて、当該ゲストOS31-1の受信処理を早く完了させることができる。この結果、送信側ゲストOS31-2の処理も、早く進めさせることができる。
次に、上述のような、受信側のゲストOSの受信処理を早く完了させるためのスケジュール調整処理の手順について、図6のフローチャートを参照して説明する。
まず、送信側ゲストOS31-2が、受信側ゲストOS31-1との間のゲストOS間通信のために、VMM20に対してゲストOS間通信IF210の呼び出しを行ったものとする。本実施形態において、このゲストOS間通信IF210の呼び出しは、送信側ゲストOS31-2からVMM20に対してゲストOS間通信IFコール命令を発行することにより実現される。
VMM20のゲストOS間通信管理部21は送信側ゲストOS31-2からのゲストOS間通信IFの呼び出しを受けて、当該ゲストOS31-2及び受信側となるゲストOS31-1の各々に対して、それぞれゲストOS間通信IF210を提供する(ステップS1)。これにより送信側ゲストOS31-2は、ゲストOS間通信IF210を用いて、VMM20を介して受信側ゲストOS31-1(の受信バッファ)にデータを送信することができる。
するとVMM20の割り込み管理部23は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS間通信受信ビットをONにする(ステップS2)。
さて、VMM20のゲストOSスケジューラ221は、受信側ゲストOS31-1への何らかの割り込みの要因が発生すると、ディスパッチャ223が受信側ゲストOS31-1への割り込み発生に伴う当該ゲストOS31-1のディスパッチを発生させる直前に、ステップS11を実行する。このステップS11においてゲストOSスケジューラ221は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS通信受信ビットがON状態にあるかを判定する。つまりステップS11においてゲストOSスケジューラ221は、受信側ゲストOS31-1への割り込みの要因が、受信割り込みによる通知が必要な、当該受信側ゲストOS31-1でのゲストOS間通信の受信であるかを判定する。なお、受信側ゲストOS31-1への割り込み(受信割り込み)がいつ発生するかはシステムの実装に依存し、上記ステップS2の直後である必要はない。
もし、受信割り込みビットがON状態にあり、したがって受信側ゲストOS31-1への割り込みの要因がゲストOS間通信の受信であるならば(ステップS11)、ゲストOSスケジューラ221はステップS12を実行する。このステップS12においてゲストOSスケジューラ221は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれているCPU追加割当時間情報244が有効なCPU追加割当時間の値を示しているかを判定する。
もし、CPU追加割当時間情報244が有効なCPU追加割当時間の値を示しているならば(ステップS12)、ゲストOSスケジューラ221は、そのCPU追加割当時間の値に基づいて、上述のようなCPU時間割当テーブル222の変更を行う(ステップS13)。ここでは、受信側ゲストOS31-1への割り込み(受信割り込み)発生に伴う割り込み処理の直後に、CPU追加割当時間情報244の示すCPU時間(CPU追加割当時間)が当該ゲストOS31-1に割り当てられるように、CPU時間割当テーブル222が変更(更新)される。なお、CPU時間割当テーブル222の示すスケジュールの範囲内で受信側ゲストOS31-1に割り当てられるCPU追加割当時間がまかなえない場合は、更に先のスケジュールを作成することで解決できる。
ゲストOSスケジューラ221によってCPU時間割当テーブル222が変更されると(ステップS13)、割り込み管理部23は受信側ゲストOS31-1への割り込み(受信割り込み)を発生する(ステップS14)。
一方、受信割り込みビットがON状態になく、したがって受信側ゲストOS31-1への割り込みの要因がゲストOS間通信の受信でないならば(ステップS11)、ステップS12及びS13をスキップして、当該要因に対応する受信側ゲストOS31-1への割り込み(受信割り込みとは異なる割り込み)が発生される(ステップS14)。また、ステップS12において、CPU追加割当時間情報244が有効なCPU追加割当時間の値を示していないと判定されたならば、ステップS13をスキップして、受信側ゲストOS31-1への割り込み(受信割り込み)が発生される(ステップS14)。
次に上記実施形態で適用される、ゲストOS31-jに固有のCPU追加割当時間情報244、即ちゲストOS31-jにおける受信処理に必要なCPU時間(CPU追加割当時間)の値を、常に最適な値に動的に変更することによってシステムの通信を最適化するための処理手順について説明する。
システムの通信は、ゲストOS31-i及びゲストOS31-jが定常的に1対1で交互に通信を行う第1のタイプの通信と、複数のゲストOS31-1〜31-3が頻繁に通信を行う第2のタイプの通信に大別される。そこで、第1のタイプの通信が行われる状況でのシステムの最適化と、第2のタイプの通信が行われる状況でのシステムの最適化とについて、順次説明する。
<第1のタイプの通信が行われる状況でのシステムの最適化>
まず、第1のタイプの通信が行われる状況でシステムを最適化するための処理手順について、図7のフローチャートを参照して説明する。
VM30-1〜30-3上で動作するゲストOS31-1〜31-3が第1のタイプの通信(定常的な1対1交互の通信)を行っている状況では、当該ゲストOS31-1〜31-3への受信割り込みが定常的に発生する。ゲストOS31-j(j=1,2,3)は、当該ゲストOS31-jへの受信割り込みが発生すると、割り込み処理の直後に前述の受信処理を実行する。ゲストOSコンテキスト管理部24内のCPU追加割当時間設定部240は、ゲストOS31-jに追加で割り当てられるCPU時間(CPU追加割当時間)が最適値となるように、当該CPU追加割当時間の設定値(CPU追加割当時間情報244)を図7のフローチャートに従う手順で調整する。この調整は、ゲストOS間通信管理部21内のゲストOS間通信監視部211と連携することによって次のように行われる。
まず、ゲストOS間通信監視部211は、ゲストOS間の通信を監視することにより、定常的に1対1で通信(第1のタイプの通信)を行っているゲストOSを検知する(ステップS21)。このように、定常的に1対1で通信を行っているゲストOSを検知するには、例えばゲストOS間通信監視部211がゲストOS31-1〜31-3からのゲストOS間通信IF210の呼び出しのログを採取すれば良い。ここでは、ゲストOS間通信IF210の呼び出しのログから、例えばゲストOS31-iとゲストOS31-jとが交互にゲストOS間通信IF210を呼び出している回数が予め定められた閾値を超えていると判定できるならば、ゲストOS間通信監視部211は当該ゲストOS31-iとゲストOS31-jとを定常的に1対1で通信(第1のタイプの通信)を行っているゲストOSであると検知できる。
CPU追加割当時間設定部240は、ゲストOS31-iとゲストOS31-jとが定常的に1対1で通信(第1のタイプの通信)を行っているゲストOSであるとゲストOS間通信監視部211によって検知されると(ステップS21)、例えばゲストOS31-i及び31-jの双方にそれぞれ固有のCPU追加割当時間情報244を変更して、CPU追加割当時間を現在の例えば2倍に設定する(ステップS22)。
この状態でゲストOS間通信監視部211は、ゲストOS31-i及び31-jの間の通信の状況、例えば通信スループットを観測する(ステップS23)。そしてゲストOS間通信監視部211は、通信スループットが改善したか否かを判定する(ステップS24)。本実施形態では通信スループットとして、一定時間当たりの通信回数が用いられる。
もし、スループットが改善したとゲストOS間通信監視部211によって判定されたならば(ステップS24)、CPU追加割当時間設定部240は、ゲストOS31-i及び31-j各々のCPU追加割当時間を更に2倍に設定する(ステップS25a)。逆に、スループットが劣化したとゲストOS間通信監視部211によって判定されたならば(ステップS24)、CPU追加割当時間設定部240は、ゲストOS31-i及び31-j各々のCPU追加割当時間を現在の値の半分に設定し直す(ステップS25b)。
いずれの場合においても、ゲストOS間通信監視部211は、先のステップS23,S24と同様に、通信状況(スループット)の観測及び判定(ステップS26a,S27aまたはステップS26b,S27b)を行う。
もし、ステップS27aでスループットが改善したと判定された場合、CPU追加割当時間設定部240は再びステップS25aを実行して、CPU追加割当時間を更に2倍に設定する。するとゲストOS間通信監視部211は通信状況(スループット)の観測及び判定(ステップS26a,S27a)を再び実行する。これに対し、ステップS27aでスループットが劣化したと判定された場合、CPU追加割当時間設定部240はCPU追加割当時間を現在の値の半分に設定し直す(ステップS28a)。CPU追加割当時間設定部240は、ステップS28aで設定された最新のCPU追加割当時間値が最適値であるとして、処理を終了する。
一方、ステップS27bでスループットが改善したと判定された場合、CPU追加割当時間設定部240は再びステップS25bを実行して、CPU追加割当時間を現在の値の半分に設定し直す。するとゲストOS間通信監視部211は通信状況(スループット)の観測及び判定(ステップS26b,S27b)を再び実行する。これに対し、ステップS27bでスループットが劣化したと判定された場合、CPU追加割当時間設定部240はCPU追加割当時間を現在の2倍に設定する(ステップS28b)。CPU追加割当時間設定部240は、ステップS28bで設定された最新のCPU追加割当時間値が最適値であるとして、処理を終了する。
なお、CPU追加割当時間の調整範囲に制約を設け、CPU追加割当時間が制御可能な範囲を当該調整範囲として設定し、この範囲を超えないようにCPU追加割当時間を調整することも可能である。
上記実施形態では、第1のタイプの通信を行っているゲストOS31-i及び31-jの双方のCPU追加割当時間が最適値に変更される。しかし、ゲストOS31-i及び31-jの一方、例えば主として応答を返す側(受信側)のゲストOSのCPU追加割当時間のみが最適値に変更される構成であっても構わない。この構成では、ゲストOS間通信監視部211は、上記通信状況の観測結果に基づき、ゲストOS31-i及び31-jの一方が応答を返す側となる割合が予め定められた閾値を超えているかを調べることによって、当該一方が主として受信側ゲストOSであるかを判定すれば良い。
<第2のタイプの通信が行われる状況でのシステムの最適化>
ゲストOS31-1〜31-3が第2のタイプの通信を行っている状況(頻繁に通信を行っている状況)では、頻繁に受信割り込みによるディスパッチが発生する。このような状況では、ディスパッチそれ自体にかかるオーバヘッドの影響によってシステム性能の低下を引き起こす可能性がある。例えば、サーバクライアントモデルの通信は第2のタイプの通信に相当し、このような通信がゲストOS上のアプリケーションで行われているような場合、個々の通信は独立である。
したがって受信側ゲストOSへの受信割り込みに伴う割り込み処理の直後に受信処理を行わなくてもシステム全体の動作に矛盾は生じないことが多い。この場合、受信量がある程度溜まってから受信側ゲストOSに受信処理をまとめて実行させたほうが、ディスパッチの回数が減ってスループットが改善する可能性がある。
以下、第2のタイプの通信が行われる状況でシステムを最適化するための処理手順について、図8のフローチャートを参照して説明する。
ゲストOS間通信監視部211は、ゲストOS間の通信を監視することにより、通信量が多いために受信割り込みの回数が多くなったこと、つまりゲストOS間で頻繁に通信(第2のタイプの通信)が行われていることを検知する(ステップS31)。このような通信を検知するには、例えばゲストOS間通信監視部211がゲストOS31-1〜31-3からのゲストOS間通信IF210の呼び出しのログを採取すれば良い。ここでは、ゲストOS間通信IF210の呼び出しのログから、一定時間当たりの受信割り込みの回数が予め定められた閾値を超えていると判定できるならば、ゲストOS間通信監視部211はゲストOS31-1〜31-3の間で頻繁に通信(第2のタイプの通信)が行われていると検知できる。ここでは、ゲストOS31-1がサーバとして動作し、ゲストOS31-2及び31-3がクライアントとして動作しているものとする。つまり、ゲストOS31-2及び31-3が送信側、ゲストOS31-1が受信側として、それぞれ動作している
CPU追加割当時間設定部240は、ゲストOS31-1〜31-3の間の頻繁な通信(第2のタイプの通信)がゲストOS間通信監視部211によって検知されると(ステップS31)、ステップS32を実行する。このステップS32においてCPU追加割当時間設定部240は、受信側ゲストOS31-1への受信割り込みを発生させるために必要な受信量の閾値(受信量閾値)を例えば現在の値の2倍に設定すると共に、当該ゲストOS31-1に固有のCPU追加割当時間情報244を変更して、CPU追加割当時間を現在の例えば2倍に設定する。つまりCPU追加割当時間設定部240は、ゲストOS31-1の受信量閾値及びCPU追加割当時間を、いずれも現在の値の2倍に設定する。
この状態でゲストOS間通信監視部211は、ゲストOS31-1とゲストOS31-2及び31-3の間の通信の状況、例えば通信スループットを観測する(ステップS33)。そしてゲストOS間通信監視部211は、通信スループットが改善したか否かを判定する(ステップS34)。本実施形態では通信スループットとして、前述したように一定時間当たりの通信回数が用いられる。
もし、スループットが改善したとゲストOS間通信監視部211によって判定されたならば(ステップS34)、CPU追加割当時間設定部240は、ゲストOS31-1の受信量閾値及びCPU追加割当時間を、いずれも現在の値の2倍に設定する(ステップS35a)。逆に、スループットが劣化したとゲストOS間通信監視部211によって判定されたならば(ステップS34)、CPU追加割当時間設定部240は、ゲストOS31-1の受信量閾値及びCPU追加割当時間を、いずれも現在の値の半分に設定し直す(ステップS35b)。
いずれの場合においても、ゲストOS間通信監視部211は、先のステップS32,S33と同様に、通信状況(スループット)の観測及び判定(ステップS36a,S37aまたはステップS36b,S37b)を行う。
もし、ステップS37aでスループットが改善したと判定された場合、CPU追加割当時間設定部240は再びステップS35aを実行して、ゲストOS31-1の受信量閾値及びCPU追加割当時間を更に2倍に設定する。するとゲストOS間通信監視部211は通信状況(スループット)の観測及び判定(ステップS36a,S37a)を再び実行する。これに対し、ステップS37aでスループットが劣化したと判定された場合、CPU追加割当時間設定部240はゲストOS31-1の受信量閾値及びCPU追加割当時間を現在の値の半分に設定し直す(ステップS38a)。CPU追加割当時間設定部240は、ステップS38aで設定された最新の受信量閾値及びCPU追加割当時間値が最適値であるとして、処理を終了する。
一方、ステップS37bでスループットが改善したと判定された場合、CPU追加割当時間設定部240は再びステップS35bを実行して、ゲストOS31-1の受信量閾値及びCPU追加割当時間を現在の値の半分に設定し直す。するとゲストOS間通信監視部211は通信状況(スループット)の観測及び判定(ステップS36b,S37b)を再び実行する。これに対し、ステップS37bでスループットが劣化したと判定された場合、CPU追加割当時間設定部240はゲストOS31-1の受信量閾値及びCPU追加割当時間を現在の2倍に設定する(ステップS38b)。CPU追加割当時間設定部240は、ステップS38bで設定された最新の受信量閾値及びCPU追加割当時間値が最適値であるとして、処理を終了する。
なお、CPU追加割当時間に関しては、調整範囲に制約を設け、CPU追加割当時間が制御可能な範囲を当該調整範囲として設定し、この範囲を超えないようにCPU追加割当時間を調整することも可能である。
[第1の変形例]
次に、上記実施形態の第1の変形例について説明する。
上記実施形態では、ゲストOS間通信の受信側ゲストOS31-jに追加で割り当てられるCPU時間(つまりCPU追加割当時間)がVMM20側で動的に調整される。しかし、ゲストOS間通信の送信側ゲストOS31-iが、受信側ゲストOS31-jでのデータ受信に伴う受信処理に必要な時間(CPU時間)を予測して当該受信側ゲストOS31-jのCPU追加割当時間を調整することも可能である。このような調整手法は、受信側ゲストOS31-jの受信処理に必要なCPU時間量が送信側ゲストOS31-iからの通信の内容に依存する場合に最適であり、より精度の高い時間指定が期待できる。
第1の変形例の特徴は、受信側ゲストOS31-jの臨時のCPU追加割当時間を送信側ゲストOS31-iが指定することにある。以下、送信側ゲストOS31-iによる受信側ゲストOS31-jの臨時のCPU追加割当時間指定及び当該指定に基づくスケジュール調整の手順について、図9のフローチャートを参照して説明する。
ゲストOS間通信の送信側のゲストOS31-iは、受信側ゲストOS31-jとのゲストOS間通信のためにVMM20に対してゲストOS間通信IF210を呼ぶ際には、当該受信側ゲストOS31-jに対して行おうとしている通信の内容から当該受信側ゲストOS31-jでの受信処理に要する時間を予測する。送信側のゲストOS31-iは、予測された時間を受信側ゲストOS31-jに割り当てられるべきCPU時間(CPU追加割当時間)として、例えばゲストOS間通信IFコール命令の引数により指定し、当該コール命令をVMM20に対して発行することで、ゲストOS間通信IF210を呼ぶ。
するとVMM20のゲストOS間通信管理部21は、送信側のゲストOS31-2及び受信側ゲストOS31-1の各々に対して、それぞれゲストOS間通信IF210を提供する(ステップS41)。割り込み管理部23は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS間通信受信ビットをONにする(ステップS42)。このステップS42において、CPU追加割当時間設定部240は、送信側のゲストOS31-2から指定されたCPU時間の値を受信側ゲストOS31-1の臨時のCPU追加割当時間の値として設定する。ここでは、指定された臨時のCPU追加割当時間の値が、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1の一部として設定される。しかし、臨時のCPU追加割当時間の値が、ゲストOSコンテキスト241-1とは別に受信側ゲストOS31-1に対応付けて用意されるロケーション(物理的にはメモリ13内の特定の領域)に設定される構成であっても構わない。
その後、VMM20のゲストOSスケジューラ221は、ディスパッチャ224が受信側ゲストOS31-1への割り込み発生に伴う当該ゲストOS31-1のディスパッチを発生させる直前に、当該ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS通信受信ビットがON状態にあるかを判定する(ステップS51)。
もし、受信割り込みビットがON状態にある場合、つまり受信側ゲストOS31-1への割り込みの要因がゲストOS間通信の受信である場合(ステップS51)、ゲストOSスケジューラ221はステップS52を実行する。このステップS52においてゲストOSスケジューラ221は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に設定されている臨時のCPU追加割当時間の値が有効な値であるかを判定する。
もし、臨時のCPU追加割当時間の値が有効な値であるならば(ステップS52)、ゲストOSスケジューラ221は、当該臨時のCPU追加割当時間の値に基づき、上記実施形態のステップS13と同様に、CPU時間割当テーブル222の変更を行う(ステップS54)。ここでは、受信側ゲストOS31-1への受信割り込み発生に伴う割り込み処理の直後に、上記ステップS13と異なって(CPU追加割当時間情報244の示すCPU時間ではなくて)、臨時のCPU追加割当時間が当該ゲストOS31-1に割り当てられるように、CPU時間割当テーブル222が変更される。
これに対し、臨時のCPU追加割当時間の値が有効な値でないならば(ステップS52)、ゲストOSスケジューラ221は、上記実施形態のステップS12と同様に、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれているCPU追加割当時間情報244が有効なCPU追加割当時間の値を示しているかを判定する(ステップS53)。
もし、CPU追加割当時間情報244が有効なCPU追加割当時間の値を示しているならば(ステップS53)、ゲストOSスケジューラ221は、そのCPU追加割当時間の値に基づいて、上記実施形態のステップS13と同様にCPU時間割当テーブル222の変更を行う(ステップS54)。
ゲストOSスケジューラ221はCPU時間割当テーブル222を変更すると、CPU追加割当時間設定部240によりゲストOSコンテキスト241-1からCPU追加割当時間の設定値を削除させる(ステップS55)。CPU追加割当時間設定部240は、ゲストOSコンテキスト241-1にCPU追加割当時間の値が設定されているならば、その設定値を削除する。すると割り込み管理部23は、受信側ゲストOS31-1への割り込み(受信割り込み)を発生する(ステップS56)。
一方、受信割り込みビットがON状態にないならば(ステップS51)、CPU時間割当テーブル222が変更されることなくステップS56が実行されて、受信側ゲストOS31-1への割り込み(受信割り込みとは異なる割り込み)が発生される。また、ステップS53において、CPU追加割当時間情報244が有効なCPU追加割当時間の値を示していないと判定された場合にも、CPU時間割当テーブル222が変更されることなくステップS56が実行されて、受信側ゲストOS31-1への割り込み(受信割り込み)が発生される。
[第2の変形例]
次に、上記実施形態の第2の変形例について説明する。
上記実施形態では、受信側ゲストOSの受信割り込み処理の後に行われる受信処理のために、当該受信側ゲストOSに追加でCPU時間(CPU追加割当時間)が割り当てられる。このため、不当にCPU時間を奪われる他のゲストOSが存在する可能性がある。
図5の例では、時点t0から1msが経過した時点t1で、ゲストOS31-1に追加でCPU時間(CPU追加割当時間)が割り当てられた結果、ゲストOS31-2及びゲストOS31-3に割り当てられるべきCPU時間が当該ゲストOS31-2及びゲストOS31-3から奪われている。このような場合、CPU時間を奪われたゲストOS31-2及びゲストOS31-3のうちのゲストOS31-3は、ゲストOS31-1(追加でCPU時間が割り当てられたゲストOS31-1)とゲストOS31-2との間で行われるゲストOS間通信とは無関係であるのに、当該ゲストOS31-3の性能が低下する可能性がある。このような性能低下は、特にゲストOS31-3がリアルタイム性を要求される処理を行っている場合に問題となる。
第2の変形例の特徴は、追加でCPU時間が割り当てられるゲストOSを第1のゲストOS、CPU時間を奪われるゲストOSを第2のゲストOSと呼ぶものとすると、第2のゲストOSから奪われるCPU時間を、第1のゲストOSに割り当てられる予定のCPU時間で埋め合わせることにある。この埋め合わせは、第2のゲストOSから奪われるCPU時間を、当該奪われるCPU時間の割り当てが予定されていた時間帯(割り当て予定時間帯)に最も近い時間帯に第1のゲストOSに割り当てられる予定のCPU時間と交換することにより実現される。
以下、第2のゲストOSから奪われるCPU時間を第1のゲストOSに割り当てられる予定のCPU時間と交換することによって実現されるスケジュール調整の手順について、図10のフローチャートを参照して説明する。
今、送信側ゲストOS31-2からの通信に伴う送信データが受信側ゲストOS31-1で受信され、当該受信側ゲストOS31-1に受信割り込みが発生したものとする。この場合、スケジュールの変更の必要が発生する。
するとゲストOSスケジューラ221は、受信側ゲストOS31-1での割り込み処理後に行われる受信処理に必要なCPU割当時間が現在受信側ゲストOS31-1用に設定されているCPU追加割当時間では不足しているかを判定する(ステップS61)。ここで、受信側ゲストOS31-1での割り込み処理後の受信処理に必要なCPU割当時間の値は、ゲストOSコンテキスト241-1に含まれているCPU追加割当時間情報244によって示される。また、ステップS61が最初に実行される段階では、受信側ゲストOS31-1用に設定されているCPU追加割当時間の時間帯は存在しない。
もし、受信側ゲストOS31-1での割り込み処理後の受信処理に必要なCPU割当時間が不足しているならば、ゲストOSスケジューラ221はステップS62の処理を実行する。このステップS62においてゲストOSスケジューラ221は、CPU時間割当テーブル222を参照することにより、受信側ゲストOS31-1用のCPU追加割当時間の時間帯外で、最も近い将来に受信側ゲストOS31-1に割り当てられる予定の時間帯となるCPU時間(ディスパッチ予定時間)を探す。
次にゲストOSスケジューラ221は、現在受信側ゲストOS31-1用に設定されているCPU追加割当時間の時間帯の直後に他のゲストOSに割り当てられるように予定されているCPU時間を、ステップS62で探し求められた、受信側ゲストOS31-1に割り当てられる予定のCPU時間とを入れ替える(ステップS63)。つまり、ゲストOSスケジューラ221は、CPU追加割当時間の時間帯の直後に他のゲストOSに割り当てられるように予定されているCPU時間を受信側ゲストOS31-1用のCPU追加割当時間に追加し、ステップS62で探し求められた、受信側ゲストOS31-1に割り当てられる予定のCPU時間を当該他のゲストOS用に変更する操作を、CPU時間割当テーブル222上で行う。ステップS63が最初に実行される段階では、受信側ゲストOS31-1用に設定されているCPU追加割当時間の時間帯は存在しない。この場合、CPU追加割当時間の時間帯の直後に他のゲストOSに割り当てられるように予定されているCPU時間の時間帯は、送信側ゲストOS31-2が受信側ゲストOS31-1に対して通信を行った時点が属するCPU時間の時間帯であり、送信側ゲストOS31-2用のCPU時間の時間帯である。
ゲストOSスケジューラ221は、上述のステップS62及びS63を、受信側ゲストOS31-1に追加で割り当てられるCPU時間(CPU追加割当時間)が不足しなくなるまで(ステップS61)、繰り返す。
図11は、図10のフローチャートの示す手順に従ってゲストOS31-1〜32-3を対象とするスケジュールが調整された際の調整前後のスケジュールの例を示す。図11の例では、時点t10においてゲストOS31-2に2msのCPU時間が割り当てられる。このCPU時間割り当ての直後にゲストOS31-2がゲストOS31-1への通信を行ったものとする。
割り込み管理部23は、この時点(t10の時点)で受信側ゲストOS31-1へのゲストOS間通信の受信割り込みを発生する。するとゲストOSスケジューラ221によって、CPU時間割当テーブル222の示すスケジュールの調整が行われる。この調整では、図11(a)において矢印111で示されるように、時点t10に送信側ゲストOS31-2に割り当てられる予定の(割り当てられた)時点t10から時点t11(=t10+2ms)までの時間帯の2msのCPU時間と、時点t12に受信側ゲストOS31-1に割り当てられる予定の時点t12(=t10+4ms)から時点t13(=t10+6ms)までの時間帯の2msのCPU時間との入れ替えが行われる。同様に、図11(a)において矢印112で示されるように、時点t11(=t10+2ms)にゲストOS31-3に割り当てられる予定の時点t11(=t10+2ms)から時点t12(=t10+4ms)までの時間帯の2msのCPU時間と、時点t14(=t10+10ms)に受信側ゲストOS31-1に割り当てられる予定の時点t14(=t10+10ms)から時点t15(=t10+12ms)までの時間帯の2msのCPU時間との入れ替えが行われる。
これにより、図11(b)に示されるように、時点t10での受信割り込み直後に、時点t10から時点t12までの、本来ゲストOS31-2及び31-3に順に割り当てられる予定の4msのCPU時間が、受信側ゲストOS31-1に割り当てられる。これとは逆に、本来受信側ゲストOS31-1に割り当てられる予定の、時点t12から時点t13までの2msのCPU時間及び時点t14から時点t15までの2msのCPU時間が、図11(b)に示されるように、それぞれゲストOS31-2及び31-3に割り当てられる。
このように、図11の例では、時点t11での受信割り込み直後に、受信側ゲストOS31-1に、当該ゲストOS31-1での受信処理に必要な(ゲストOSコンテキスト241-1に含まれているCPU追加割当時間情報244の示す)値のCPU時間が割り当てられるように、CPU時間割当テーブル222の示すスケジュールが変更される。また、スケジュールされた範囲内において、ゲストOS31-1〜31-3の各々に割り当てられるCPU時間量は均等に保たれる。
上記第2の変形例では、説明の簡略化のために、ゲストOS31-1〜31-3に本来割り当てられる予定のCPU時間単位で交換が行われることを前提としている。しかし、受信割り込みは、実行中のゲストOSに割り当てられているCPU時間の途中で発生することが一般的である。また、各ゲストOSに割り当てられるCPU時間も、ゲストOS毎に異なることも考えられる。このような場合、ゲストOSスケジューラ221は、各ゲストOSに割り当てられる予定のCPU時間を必要な時間量(例えばゲストOSスケジューラ221が管理する最小時間単位)に分割してスケジュールの調整をすれば良い。なお、スケジュールの範囲内で受信側ゲストOSに割り当てられるCPU時間がまかなえない場合は、更に先のスケジュールを作成することで解決できる。
[第3の変形例]
次に、上記実施形態の第3の変形例について説明する。第3の変形例の特徴は、受信側ゲストOSへの受信割り込み時に当該ゲストOSに追加で割り当てられるCPU時間を、送信側ゲストOSに割り当てられる予定のCPU時間でまかなうことにある。このように第3の変形例では、受信側ゲストOSの受信割り込み処理の後に行われる受信処理用に、送信側ゲストOSに割り当てられる予定のCPU時間を譲渡する手法が適用される。この手法は、例えば、送信側ゲストOSの処理の進行に受信側ゲストOSの応答が必要な場合の通信モデルに適用できる。また、この手法は、受信側ゲストOS(CPU時間が追加で割り当てられる受信側ゲストOS)が関係するゲストOS間通信とは無関係のゲストOSに対するCPU時間の割り当てに影響を与えない。
以下、送信側ゲストOSに割り当てられる予定のCPU時間を受信側ゲストOSの受信処理用に譲渡することによって実現されるスケジュール調整の手順について、図12のフローチャートを参照して説明する。
今、ゲストOS31-1がゲストOS(送信側ゲストOS)31-2からの通信の送信データを受信し、そのゲストOS(受信側ゲストOS)31-1に受信割り込みが発生したものとする。この場合、第2の変形例と同様にスケジュールの変更の必要が発生する。
するとゲストOSスケジューラ221は、CPU時間割当テーブル222を参照して、受信割り込み時点における当該CPU時間割当テーブル222の示すスケジュール上の位置(つまり現在のスケジュール位置)を確認する(ステップS71)。次にゲストOSスケジューラ221は、受信割り込み時点から最も最近に確認されたスケジュール位置までに受信側ゲストOS31-1に割り当てられる予定のCPU時間(CPU割当予定時間)の合計量が、当該ゲストOS31-1に固有のCPU追加割当時間情報244の示す値(つまりゲストOS31-1の受信処理に必要な時間)以上であるかを判定する(ステップS72)。
もし、上述のCPU割当予定時間の合計量が、ゲストOS31-1の受信処理に必要な時間に満たないならば(ステップS72)、ゲストOSスケジューラ221は、最も最近に確認されたスケジュール位置が送信側ゲストOS31-2にCPU時間が割り当てられるディスパッチ予定位置であるかを判定する(ステップS73)。もし、このステップS73での判定がYESであるならば、ゲストOSスケジューラ221は、CPU時間割当テーブル222の示す該当する送信側ゲストOS31-2用のスケジュール位置(ここでは現在のスケジュール位置)を受信側ゲストOS31-1(へのディスパッチ予定)用に変更する(ステップS74)。つまりCPU時間割当テーブル222は、本来送信側ゲストOS31-2に割り当てられるべき2msのCPU時間を、受信側ゲストOS31-1に譲渡させる。この変更(譲渡)により、受信割り込み時点から最も最近に確認されたスケジュール位置までにおける受信側ゲストOS31-1へのCPU割当予定時間の合計量が2msだけ増加する。
ゲストOSスケジューラ221は、ステップS74を実行するとステップS75に進む。これに対し、ステップS73での判定がNOであるならば、ゲストOSスケジューラ221は、ステップS74をスキップしてステップS75に進む。なお、ステップS73での判定がNOであっても、最も最近に確認されたスケジュール位置が受信側ゲストOS31-1にCPU時間が割り当てられるディスパッチ予定位置であるならば、受信割り込み時点から最も最近に確認されたスケジュール位置までにおける受信側ゲストOS31-1へのCPU割当予定時間の合計量は2msだけ増加する。
ステップS75においてゲストOSスケジューラ221は、CPU時間割当テーブル222の次のスケジュール位置を確認する。するとゲストOSスケジューラ221は、ステップS71で現在のスケジュール位置が確認された場合と同様に、ステップS72以降の処理を行う。
即ちゲストOSスケジューラ221は、上述のような受信側ゲストOS31-1へのCPU割当予定時間の合計量が、当該ゲストOS31-1の受信処理に必要な時間に対して依然として不足しているかを判定する(ステップS72)。
もし、上述のような受信側ゲストOS31-1へのCPU割当予定時間の合計量が不足しているならば(ステップS72)、ゲストOSスケジューラ221は、最も最近に確認されたスケジュール位置、つまりステップS75で確認された次のスケジュール位置が、送信側ゲストOS31-2にCPU時間が割り当てられるスケジュール位置であるかを判定する(ステップS73)。もし、ステップS73の判定がYESであるならば、ゲストOSスケジューラ221は、ステップS75で確認された次のスケジュール位置を受信側ゲストOS31-1用に変更する(ステップS74)。そして、再びステップS75及びS72が行われる。これに対してステップS73の判定がNOであるならば、ステップS74をスキップして、再びステップS75及びS72が行われる。
やがて、上述のような受信側ゲストOS31-1へのCPU割当予定時間の合計量が、当該ゲストOS31-1の受信処理に必要な時間以上となったならば(ステップS72)、ゲストOSスケジューラ221は図12のフローチャートに従うスケジュール調整処理を終了する。
このように本実施形態においては、CPU時間割当テーブル222に基づき、受信割り込み発生時点以降にCPU時間が割り当てられる予定(ディスパッチ予定)のゲストOSを順に調べ、送信側ゲストOS31-2用に割り当てられる予定のCPU時間を受信側ゲストOS31-1用に変更する処理を、受信割り込み発生時点以降に当該ゲストOS31-1に割り当てられることになるCPU時間(CPU割当予定時間)の合計が4msを超えるまで繰り返す。
図13は、図12のフローチャートの示す手順に従ってゲストOS31-1〜32-3のうちのゲストOS31-1及び31-2を対象とするスケジュールが調整された際の調整前後のスケジュールの例を示す。
今、図13(a)における時点t20、即ちゲストOS31-2へのCPU時間の割り当て時点t20の直後に、当該ゲストOS31-2からゲストOS31-1への通信を行ったものとする。VMM20の割り込み管理部23は時点t20で受信側ゲストOS31-1へのゲストOS間通信の受信割り込みを発生する。するとゲストOSスケジューラ221によって、CPU時間割当テーブル222の示すスケジュールの調整が次のように行われる。
まず、割り込み時点(現時点)t20直後、時点t21までの2msのCPU時間(つまり現在のスケジュール位置のCPU時間)が割り当てられるゲストOS31-2は、送信側ゲストOSである。この場合、時点t20から時点t21までの2msのCPU時間は、矢印130で示されるように、送信側ゲストOS31-2用から受信側ゲストOS31-1用に変更される。
次の時点t21から時点t22までの2msのCPU時間はゲストOS31-3用に予定されている。このゲストOS31-3は、ゲストOS31-2とゲストOS31-1との間のゲストOS間通信とは無関係である。このため、ゲストOS31-3用に予定されているCPU時間に関してはスケジュール調整は行われない。
次の時点t22から時点t23までの2msのCPU時間は、もともと受信側ゲストOS31-1用に予定されている。したがって、時点t22から時点t23までの対応するスケジュール位置における2msのCPU時間を含めて、割り込み時点(現時点)t20から6msが経過する当該時点t23までに受信側ゲストOS31-1に割り当てられる予定のCPU時間の合計は、当該受信側ゲストOS31-1での割り込み処理直後の受信処理に必要な4msを充足する。この場合、スケジュールの調整は終了する。
第3の変形例によるスケジュール調整では、受信側ゲストOS31-1に追加で割り当てられるCPU時間は連続にはならない。しかし、受信側ゲストOS31-1との間でゲストOS間通信を行う送信側ゲストOS31-2よりも先に、当該受信側ゲストOS31-1にCPU時間が割り当てられるので一般には問題にならない。
上記第3の変形例では、第2の変形例と同様に、説明の簡略化のために、ゲストOS31-1〜31-3に本来割り当てられる予定のCPU時間単位で譲渡(割り当て予定先のゲストOSの変更)が行われることを前提としている。しかし、受信割り込みは、実行中のゲストOSに割り当てられているCPU時間の途中で発生することが一般的である。また、各ゲストOSに割り当てられるCPU時間も、ゲストOS毎に異なることも考えられる。このような場合、ゲストOSスケジューラ221は、各ゲストOSに割り当てられる予定のCPU時間を必要な時間量(例えばゲストOSスケジューラ221が管理する最小時間単位)に分割してスケジュールの調整をすれば良い。
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
本発明の一実施形態に係る仮想計算機システムの構成を示すブロック図。 CPU時間割当テーブルによって表されるスケジュール例を示す図。 ゲストOSコンテキストのデータ構造例を示す図。 CPU時間割当テーブルによって表されるスケジュールの問題を説明するための図 変更後のCPU時間割当テーブルによって表されるスケジュールの例を示す図。 同実施形態におけるスケジュール調整処理の手順を示すフローチャート。 同実施形態において第1のタイプの通信が行われる状況でシステムを最適化するための処理手順を示すフローチャート。 同実施形態において第2のタイプの通信が行われる状況でシステムを最適化するための処理手順を示すフローチャート。 同実施形態の第1の変形例で適用される、送信側ゲストOSによる受信側ゲストOSの臨時のCPU追加割当時間指定及び当該指定に基づくスケジュール調整の手順を示すフローチャート。 同実施形態の第2の変形例で適用されるスケジュール調整の手順を示すフローチャート。 図10のフローチャートの示す手順に従ってスケジュールが調整された際の調整前後のスケジュールの例を示す図。 同実施形態の第3の変形例で適用されるスケジュール調整の手順を示すフローチャート。 図12のフローチャートの示す手順に従ってスケジュールが調整された際の調整前後のスケジュールの例を示す図。
符号の説明
1…物理計算機、10…ハードウェア(HW)、11…CPU(実CPU)、20…仮想計算機マネージャ(VMM)、21…ゲストOS間通信管理部、22…ゲストOS実行管理部、23…割り込み管理部、24…ゲストOSコンテキスト管理部、210…ゲストOS間通信IF、211…ゲストOS間通信監視部、221…ゲストOSスケジューラ、222…CPU時間割当テーブル、223…ディスパッチャ、240…CPU追加割当時間設定部、241-1〜241-3…ゲストOSコンテキスト、242…ゲストOS固有データ、243…割り込み要因レジスタ、244…CPU追加割当時間情報。

Claims (12)

  1. CPUを含む物理計算機上で動作する仮想計算機マネージャによって提供される仮想計算機実行環境で複数のゲストOSが時分割で実行される仮想計算機システムにおいて、
    前記仮想計算機マネージャは、
    前記複数のゲストOSのうちの任意のゲストOSへの割り込みを管理する割り込み管理手段であって、送信側ゲストOSから前記仮想計算機マネージャに与えられる受信側ゲストOSへのゲストOS間通信の要求を受けて、前記受信側ゲストOSでの前記ゲストOS間通信の受信を受信割り込みにより通知する割り込み管理手段と、
    前記複数のゲストOSを時分割で実行させるためのスケジュールを管理するスケジューラであって、前記複数のゲストOSのうちの任意のゲストOSへの割り込みの要因が発生し、且つ当該要因が前記ゲストOS間通信の受信である場合に、当該任意のゲストOSを前記受信側ゲストOSとして、前記受信割り込みの解除後の受信処理に必要なCPU時間が当該受信側ゲストOSに追加で割り当てられるように前記スケジュールを調整するスケジューラと、
    前記スケジューラによって調整された前記スケジュールに従って前記複数のゲストOSをディスパッチするディスパッチャと
    を具備することを特徴とする仮想計算機システム。
  2. 前記仮想計算機マネージャは、前記複数のゲストOSの各々の受信割り込み解除後の受信処理に必要なCPU時間の値をCPU追加割当時間設定値として含むゲストOSコンテキストを管理するゲストOSコンテキスト管理手段を更に具備し、
    前記スケジューラは、前記ゲストOSコンテキスト管理手段によって管理される、前記受信側ゲストOSの受信割り込み解除後の受信処理に必要なCPU追加割当時間設定値に基づき前記スケジュールを調整する
    ことを特徴とする請求項1記載の仮想計算機システム。
  3. 前記仮想計算機マネージャは、ゲストOS間通信を監視することによって通信スループットを観測するゲストOS間通信監視手段と、
    前記ゲストOS間通信監視手段による通信スループットの観測結果に基づき、対応するゲストOSに固有の前記CPU追加割当時間設定値を変更するCPU追加割当時間設定手段と
    を更に具備することを特徴とする請求項2記載の仮想計算機システム。
  4. 前記スケジューラは、特定の時間帯において、前記複数のゲストOSの各々に対するCPU時間の割当量がスケジュール調整前後で一定量に保たれるように前記スケジュールを調整することを特徴とする請求項1記載の仮想計算機システム。
  5. 前記スケジューラは、前記受信側ゲストOSに追加でCPU時間が割り当てられる第1の時間帯に他のゲストOSに割り当てられる予定の第2の時間帯が含まれている場合、前記第2の時間帯と、前記第1の時間帯より後の当該受信側ゲストOSに割り当てられる予定の第3の時間帯とを入れ替えることを特徴とする請求項4記載の仮想計算機システム。
  6. 前記スケジューラは、前記受信側ゲストOSに追加で割り当てられるCPU時間に、前記送信側ゲストOSに割り当てられる予定のCPU時間を充当することを特徴とする請求項1記載の仮想計算機システム。
  7. CPUを含む物理計算機上で動作する仮想計算機マネージャによって提供される仮想計算機実行環境で複数のゲストOSが時分割で実行される仮想計算機システムにおいて、前記複数のゲストOSを時分割で実行させるためのスケジュールを調整するスケジュール調整方法であって、
    前記複数のゲストOSのうちの任意のゲストOSへの割り込みの要因が発生した場合に、当該要因が送信側ゲストOSからのゲストOS間通信に伴う前記任意のゲストOSでの前記ゲストOS間通信の受信であるかを前記仮想計算機マネージャが判定するステップと、
    前記任意のゲストOSへの割り込みの要因がゲストOS間通信の受信である場合に、前記仮想計算機マネージャが、当該任意のゲストOSを受信側ゲストOSとして、前記ゲストOS間通信の受信を当該受信側ゲストOSに通知するための受信割り込みの解除後の受信処理に必要なCPU時間が当該受信側ゲストOSに追加で割り当てられるように前記スケジュールを調整するステップと
    を具備することを特徴とするスケジュール調整方法。
  8. 前記調整するステップにおいて前記前記仮想計算機マネージャは、前記仮想計算機マネージャが有するゲストOSコンテキスト管理手段によって管理される、前記受信側ゲストOSの受信割り込み解除後の受信処理に必要なCPU時間の設定値に基づき、前記スケジュールを調整する
    ことを特徴とする請求項7記載のスケジュール調整方法。
  9. 前記仮想計算機マネージャが、ゲストOS間通信を監視することによって通信スループットを観測するステップと、
    前記通信スループットの観測結果に基づき、前記ゲストOSコンテキスト管理手段によって管理される、対応するゲストOSに固有の前記CPU時間の設定値を前記仮想計算機マネージャが変更するステップと
    を更に具備することを特徴とする請求項8記載のスケジュール調整方法。
  10. 前記調整するステップにおいて前記仮想計算機マネージャは、特定の時間帯において、前記複数のゲストOSの各々に対するCPU時間の割当量がスケジュール調整前後で一定量に保たれるように前記CPU時間割当テーブルを変更することを特徴とする請求項7記載のスケジュール調整方法。
  11. 前記調整するステップにおいて前記仮想計算機マネージャは、前記受信側ゲストOSに追加でCPU時間が割り当てられる第1の時間帯に他のゲストOSに割り当てられる予定の第2の時間帯が含まれている場合、前記第2の時間帯と、前記第1の時間帯より後の当該受信側ゲストOSに割り当てられる予定の第3の時間帯とを入れ替えることを特徴とする請求項10記載のスケジュール調整方法。
  12. 前記調整するステップにおいて前記仮想計算機マネージャは、前記受信側ゲストOSに追加で割り当てられるCPU時間に、前記送信側ゲストOSに割り当てられる予定のCPU時間を充当することを特徴とする請求項7記載のスケジュール調整方法。
JP2007242929A 2007-09-19 2007-09-19 仮想計算機システム及び同システムにおけるスケジュール調整方法 Expired - Fee Related JP4620097B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007242929A JP4620097B2 (ja) 2007-09-19 2007-09-19 仮想計算機システム及び同システムにおけるスケジュール調整方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007242929A JP4620097B2 (ja) 2007-09-19 2007-09-19 仮想計算機システム及び同システムにおけるスケジュール調整方法

Publications (2)

Publication Number Publication Date
JP2009075766A true JP2009075766A (ja) 2009-04-09
JP4620097B2 JP4620097B2 (ja) 2011-01-26

Family

ID=40610682

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007242929A Expired - Fee Related JP4620097B2 (ja) 2007-09-19 2007-09-19 仮想計算機システム及び同システムにおけるスケジュール調整方法

Country Status (1)

Country Link
JP (1) JP4620097B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014118870A1 (ja) * 2013-01-29 2014-08-07 株式会社日立製作所 計算機および計算機の制御方法
JP2015510630A (ja) * 2012-01-18 2015-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プログラムによる警告追跡割り込みファシリティの使用
JP2017199369A (ja) * 2016-04-22 2017-11-02 カビウム・インコーポレーテッド 動的仮想システム・オン・チップのための方法および装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6162939A (ja) * 1984-09-04 1986-03-31 Fujitsu Ltd デイスパツチング方式
JP2000322277A (ja) * 1999-05-12 2000-11-24 Matsushita Electric Ind Co Ltd タスク管理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6162939A (ja) * 1984-09-04 1986-03-31 Fujitsu Ltd デイスパツチング方式
JP2000322277A (ja) * 1999-05-12 2000-11-24 Matsushita Electric Ind Co Ltd タスク管理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015510630A (ja) * 2012-01-18 2015-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プログラムによる警告追跡割り込みファシリティの使用
WO2014118870A1 (ja) * 2013-01-29 2014-08-07 株式会社日立製作所 計算機および計算機の制御方法
JP2017199369A (ja) * 2016-04-22 2017-11-02 カビウム・インコーポレーテッド 動的仮想システム・オン・チップのための方法および装置

Also Published As

Publication number Publication date
JP4620097B2 (ja) 2011-01-26

Similar Documents

Publication Publication Date Title
US9158565B2 (en) Predictable computing in virtualizated distributed computer systems based on partitioning of computation and communication resources
KR101781063B1 (ko) 동적 자원 관리를 위한 2단계 자원 관리 방법 및 장치
US8146081B2 (en) Method of selecting one of execution schedules of guest OSes and virtual machine monitor employing the method
US8863138B2 (en) Application service performance in cloud computing
Hategan et al. Coasters: uniform resource provisioning and access for clouds and grids
KR101474872B1 (ko) 클라우드 상에 가상 클러스터들의 효율적 구축을 위한 탄력적 가상 클러스터 관리 방법, 이를 이용한 가상 클러스터 관리 장치 및 클라우드 시스템
JP2008226181A (ja) 並列実行プログラム、該プログラムを記録した記録媒体、並列実行装置および並列実行方法
KR20160087706A (ko) 가상화 플랫폼을 고려한 분산 데이터 처리 시스템의 자원 할당 장치 및 할당 방법
JPWO2008117470A1 (ja) 仮想計算機制御プログラム、仮想計算機制御システムおよび仮想計算機移動方法
CN104102548A (zh) 任务资源调度处理方法和系统
JP4620097B2 (ja) 仮想計算機システム及び同システムにおけるスケジュール調整方法
CN102609307A (zh) 多核多线程双操作系统网络设备及其控制方法
Netto et al. Rescheduling co-allocation requests based on flexible advance reservations and processor remapping
WO2020166423A1 (ja) リソース管理装置およびリソース管理方法
JP4609070B2 (ja) マルチ呼処理スレッド処理方法
TWI296387B (en) Scheduling method for remote object procedure call and system thereof
JP2007102332A (ja) 負荷分散システム及び負荷分散方法
Wang et al. Galleon: Reshaping the square peg of nfv
JP4265559B2 (ja) データ処理装置、データ処理サーバ、データ処理システムおよびデータ処理プログラム
JP6191361B2 (ja) 情報処理システム、情報処理システムの制御方法及び制御プログラム
Liu et al. Improving resource utilization of a cloud-based testing platform for android applications
JP2017033234A (ja) リクエスト受付システム、リクエスト受付方法、及び、プログラム
WO2022033037A1 (zh) 一种消息管理的方法、装置及去服务器化系统
CN115811549B (zh) 支持混合异构运行时的云边资源管理调度方法及系统
JP5646560B2 (ja) 仮想os制御装置、システム、方法およびプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100413

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100614

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100928

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101027

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees