JP5458998B2 - 仮想マシンシステムおよび仮想マシン管理方法 - Google Patents

仮想マシンシステムおよび仮想マシン管理方法 Download PDF

Info

Publication number
JP5458998B2
JP5458998B2 JP2010064045A JP2010064045A JP5458998B2 JP 5458998 B2 JP5458998 B2 JP 5458998B2 JP 2010064045 A JP2010064045 A JP 2010064045A JP 2010064045 A JP2010064045 A JP 2010064045A JP 5458998 B2 JP5458998 B2 JP 5458998B2
Authority
JP
Japan
Prior art keywords
virtual machine
program
management unit
notification
unit
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.)
Expired - Fee Related
Application number
JP2010064045A
Other languages
English (en)
Other versions
JP2011198027A (ja
Inventor
昇 岩松
昌朋 矢崎
直樹 西口
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010064045A priority Critical patent/JP5458998B2/ja
Publication of JP2011198027A publication Critical patent/JP2011198027A/ja
Application granted granted Critical
Publication of JP5458998B2 publication Critical patent/JP5458998B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は,仮想マシンのスケジューリング処理技術に関する。
仮想マシンシステムは,実ハードウェアのCPU等の演算装置や,メモリ・入出力装置などのリソースを仮想化して,1つの物理的コンピュータ上で複数の仮想マシンを実行するものである。
仮想マシンシステムの仮想マシン管理装置は,仮想マシンの起動・実行・シャットダウンを管理し,仮想マシンを時分割で実行させることによって,複数の仮想マシンが同時に実行されているかのような環境を提供する。
仮想マシン管理装置内に備えられるスケジュール機能(スケジューラ)が,どの仮想マシンにCPUを割り当てて実行させるかを決定して,仮想マシンの実行の切り替えの制御を行う。また,仮想マシン上のOS(ゲストOS)は,仮想マシン管理装置で行われる仮想マシンのスケジュールと同様に,自ゲストOS上で実行するプロセスのスケジューリングを行っている。
図16は,各仮想マシン上のプロセス・スケジューリングの例を示す図である。
図16に示すように,仮想マシン管理装置(VMM:仮想マシンモニタ)が,CPUに割り当てられる仮想マシンおよびその順序(VMプロセス・スケジュール)を決定する。各仮想マシンVM―A,VM_BのゲストOSは,通常,仮想マシン管理装置によって自マシンにCPUが割り当てられている期間内に限り,自マシンでのプロセスをスケジューリングする。
すなわち,仮想マシンシステムのOSによるプロセス・スケジューリングと,仮想マシン管理装置のゲストOSによる仮想マシン内プロセス・スケジューリングとは全く独立に行われるため,各仮想マシンVM_A,VM_BのゲストOSは,他の仮想マシン上のプロセスについて,プロセスの状態を知ることも,制御することもできない。
仮想マシン同士を関連させるスケジューリングの従来手法として,仮想マシン管理装置が,送信側仮想マシンから受信側仮想マシンへのOS間の通信要求を受けて,受信側仮想マシンのゲストOSに受信割り込みによる通知を行って,受信割り込み解除後にその受信処理に必要なCPU時間を受信側仮想マシンに追加割り当てするスケジュール調整手法が知られている。
また,仮想マシン管理装置が,相互に通信する仮想マシンの組を特定して,特定された組の各仮想マシンの実行スケジューリングにおいて,対応する仮想マシンのCPU割当時間を短縮するスケジュール手法が知られている。
特開2009−075766号公報 特開2008−165410号公報
本願の発明者は,仮想化技術の応用として,プログラムを複数のモジュールやプロセスに分割して,分割したモジュールやプロセスの処理を,それぞれ別々の仮想マシン上の処理として独立実行させるような手法について検討をした。
図1は,本願の発明者により検討された仮想マシンシステムの構成例を示す図である。
図1に示す仮想マシンシステムにおいて,仮想マシン管理装置90は,1つのプログラムを,ユーザとのGUIを有する処理を行うアプリケーションプロセス側(フォアグランド側プロセス)と,アプリケーションプロセスから呼び出されるような処理を行うプロセス側(バックグラウンド側プロセス)とに分離して,それらのプロセスをそれぞれ別々の仮想マシン91x,91y,91zで実行する。
ここで,他のアプリケーションによるハッキングで,プロセスXで動作をさせている仮想マシン91xが乗っ取られたと仮定する。この場合に,プロセスXから独立したプロセスY,プロセスZを実行している仮想マシン91y,91zは,仮想マシン91xと隔離されている。そのため,プロセスY,プロセスZが,センシティブなデータやデバイスへのアクセスを行うものであっても,これらをハッキングから保護することができ,セキュリティの向上を図ることができる。
しかし,元々1つのプログラムとして1つの仮想マシン上で動作するようなプログラム群(例えば,メインプログラムとサブルーチンプログラム)を,複数のプロセスに分割して,別々の仮想マシンで実行する場合に,仮想マシン管理装置のスケジューリングの影響によって,以下の問題が生じる。すなわち,メインプログラムのプロセスを実行するメイン仮想マシンと,サブルーチンプログラムのプロセスを実行するサブ仮想マシンとメインプログラムを動作するメイン仮想マシンとのスケジューリングについて,元来1つのプログラムとして動作するサブルーチン呼び出しなどの順序や時間間隔を制御することができず,一体化したプログラムとしての動作が保証されなくなるという問題がある。
特に,1つのプログラムを構成するプロセスを実行するメイン仮想マシンとサブ仮想マシン以外にも,他のプログラムやプロセスを実行する複数の仮想マシンが動作している場合には,その数が増加するほど,メイン仮想マシンとサブ仮想マシンとの切り換えのタイミングや割り当て順序が合わないという問題がより多く生じて,問題が深刻になる。
図2は,メインプロセスと,メインプロセスから呼び出されるサブプロセスとのスケジューリングの理想例を示す図である。
図2は,プログラムを,メイン仮想マシンVM_Aで実行されるプロセス1(以下,メインプロセスと呼ぶ)と,サブ仮想マシンVM_Bのプロセス1(以下,サブプロセスと呼ぶ)とに分離して実行している場合の,メインプロセスからサブプロセスの関数呼び出し時の望ましいスケジューリングを示している。
メインプロセスからサブプロセス上の関数呼び出し(処理依頼)を行う際に,メインプロセスからの関数呼び出しのタイミングで,メインVM_AからサブVM_BへとCPUの割り当てが行われ,サブプロセスでの処理完了後に,再びメインVM_Aに再割り当てされて,メインプロセスがサブプロセスの処理結果を直ちに取得して,プログラムの実行を継続できることが望ましい。
図3は,メインプロセスと,メインプロセスと独立して実行するサブプロセス(独立サブプロセス)とのスケジューリングの理想例を示す図である。
図3は,プログラムを,メイン仮想マシンVM_Aのプロセス1(以下,メインプロセスと呼ぶ)と,サブ仮想マシンVM_Bのプロセス1(以下,サブプロセスと呼ぶ)とに分離して実行していて,サブプロセスがデバイスへの定期的なデータ受信(ポーリング)などの動作を,メインプロセスと独立して行っている場合の望ましいスケジューリングを示している。
サブVM_Bが,メインVM_Aとは全く独立に定期的にスケジューリングされることによって,サブプロセスは,ポーリング動作を行うことができる。メインプロセスは,メインVM_A上でスケジューリングされたタイミングでサブプロセスのデータを取得しようとする。この時,常に,サブプロセスがデバイスからデータを受信済みであり,メインプロセスは,そのデータを直ちに取得して,処理を滞りなく続けられることが望ましい。
図2および図3に示すスケジューリング例は,プログラムが同一のプロセスであるかのように理想的な動作を行った場合の例である。
しかし,実際にプログラムを分離して異なる仮想マシンで実行する場合に,特に他のプログラムに関する複数の仮想マシンも存在しているときは,メインプロセスとサブプロセス間でのデータの受け渡しタイミングや順序が想定通りにならず,処理待ちなどが生じてプログラムの動作に支障がある場合がある。
図4は,メインの仮想マシンとサブ仮想マシン間に生じる不具合を説明するための図である。
図4に,プログラムを,メイン仮想マシンVM_Aのプロセス1(以下,メインプロセスと呼ぶ)と,サブ仮想マシンVM_Bのプロセス1(以下,サブプロセスと呼ぶ)とに分離して実行していて,他のプログラムのプロセスを実行する仮想マシンVM_Cがある場合に,実際に生じやすいスケジューリング動作の例を示している。
図4に示すスケジュール例において,サブプロセスの処理後にサブVM_BからメインVM_Aへとスケジューリングが行われ,サブプロセスとメインプロセスが連続して実行されたため,メインプロセスがサブプロセスのデータをうまく取得できている(ケース1)。
その後,メインVM_A→他VM_C→メインVM_Aとスケジューリングされたため,メインVM_A上でメインプロセスがスケジューリングされるまでにサブプロセスが実行されなかったとする。この場合には,メインプロセスはサブプロセスからのデータ取得に失敗をしてしまう(ケース2)。
さらにその後,メインVM_A→他VM_C→サブVM_B→他VM_C→メインVM_Aとスケジューリングされ,メインプロセスはサブプロセスのデータを取得することができたが,サブプロセスの処理からメインプロセスの処理までに,他VM_Cへの割り当てが割り込まれていたとする。この場合には,メインプロセスは,サブプロセスのデータ取得に時間がかかってしまう(ケース3)。
このように,1つのプログラムを複数の仮想マシン上で実行する場合に,関数の呼び出し,データの受け渡しなどが適切なタイミングや順序にならない状況が生じたり,他の仮想マシンに割り込まれて処理待ちが生じたりするなどの問題が発生する。
ところで,複数の仮想マシンへのスケジューリングを制御する従来手法として,以下の2つの方法がある。
[仮想マシンへの固定優先度付け]
仮想マシン管理装置から,仮想マシンに対して固定的な優先度を設定するスケジューリング手法がある。例えば,プログラムを,仮想マシンVM1,VM2で実行する場合に,仮想マシンVM1と仮想マシンVM2へのCPU割当時間を,CPU全体の40%,20%に固定して設定する。
[グループスケジューリング]
複数の仮想マシンをグループ化し,CPUの割り当てをそのグループ単位で管理するスケジューリング手法がある。例えば,複数のプログラムを複数の仮想マシンに分割して実行する場合に,プログラム単位で仮想マシンをグループ化し,グループ単位でのCPU割当量の総計をもとにスケジューリングを行う。
しかし,固定優先度付けの手法では,仮想マシンVM1,VM2上に分割して実行されるプロセス各々についてのCPU割当量を制御することができるが,仮想マシンVM1と仮想マシンVM2のCPU割当のタイミング(順序,時間間隔など)は考慮されないため,上述の処理待ちなどの問題は解決できない。
また,グループスケジューリング手法は,グループ間での公正な優先度付けやリソース配分が可能となるが,グループ内における仮想マシン間のCPU割当タイミングまでは考慮されないため,問題は解決できない。
本願発明は,複数の仮想マシン上で実行される複数のプロセスが,1つのプログラムとして一体化した動作を効率的に行えるように,仮想マシン間のプロセッサ(CPU)の割り当ての順序や時間間隔等を考慮して仮想マシンのスケジュールを管理できる仮想マシンシステムを提供することを目的とする。
また,本願発明は,複数の仮想マシン上で実行される複数のプロセスが,1つのプログラムとして一体化した動作を効率的に行える仮想マシン管理方法を提供することを目的とする。
本願発明の一態様として開示される仮想マシンシステムは,プロセスを実行する複数の仮想マシンを仮想マシン管理装置上に構築し,前記仮想マシン管理装置が,前記構築された仮想マシンにCPUを割り当てて,各仮想マシンのプロセスの実行を管理する仮想マシンシステムであって,前記仮想マシン管理装置は,プログラムの実行を管理する,プログラム管理部と,前記プログラムを構成する複数のプロセスを各々で実行する複数の仮想マシンへのCPU割当を,スケジュールにもとづいて管理する,仮想マシンスケジュール管理部とを備える。
さらに,前記プログラム管理部は,1)前記プログラムを構成する複数のプロセスのうち当該プログラムの起動要求を受けて実行される第1プロセスを実行する第1仮想マシンから,前記第1プロセスの識別情報,前記プログラムを構成する前記第1プロセス以外の第2プロセス以降のプロセスを特定する情報を含むプログラム構成情報を取得して,前記プログラム構成情報および前記各プロセスを実行する仮想マシンの識別情報をプログラムテーブルに登録する,プログラムテーブル管理部と,2)前記仮想マシン管理装置上に生成した仮想マシンで実行されているプロセスから通知を受信する,通知受信部と,3)前記プログラムテーブルを参照して,前記通知受信部が受信した通知に対応するプロセスに関する処理の要求を前記仮想マシンスケジュール管理部へ送信する,通知処理部とを備える。
さらに,前記仮想マシンスケジュール管理部は,1)前記仮想マシンに対するCPU割当のスケジュールを決定する,スケジューリング部と,2)前記通知処理部から受信した前記要求が前記プログラムの起動要求である場合に,当該起動対象のプログラムを構成する前記第1プロセスを実行する第1仮想マシンを生成する処理と,前記通知処理部から受信した前記要求が前記第1プロセスに関連する第2プロセス以降のプロセスの実行要求である場合に,前記第2プロセス以降のプロセスを実行する仮想マシンを生成する処理とを行う,仮想マシン状態管理部と,3)前記通知処理部からの通知にもとづいて,前記要求により実行が要求される要求先のプロセスを実行する仮想マシンを前記プログラムテーブルにより特定し,前記特定した仮想マシンへCPU割当を切り替える,仮想マシン切替部とを備える。
そして,前記第1仮想マシンは,前記第1プロセスの実行時に,前記プログラム構成情報を前記プログラム管理部へ送信する処理と,要求元および要求先のプロセスを特定する情報を含むプロセス呼び出しの通知を前記プログラム管理部へ送信する処理とを行う,仮想マシンモニタ通知部を備える。
さらに,前記第2プロセス以降のプロセスを実行する各仮想マシンは,要求元および前記処理したプロセスの返却先のプロセスを特定する情報を含むプロセス返却の通知を前記プログラム管理部へ送信する,仮想マシンモニタ通知部を備える。
開示した仮想マシンシステムによれば,プログラムを複数のプロセスに分割して,分割したプロセスを異なる仮想マシンでそれぞれ実行する場合に,プログラムの最初のプロセス起動時に,プログラム構成情報を取得して管理し,仮想マシンで実行されているプロセスから他の仮想マシンで実行されるプロセスの呼び出しや返却が通知されると,該当するプロセスを実行する仮想マシンを特定して,特定した仮想マシンへCPU割当を切り替えることができる。
これにより,1つのプログラムを複数のプロセスで実行した場合に,複数のプロセス間の実行順序を考慮したスケジューリングを実現することができ,プログラムを分割せずに実行している場合と同等にCPU割当時間を制御することができる。よって,複数の仮想マシンで実行されているプログラムを1つの仮想マシンで実行している場合と同様の最小の応答時間で処理を実現することができる。
本願の発明者により検討された仮想マシンシステムの構成例を示す図である。 メインプロセスと,メインプロセスから呼び出されるサブプロセスとのスケジューリングの理想例を示す図である。 メインプロセスと,メインプロセスと独立して実行するサブプロセス(独立サブプロセス)とのスケジューリングの理想例を示す図である。 メインの仮想マシンとサブ仮想マシン間に生じる不具合を説明するための図である。 本発明の一実施例における仮想マシンシステムの構成例を示す図である。 プログラムの起動時の処理例を示す図である。 サブルーチン呼び出し時の処理例を示す図である。 独立サブプロセスの実行時の処理例を示す図である。 仮想マシンの状態遷移を示す図である。 優先度がUNDERとOVERの場合の待ち状態例を示す図である。 優先度がUNDER,OVERおよびIDLEの場合の待ち状態例を示す図である。 スケジューリング部によるCPU割当の例を示す図である。 独立実行されるサブVMとして,リアルタイムVMが生成される場合の割り当て例を示す図である。 スケジューリング部によるCPU割当の例を示す図である。 仮想マシンシステムを実現するハードウェア構成例を示す図である。 各仮想マシン上のプロセス・スケジューリングの例を示す図である。
図5は,本発明の一実施例における仮想マシンシステムの構成例を示す図である。
図5に示す仮想マシンシステム1は,プロセスを実行する複数の仮想マシン(VM)2,3,4,…を仮想マシン管理装置(VMM)10上に構築して,仮想マシン管理装置10が,構築された仮想マシン2,3,4,…にコンピュータのプロセッサ(CPU)(図示しない)を割り当てて,各仮想マシン2,3,4,…のプロセスの実行を仮想マシン管理装置10が管理するシステムである。
本形態において,プログラムは,例えば,OS上で動作するアプリケーションプログラムであるが,それのみを指すものではなく,アプリケーションプログラムから呼び出される特定のライブラリモジュール,OS中の一機能を実現するサブシステム,デバイスドライバなどの,コンピュータの実現する処理手順によって実現される機能を含むものである。
プロセスは,OSが生成するプログラム動作単位を示すものであるが,それのみを指すものではなく,タスクやスレッド,ジョブなどと呼ばれる動作単位を含むものである。
本形態において,プログラム実行中に実行されるプロセスのうち,仮想マシン上で最初に起動される第1プロセスをメインプロセスmpとする。メインプロセスmpとは別個に動作するプロセス群,すなわち第2プロセス以降のプロセス群を,サブプロセスspとして分離する。
メインプロセスmpは,主に,ユーザが直接あるいは間接的に操作し,プログラムの起動停止などを行うための仮想マシン上で起動されるプロセスであり,ユーザの操作を受け付けるユーザインタフェースなどを備える。
サブプロセスspは,主に,プログラムを構成するモジュールやオブジェクトの一部として,同期的または非同期的に呼び出されるサブルーチンとして実装されるプロセスである。サブプロセスspを実行する仮想マシンは,サブプロセスspのみを実行する特別な仮想マシンであってよい。
メインプロセスmpとサブプロセスspとは異なる仮想マシン上で実行される。図5に示す構成例では,メインプロセスmpは,仮想マシン(以下,メインVMとする)2で,サブプロセスspは,仮想マシン(以下,サブVMとする)3でそれぞれ実行される。
仮想マシンシステム1が備える仮想マシン管理装置(VMM)10は,プログラム管理部11,プログラムテーブル13,仮想マシンスケジュール管理部15,および仮想マシン間通信部17を備える仮想マシン管理装置である。
プログラム管理部11は,プログラムのメインプロセスmpおよびサブプロセスspを管理する処理部である。
プログラムテーブル13は,プログラムのメインプロセスmp,サブプロセスspの構成を示す情報,各プロセスを実行する仮想マシン(メインVM2,サブVM3)を識別する情報が格納される記憶部である。
仮想マシンスケジュール管理部(VMスケジュール管理部)15は,複数の仮想マシン2,3,4,…へのCPUの割り当てを,スケジュールにもとづいて管理する処理部である。
仮想マシン間通信部(VM間通信部)17は,メインVM2,サブVM3の仮想マシン間通信部23,33と,メッセージ通信を行う処理部である。
プログラム管理部11は,通知受信部111,プログラムテーブル管理部113,および通知処理部115を備える。
通知受信部111は,メインVM2のメインプロセスmpから,プログラム構成情報を受信する。また,通知受信部111は,メインVM2またはサブVM3で実行されているプロセスからの通知を受信する。
具体的には,通知受信部111は,仮想マシン(メインVM2,サブVM3)上のOSやアプリケーションから送信された,仮想マシン管理装置10内の処理の呼び出し(ハイパーコール)を受信する。
プログラムテーブル管理部113は,プログラムのメインプロセスmpを実行するメインVM2から,メインプロセスmpおよびサブプロセスspに関する識別情報と構成情報とを含むプログラム構成情報を取得して,プログラムを構成するメインプロセスmpおよびサブプロセスspの構成,ならびにこれらのプロセス(メインプロセスmpおよびサブプロセスsp)を実行する仮想マシンの識別情報とを対応付けた情報を,プログラムテーブル13として管理する。
一例として,プログラム構成情報は,プログラムのメインプロセスmpの識別情報,メインプロセスmpから呼び出されるサブプロセスspの構成情報を含む。
メインプロセスmpの識別情報は,実行される仮想マシン上でメインプロセスを一意に特定可能なプロセス番号やプログラム名などである。
サブプロセスspの構成情報は,例えば,メインプロセスmpからサブプロセスspを識別するためのプログラム名,初期状態,使用するメモリ量などのパラメタである。
また,サブプロセスspの構成情報は,サブプロセスspの役割や機能を示す属性情報を含む情報であってもよい。
また,サブプロセスspの構成情報は,メインプロセスmpと独立して実行されるサブプロセス(独立サブプロセス)の識別情報および制御情報を含む情報であってもよい。この場合に,独立サブプロセスの制御情報は,例えば,サブプロセスspを実行する仮想マシン3のスケジューリングに関するパラメタである。具体的なパラメタは,仮想マシン管理装置10のスケジューリング部155が採用するスケジューリングアルゴリズムにより異なるが,例えば,スケジューリングの優先度,デッドライン時間などを示すものである。
独立サブプロセスを実行するサブVM3により,例えば特定デバイスのポーリング動作などが実行可能となる。
仮想マシンの識別情報は,仮想マシン管理装置10が仮想マシン2,3,4,…を一意に特定可能な仮想マシン番号,仮想マシン名などである。
なお,プログラム構成情報のサブプロセスspの構成情報は,サブプロセスsp自体の実行イメージ,またはサブプロセスspの実行イメージを含む仮想マシン自体の実行イメージを含む情報であってもよい。
プログラムテーブル管理部113は,プログラムテーブル13に,メインプロセスmpの識別情報と,それを実行するメインVM2の識別情報,サブプロセスspの識別情報とサブVM3の識別情報とを登録し,参照する。
通知処理部115は,プログラムテーブル13を参照して,通知受信部111が受信した通知に対応する依頼(要求)を仮想マシンスケジュール管理部15へ送信する。
具体的には,通知処理部115は,メインVM2およびサブVM3から受信した通知を解釈して,メインプロセスmpとサブプロセスspに関する処理の依頼として,「仮想マシン(VM)切替依頼」,「サブVM起動依頼」,「仮想マシン(VM)実行依頼」を仮想マシンスケジュール管理部15に通知する。
「VM切替依頼」は,メインプロセスmpまたはサブプロセスspからの通知が,プロセスの呼び出し通知である場合に,通知された呼び出し先のプロセスを実行する仮想マシンへのCPUの切り替えを要求するものである。
「サブVM起動依頼」は,メインプロセスmpからの通知がサブプロセスの起動依頼である場合に,通知された起動依頼のサブプロセスspを実行する仮想マシンの起動を要求し,メインVM2と起動したサブプロセスspを実行するサブVM3との仮想マシン間の通信路確立の要求である。
「VM実行依頼」は,メインプロセスmpからの通知が独立サブプロセスの実行通知である場合に,通知された独立サブプロセスspを実行するサブVM2のスケジューリングを要求するものである。
仮想マシンスケジュール管理部15は,仮想マシン2,3,4,…の実行状態,仮想マシン2,3,4,…が消費したCPUの時間(CPU消費時間)を管理し,仮想マシン2,3,4,…へのCPU割当を時分割で切り替えるスケジュール管理処理を行う。
仮想マシンスケジュール管理部15は,仮想マシン切替部(VM切替部)151,仮想マシン状態管理部(VM状態管理部)153,スケジューリング部155,および消費時間計算部157を備える。
仮想マシン切替部151は,通知処理部115からの要求(VM切替依頼)にもとづいて,要求先の仮想マシンへCPUの割り当てを切り替える。
仮想マシン状態管理部153は,プログラムの起動要求,サブプロセスの起動要求などの通知によるサブVM起動依頼,VM実行依頼にもとづいて,該当するプロセスに対応する仮想マシンを生成する。なお,本実施例における仮想マシンの生成は,仮想マシンを新規に起動することにより実現しても良いし,既に起動済みの仮想マシンを該当するプロセスに割当てることにより実現しても良い。
スケジューリング部155は,仮想マシン2,3,4,…のCPUの割り当てのスケジュールを決定する。スケジューリング部155は,仮想マシンのCPU消費時間,優先度などから,所定のスケジューリングアルゴリズムにもとづいて,次にどの仮想マシンにCPUをどれだけ割り当てるかを決定する。
消費時間計算部157は,仮想マシン2,3,4,…毎に,使用したCPUの消費時間を計算して,プログラムテーブル13をもとに,サブプロセスspを実行するサブVM3でのCPU消費時間を,メインVM2のCPU消費時間に加算する。
この場合に,スケジューリング部155は,仮想マシンのCPU割当のスケジュールを決定する際に,メインVMのメインプロセスmpの消費時間として,消費時間計算部157により加算された消費時間を用いて,スケジュールを決定する。
メインVM2は,ユーザがアプリケーションを利用し実際に操作を行う仮想マシンである。メインVM2に割り当てられたCPUは,さらにメインVM2上で動作するOSのプロセススケジューラにより,時分割でアプリケーションに割り当てられる。
メインVM2が実行するメインプロセスmpは,メインVM2とサブVM3に分割して実行されるプログラムのうち,メインVM2で実行されるプロセスである。
メインVM2は,仮想マシンモニタ通知部(VMM通知部)21を備える。仮想マシンモニタ通知部21は,メインプロセスmpの実行時に,プログラム構成情報,メインプロセスmpで発行される要求や制御の通知(例えば,サブVM3の生成,サブVM3へのCPU割当の切り替えなどを要求するためのハイパーコール)をプログラム管理部11へ送信する。
サブVM3は,メインVM2からの要求で生成される,サブプロセスspを実行するための仮想マシンである。
サブVM3が実行するサブプロセスspは,メインVM2とサブVM3に分割して実行されるプログラムのうち,サブVM3で実行され,主にメインVM2からのサブルーチンとして実装されたプロセスである。
サブVM3は,仮想マシンモニタ通知部(VMM通知部)31を備える。仮想マシン仮想マシンモニタ通知部31は,サブプロセスspで発行される要求や制御の通知(例えば,メインVM2へのCPU割当の切り替えなどを要求するためのハイパーコール)をプログラム管理部11へ送信する。
仮想マシンモニタ通知部21,31は,例えば,プログラムから仮想マシン管理装置10を呼び出すためのハイパーコールの他,プログラムからOSを経由して仮想マシン管理装置10を呼び出すためのシステムコール,あるいは,CPU命令における特定の特権命令や例外命令を発行し,仮想マシン管理装置10にその命令をトラップさせて,仮想マシン管理装置10に制御を遷移させることにより実現されてもよい。
また,メインVM2およびサブVM3は,それぞれ,仮想マシン間通信部(VM間通信部)23,33を備えてもよい。仮想マシン間通信部23,33は,メインVM2とサブVM3との間のメッセージ通信を行う。
また,メインVM2およびサブVM3は,仮想マシン間の共有メモリなどにより,サブルーチン呼び出し後の返却値,処理データの授受を行うことができる。
以下に,仮想マシンシステムの処理動作例を示す。
〔プログラムの生成時の処理例〕
図6は,プログラムの生成時の処理例を示す図である。
ステップS1:ユーザによるアプリケーションプログラムの起動があると,メインVM2が生成される。メインVM2が,メインプロセスmpを生成する。
ステップS2:メインプロセスmpは,サブプロセスspの実行イメージをメモリ上に展開する。
ステップS3:仮想マシンモニタ通知部21は,プログラム構成情報として,仮想マシン管理装置10に対して,メインプロセスmpの識別情報(プロセスID),サブプロセスspの実行イメージ,サブプロセスの識別情報(プロセスID)を展開したメモリ上のアドレスを,ハイパーコールにより通知する。
ステップS4:通知受信部111がプログラム構成情報を受けると,通知処理部115は,対応するサブプロセスspを実行するためのサブVM起動依頼を仮想マシンスケジュール管理部15へ通知する。そして,VM状態管理部153が,サブVM3を生成する。
ステップS5:さらに,VM状態管理部153が,生成したサブVM3上にサブプロセスspの実行イメージをコピーして,サブプロセスspを起動させる。
ステップS6:プログラムテーブル管理部113が,メインVM2の識別情報(VM番号)とメインプロセスmpのID,生成されたサブVM3の識別情報(VM番号)とサブプロセスspのIDとを対応づけてプログラムテーブル13に登録して,メインプロセスmpのハイパーコールに応答する。
これにより,仮想マシン管理装置10では,プログラム毎に,メインプロセスmpを実行する仮想マシン(メインVM2)と,サブプロセスspを実行する仮想マシン(サブVM3)とを紐付けて管理することが可能となる。
図6に示す処理例において,ステップS4において,VM状態管理部153は,メインVM2からの通知を受けてサブVM3を生成する。
しかし,VM状態管理部153は,サブプロセスspを実行するサブVM3を,メインプロセスmpの実行開始前にあらかじめ生成しておき,プログラムテーブル管理部113は,メインプロセスmpからの通知により,メインプロセスmpとサブプロセスspとを関連付けてプログラムテーブル13に登録してもよい。
これにより,特定の動作や機能を実現するサブプロセスspを実行するサブVM3が既に生成されている場合に,メインプロセスmpからの通知にもとづいて,該当するサブVM3をメインプロセスmpのメインVM2と対応付けて利用することが可能となる。
また,この場合に,プログラムテーブル管理部113は,サブプロセスspを実行するサブVM3が,複数のメインプロセスmpから共有されるように,プログラムテーブル13に登録して管理しても良い。
すなわち,サブVM3が事前に生成されている場合に,後からメインプロセスmpとサブプロセスspを対応付けて,1対1で使用されるようにしてよく,または,複数のメインプロセス間でサブプロセスspを共有して使用されるようにしてもよい。また,既に生成されているサブVM3を使用する場合であっても,メインプロセスmp間でサブプロセスspを共有しないようにすることもできる。
さらに,消費時間計算部157は,共有されたサブVM3のCPU消費時間を,共有したメインプロセスmpのメインVM2各々のCPU消費時間に,それぞれ加算する。
これにより,サブVM3を,あるサブルーチンを複数のメインプロセスから呼び出す共通ライブラリとして利用することが可能となる。また,プログラム間のスケジューリングをCPUの消費時間に則して適切に行うことが可能となる。
〔サブルーチン呼び出し時の処理例〕
図7は,サブルーチン呼び出し時の処理例を示す図である。
ステップS11:仮想マシン管理装置10のスケジューリング部155が決定したスケジュールにもとづいて,仮想マシン切替部151が,メインVM2にCPUを割り当てる。
ステップS12:メインVM2において,メインプロセスmpにCPUを割り当てられる。
ステップS13:メインプロセスmpが,サブプロセスspのサブルーチン呼び出しのために,仮想マシン管理装置10に,サブプロセスspのIDを指定したVM切替のハイパーコール呼び出しを行う。
ステップS14:通知受信部111が,ハイパーコール呼び出しを受信すると,通知処理部115は,サブプロセスspのIDを指定したVM切替依頼を仮想マシンスケジュール管理部15へ通知する。VM切替部151は,プログラムテーブル13を参照して,サブプロセスspIDから,切替先のサブVM3のVM番号を特定する。
ステップS15:VM切替部151は,特定したサブVM3にCPUの割り当てを切り替える。
ステップS16:サブVM3において,サブプロセスspにCPUが割り当てられて,サブルーチンが実行される。
ステップS17:サブルーチンの処理終了後,仮想マシンモニタ通知部31は,仮想マシン管理装置10に,VM切替通知のハイパーコール呼び出しを行い,メインVM2へのCPU割当を通知する。
ステップS18:通知受信部111が,ハイパーコール呼び出しを受けると,通知処理部115は,サブVM3からのVM切替依頼を仮想マシンスケジュール管理部15へ通知する。VM切替部151は,プログラムテーブル13を参照して,サブプロセスspIDから,処理の戻り先のメインVM2のVM番号を確認する。
ステップS19:消費時間計算部157は,サブVM3のCPU消費時間を取得して,取得した消費時間をメインVM2の消費時間に加算する。
ステップS110:VM切替部151は,メインVM2にCPUの割り当てを切り替える。
ステップS111:メインVM2において,メインプロセスmpにCPUが割り当てられる。VM間通信部23,33の通信によって,メインプロセスmpは,サブプロセスspのサブルーチン呼び出しの出力結果を取得して,処理を継続する。
以上のように,仮想マシン管理装置10は,従来のサブルーチン呼び出しと同様に,メインプロセスmpからサブプロセスspへとCPU割当を変更し,サブプロセスspでの処理終了後に,再びメインプロセスmpへとCPU割当を戻すことができる。
また,仮想マシン管理装置10は,サブVM3のCPU消費時間をメインVM2のCPU消費時間として扱う。
これにより,メインプロセスmpとサブプロセスspとが同一の仮想マシン上で実行されているように,一体化してスケジューリングすることが可能となる。
〔独立サブプロセスの実行時の処理例〕
図8は,独立サブプロセスの実行時の処理例を示す図である。
独立サブプロセスの実行は,サブプロセスspを独立実行させて,ポーリングなどのタスクをメインプロセスmpからの指示で行う処理で利用される。
ステップS21:スケジューリング部155が決定したスケジュールにもとづいて,仮想マシン切替部151が,メインVM2にCPUを割り当てる。
ステップS22:メインVM2において,メインプロセスmpにCPUが割り当てられる。
ステップS23:メインプロセスmpが,サブプロセスspにデバイスのポーリングをさせるため,サブプロセスspのIDを指定して,仮想マシン管理装置10にVM実行依頼の通知をハイパーコール呼び出しにより行う。
ステップS24:通知受信部111が,ハイパーコール呼び出しを受けると,通知処理部115は,サブプロセスspのIDを指定したVM実行依頼を仮想マシンスケジュール管理部15へ通知する。VM状態管理部153,プログラムテーブル13を参照して,サブプロセスspのIDから独立実行を行うサブVMのVM番号を特定し,サブVM番号とスケジューリングのパラメタ(例えば優先度など)をスケジューリング部155に渡す。スケジューリング部155は,特定されたサブVM3のスケジューリングを登録する。
ステップS25:VM切替部151は,メインプロセスmpからのVM切替通知を受け付けることなく,サブVM3にCPUを割り当て,サブVM3でサブプロセスspにCPUが割り当てられる。メインプロセスmpは,メインプロセスmpにCPUが割り当てられたタイミングで,VM間通信部23,33により,サブプロセスspがポーリングにより取得したデータを受信して,処理を行う。
以上のように,仮想マシン管理装置10は,メインプロセスspから得たサブプロセスspの制御情報(スケジューリングパラメタ)にもとづいて,該当するサブVM3を,メインVM2とは独立にスケジューリングすることができる。
一方で,メインプロセスmpから取得したサブプロセスspの制御情報(例えば,スケジューリングパラメタ)にもとづいて独立実行するサブプロセスspのスケジューリングが行われるため,メインVM2と関連付けたスケジューリングも可能となる。
〔スケジューリング処理〕
仮想マシン管理装置10のスケジューリング部155の処理を説明する前に,スケジューリング部155が採用するクレジットスケジュール手法を説明する。
クレジットスケジューリングでは,実行するプロセスに応じた重みwが各仮想マシンに設定され,一定時間(例えば,30ミリ秒[ms])毎に,その重みwに応じたCPUの持ち時間(Credit)が仮想マシンに付与される。
例えば,Credit+=30×(重みw/Activeな仮想マシンVMの総重みW)とし,ここで,重みw=1から10までの値,デフォルト値は1とする。
さらに,クレジットスケジューラは,Creditにより仮想マシンの状態を更新して,仮想マシンの実行優先度を再設定する。
図9は,仮想マシンの状態遷移を示す図である。
仮想マシンは,CPUを割り当てられて実行されると,実行された時間分だけCreditが消費(減算)される。付与されたCreditが残っている(正の値)の場合には,仮想マシンの状態は「UNDER」となる。Creditを使いきっている(負の値)場合には,仮想マシンの状態は「OVER」である。なお,一定時間(例えば,30ms)経過後に,クレジットスケジューラからCreditを再付与されて,値が正になると「UNDER」となる。
また,Creditが一定値(ここでは30)以上である場合には,その仮想マシンは活発に動作していないと判断され,Creditの加算対象から除外され,Creditの値が0となり,状態が「UNDER(INACTIVE)」となる。これは,実行を行わない待ち状態にある仮想マシンが延々とCredit値を加算され続けるのを防止するための処置である。
CPU割当により仮想マシンの実行が再開されると,状態は「UNDER」となる。
同様にOVERの場合も,Creditの下限値(ここでは−30とする)を設定しておき,実行を続けている仮想マシンのCreditが延々と減算され続けるのを防止する。
クレジットスケジューラは,UNDER,OVERの順に高い優先度として扱い,UNDER,OVERの状態にある仮想マシンをランキューで管理し,ランキューの先頭の仮想マシンから順番にCPUを割り当て,また,実行後には,仮想マシンはランキューの末尾に移動させる。
図10は,優先度がUNDERとOVERの場合の待ち状態例を示す図である。
図10に示すように,仮想マシンの状態がOVERからUNDERに戻る場合には,その仮想マシンは,UNDERのランキューの先頭へ移動される。また,UNDERからOVERに落ちる場合には,仮想マシンは,OVERのランキューの末尾に移動される。
クレジットスケジューラでは,仮想マシンの状態更新と仮想マシン間の優先度が再設定された次の30msの間で,図10に示すようなUNDERのランキューの先頭から順に実仮想マシンにCPUが割り当てられる。そして,仮想マシン自体が処理待ちあるいはI/O命令発行などで待ち状態になると,CPU割当がランキューの次の仮想マシンに切り替えられる。UNDERのランキューの仮想マシンの割り当てが一巡した後は,OVERのランキューの先頭の仮想マシンから割り当てが行われる。
クレジットスケジューラは,CPU割当の切り替え時に,仮想マシンの実行された時間(CPU消費時間)を計算して,仮想マシンに付与しているCreditを減算する。例えば,仮想マシンが10ms実行された場合には,Credit−10ms(下限値を−30)として,その仮想マシンをランキューの末尾に移動する。
上記の動作により,Creditを使いきった仮想マシンは,まだCreditが残っている仮想マシンが動作していない時間に限って動作可能になる。また,活発に動作していないと判断された仮想マシンには,新たなCreditが与えられず,活発に動作する仮想マシンがCreditを分けあうことになる。
このようにして,各仮想マシンに設定された重みwに合わせて仮想マシン間の割り当てのバランスをとりながら,効率的なCPU割当が行われる。
仮想マシン管理装置10のスケジューリング部155は,上記のクレジットスケジューリング手法をもとに,仮想マシンの状態として「UNDER」,「OVER」に加え,「IDLE」を設定する。
図11は,優先度がUNDER,OVERおよびIDLEの場合の待ち状態例を示す図である。
スケジューリング部155は,UNDERまたはOVERのランキューには,メインVM2のみを移動させるようにし,通常のランキュー順のCPU割当を,UNDERおよびOVERのランキューの仮想マシン(メインVM2)のみに対して行う。
スケジューリング部155は,サブVM3を,生成時にはIDLE状態とし,UNDERまたはOVERのキューにあるメインVM2からの呼び出しによってのみ,CPUの割り当てを行う。すなわち,スケジューリング部155は,IDLE状態にあるサブVM3をCreditの加算対象および減算対象から除外する。
図12は,スケジューリング部155によるCPU割当の例を示す図である。
図12に,ある時点でのランキューの状態を示す。UNDERのランキューに,仮想マシンVM_A,VM_B,VM_C,VM_Dが,OVERのランキューに,VM_E,VM_F,VM_G,VM_Hが,IDLEのランキューに,VM_I,VM_J,VM_K,VM_Lが,それぞれあるとする。
ここで,VM_Kが,VM_BのサブVMであり,VM_KからVM_Bを呼び出す処理があるとする。この場合に,仮想マシンがスケジューリングされる手順とCPUを割り当てられる仮想マシンは以下のようになる。
ステップS41:スケジューリング部155は,UNDERのランキューの先頭のメインVM(VM_A)を割当対象とする。
ステップS42:スケジューリング部155が,UNDERのランキューの次のメインVM(VM_B)に割り当て対象を移すと,VM切替部151は,メインVM(VM_B)にCPU割当を切り替える。
ステップS43:仮想マシンVM_BからサブVM(VM_K)への切替依頼が通知されると,スケジューリング部155が,IDLEのサブVM(VM_K)に割り当て対象を移し,VM切替部151は,サブVM(VM_K)にCPU割当を切り替え,実行する。
ステップS44:サブVM(VM_K)から,メインVM(VM_B)への割り当て切替が通知されると,スケジューリング部155は,UNDERのランキューのメインVM(VM_B)へ割り当て対象を移し,VM切替部151は,メインVM(VM_B)へCPU割当を切り替えて復帰する。
ステップS45:スケジューリング部155は,UNDERのランキューのメインVM(VM_C)へ割り当て対象を移し,VM切替部151は,メインVM(VM_C)へCPU割当を切り替えて,次のプログラムのメインVB_Cが実行される。
既に説明したように,IDLE状態にあるサブVM(VM_K)は,Creditの加算および減算対象ではないため,消費時間計算部157は,サブVM(VM_K)が消費したCPU時間を,メインVM(VM_B)が消費したCPU時間としてCreditから減算する。
これにより,スケジューリング部155は,メインVM2のCreditのみを通常の仮想マシンと同様に管理するだけで,サブVM3のCredit消費量をメインVMの消費量として計上することができる。
図13は,独立実行されるサブVMとして,リアルタイムVMが生成される場合の割り当て例を示す図である。
リアルタイムVMは,所定のスケジューリング期間中で常に一定の時間を割り当てられることが保証されている仮想マシンであり,他の仮想マシンとは異なる優先度でスケジューリングされる。
通常の仮想マシンのVM_A,VM_B,VM_C,VM_Dと,リアルタイムVMのRTVM_A,RTVM_Bが生成されている場合に,スケジューリング部155は,クレジットスケジューリング手法により処理を行う場合に,クレジットスケジューリングによってスケジューリングする時間と,リアルタイムでスケジュールする時間とに分割して管理し,システムの中で一定時間をリアルタイムVMに割り当てるようにする。
スケジューリング部155は,一定のタイムスライス(ここでは30ms)とする中で,タイムスライスの90%(27ms)を,クレジットスケジューリングにもとづいて通常のVM(VM_A〜VM_D)の割り当てをスケジュールする。そして,スケジューリング部155は,タイムスライスの10%(3ms)を,リアルタイムVM(RTVM_A,RTVM_B)に割り当てる。
リアルタイムVMは,優先度p(ここでは1−10の値とし,デフォルト値は1とする)を持ち,各々のリアルタイムVMのCPU持ち時間は,(3ms×優先度p/リアルタイムVMの総優先度P)とする。例えば,RTVM_Aの優先度p=1,RTVM_Bの優先度p=2の場合に,RTVM_Aに1ms,RTVM_Bに2msがそれぞれ割り当てられるようにする。
図14は,スケジューリング部155によるCPU割当の例を示す図である。
図14に,ある時点でのランキューの状態を示す。UNDERのランキューに,仮想マシンVM_A,VM_B,VM_C,VM_Dが,OVERのランキューに,VM_E,VM_F,VM_G,VM_Hが,IDLEのランキューに,VM_I,VM_J,VM_K,VM_Lが,リアルタイムVM用(RT)のランキューに,VM_Mが,それぞれあるとする。
サブVM(VM_L)は,生成時には通常のサブVMとして優先度がIDLEと設定される。その後,メインVMからの独立実行のサブVMとしてVM実行通知がなされると,スケジューリング部155は,サブVM(VM_L)をIDLEのランキューからRTのランキューに移動させる。さらに,RTランキューに移動されたサブVM(VM_L)は,VM実行通知において付与された優先度pに従って,一定のタイムスライス内で必ずCPU時間が割り当てられることが保証される。
これにより,メインVM2のリアルタイム処理などをリアルタイムRTすなわちRTランキューのサブVMが肩代わりして実行することが可能となる。
図15は,仮想マシンシステム1を実現するハードウェア構成例を示す図である。
図15に示すように,仮想マシンシステム1は,CPU101,主記憶部(メモリ)103,入出力インターフェイス105,外部記憶装置110,入力装置(キーボード等)120を備えるコンピュータ100によって実施することができる。
仮想マシンシステム1は,コンピュータ100が実行可能なプログラムによって実施することができる。この場合に,仮想マシンシステム1が有すべき機能の処理内容を記述したプログラムが提供される。提供されたプログラムをコンピュータ100が実行することによって,上記説明した仮想マシンシステム1の各処理部がコンピュータ100上で実現される。
なお,コンピュータ100は,可搬型記録媒体から直接プログラムを読み取り,そのプログラムに従った処理を実行することもできる。また,コンピュータ100は,サーバコンピュータからプログラムが転送されるごとに,逐次,受け取ったプログラムに従った処理を実行することもできる。
さらに,このプログラムは,コンピュータ100で読み取り可能な記録媒体に記録しておくことができる。
上記した仮想マシンシステム1によれば,以下の制御を実現するスケジューリングが可能となる。すなわち,1つのプログラムを複数のプロセスに分割して異なる仮想マシンで実行する場合に,ある仮想マシンのメインプロセスから他仮想マシンのプロセスのサブルーチン呼び出しを行い,サブルーチンの処理終了後に呼び出し元の仮想マシンのプロセスに制御が戻ることが可能となる。そのため,メインプロセスとサブルーチンを1つの仮想マシンで実行するように一体化して実行させることができる。
また,ある仮想マシンのプロセスから他仮想マシン上のプロセスの動作について,一定時間ごとにCPUが割り当てられるなどの制御を行うことが可能となる。
仮想化技術を用いて,プログラムを複数のプロセスに分割して,別々の仮想マシン上で実行させるモデルにおいて,主にユーザが操作するメインプロセスが,サブプロセスのサブルーチン呼び出しを必要とするタイミングに合わせて,サブプロセスを実行する仮想マシンへのCPU割当が行われ,プログラムを分割せずに実行している場合と同等にCPU割当時間を制御することができる。
また,サブプロセスを独立に実行させ,そのCPU割当についても制御することで,一定時間内でのポーリングなどを必要とするリアルタイムプログラムの制御も行うことができる。
本願発明の実施態様における特徴を列記すると以下のようになる。
(付記1) プロセスを実行する複数の仮想マシンを仮想マシン管理装置上に構築し,前記仮想マシン管理装置が,前記構築された仮想マシンにCPUを割り当てて,各仮想マシンのプロセスの実行を管理する仮想マシンシステムであって,
前記仮想マシン管理装置は,
プログラムの実行を管理する,プログラム管理部と,
前記プログラムを構成する複数のプロセスを各々で実行する複数の仮想マシンへのCPU割当を,スケジュールにもとづいて管理する,仮想マシンスケジュール管理部とを備えて,
前記プログラム管理部は,
前記プログラムを構成する複数のプロセスのうち当該プログラムの起動要求を受けて実行される第1プロセスを実行する第1仮想マシンから,前記第1プロセスの識別情報,前記プログラムを構成する前記第1プロセス以外の第2プロセス以降のプロセスを特定する情報を含むプログラム構成情報を取得して,前記プログラム構成情報および前記各プロセスを実行する仮想マシンの識別情報をプログラムテーブルに登録する,プログラムテーブル管理部と,
前記仮想マシン管理装置上に生成した仮想マシンで実行されているプロセスから通知を受信する,通知受信部と,
前記プログラムテーブルを参照して,前記通知受信部が受信した通知に対応するプロセスに関する処理の要求を前記仮想マシンスケジュール管理部へ送信する,通知処理部とを備えて,
前記仮想マシンスケジュール管理部は,
前記仮想マシンに対するCPU割当のスケジュールを決定する,スケジューリング部と,
前記通知処理部から受信した前記要求が前記プログラムの起動要求である場合に,当該起動対象のプログラムを構成する前記第1プロセスを実行する第1仮想マシンを生成する処理と,前記通知処理部から受信した前記要求が前記第1プロセスに関連する第2プロセス以降のプロセスの実行要求である場合に,前記第2プロセス以降のプロセスを実行する仮想マシンを生成する処理とを行う,仮想マシン状態管理部と,
前記通知処理部からの通知にもとづいて,前記要求により実行が要求される要求先のプロセスを実行する仮想マシンを前記プログラムテーブルにより特定し,前記特定した仮想マシンへCPU割当を切り替える,仮想マシン切替部とを備えて,
前記第1仮想マシンは,
前記第1プロセスの実行時に,前記プログラム構成情報を前記プログラム管理部へ送信する処理と,要求元および要求先のプロセスを特定する情報を含むプロセス呼び出しの通知を前記プログラム管理部へ送信する処理とを行う,仮想マシンモニタ通知部を備え,
前記第2プロセス以降のプロセスを実行する各仮想マシンは,
要求元および前記処理したプロセスの返却先のプロセスを特定する情報を含むプロセス返却の通知を前記プログラム管理部へ送信する,仮想マシンモニタ通知部を備える
ことを特徴とする仮想マシンシステム。
(付記2) 前記仮想マシン状態管理部は,前記通知受信部が前記プロセス呼び出しの通知を受信した場合に,前記受信されたプログラム構成情報にもとづくプログラムテーブルを参照して,前記プロセス呼び出しの呼び出し先である前記第2プロセス以降のプロセスを特定して,前記特定したプロセスを実行する仮想マシンの生成を行う
ことを特徴とする前記付記1に記載の仮想マシンシステム。
(付記3) 前記仮想マシン状態管理部は,前記通知受信部が,前記第2プロセス以降のプロセスの各属性情報を含むプログラム構成情報を受信した場合に,前記受信されたプログラム構成情報にもとづくプログラムテーブルを参照して,前記第2プロセス以降のプロセスとして前記属性情報に対応するプロセスを実行する仮想マシンの生成を行う
ことを特徴とする前記付記1または2に記載の仮想マシンシステム。
(付記4) 前記仮想マシン状態管理部は,前記プログラムの実行に関連するプロセスであって前記プログラムのプロセスと独立して実行される独立プロセスの情報を含むプログラム構成情報を受信した場合に,前記受信されたプログラム構成情報にもとづくプログラムテーブルを参照して,前記独立プロセスを実行する仮想マシンの生成を行い,
前記スケジューリング部は,前記生成された独立プロセスを実行する仮想マシンのスケジューリングを行う
ことを特徴とする前記付記1〜3のいずれか一項に記載の仮想マシンシステム。
(付記5) 前記仮想マシンスケジュール管理部は,
前記仮想マシン毎のCPU消費時間を取得する処理と,前記プログラムテーブルをもとに,前記第2プロセス以降のプロセスを実行する各仮想マシンの前記CPU消費時間を,前記第1仮想マシンのCPU消費時間に加算する処理とを行う消費時間計算部を備えて,
前記スケジューリング部は,前記仮想マシンのCPU割当のスケジュールを決定する際に,前記第1仮想マシンのCPU消費時間として前記消費時間計算部により加算されたCPU消費時間を用いてスケジュールを決定する
ことを特徴とする前記付記1〜4のいずれか一項に記載の仮想マシンシステム。
(付記6) 前記仮想マシン状態管理部は,前記生成された第1仮想マシンおよび前記第2プロセス以降のプロセスを実行する各仮想マシンに,仮想マシン間のメッセージ通信を行う仮想マシン間通信部を生成する
ことを特徴とする前記付記1〜5のいずれか一項に記載の仮想マシンシステム。
(付記7) 前記スケジューリング部は,前記独立プロセスを実行する仮想マシンが生成されている場合に,所定のスケジュール期間内に前記独立プロセスを実行する仮想マシンのスケジュールを設定し,前記設定後に前記第1仮想マシンおよび他の仮想マシンのスケジュールを決定する
ことを特徴とする前記付記4に記載の仮想マシンシステム。
(付記8) 前記仮想マシン状態管理部が,前記プログラムの第1プロセスを実行する第1仮想マシンを複数生成かつ前記複数の仮想マシンが実行するプロセスが前記第2プロセス以降のプロセスを共有している場合に,
前記消費時間計算部は,前記プログラムテーブルをもとに,前記複数の第1仮想マシンによって共有されたプロセスを実行する仮想マシンのCPU消費時間を,前記共有する第1仮想マシンの各々のCPU消費時間に加算する
ことを特徴とする前記付記5に記載の仮想マシンシステム。
(付記9) 前記プログラム構成情報は,前記プログラムを構成する前記第2プロセス以降のプロセスの実行イメージを含む情報である
ことを特徴とする前記付記1〜8のいずれか一項に記載の仮想マシンシステム。
(付記10) 前記プログラム構成情報は,前記プログラムを構成する前記第2プロセス以降のプロセスを実行する仮想マシンの実行イメージを含む情報である
ことを特徴とする前記付記1〜8のいずれか一項に記載の仮想マシンシステム。
(付記11) プロセスを実行する複数の仮想マシンを構築して,前記構築した仮想マシンにCPUを割り当てて,各仮想マシンのプロセスの実行を管理する仮想マシン管理装置が実行する仮想マシン管理方法であって,
前記仮想マシン管理装置が,プログラムの実行を管理するプログラム管理部と,前記プログラムを構成する複数のプロセスを各々で実行する複数の仮想マシンへのCPU割当を,スケジュールにもとづいて管理する仮想マシンスケジュール管理部と,プログラムテーブルとを備えて,
前記プログラム管理部が,前記プログラムの起動要求を受信する処理ステップと,
前記仮想マシンスケジュール管理部が,前記プログラムの起動要求が通知された場合に,前記プログラムを構成するプロセスであって前記起動要求を受けて実行する第1プロセスを実行する第1仮想マシンを生成する処理ステップと,
前記プログラム管理部が,前記第1仮想マシンから,前記第1プロセスの識別情報,前記プログラムを構成する前記第1プロセス以外の第2プロセス以降のプロセスを特定する情報を含むプログラム構成情報を取得する処理ステップと,
前記プログラム管理部が,前記プログラム構成情報および前記各プロセスを実行する仮想マシンの識別情報を前記プログラムテーブルに格納する処理ステップと,
前記プログラム管理部が,前記第1プロセスから,前記第1プロセスに関連する第2プロセス以降のプロセスの実行要求を受信する処理ステップと,
前記仮想マシンスケジュール管理部が,前記第2プロセス以降のプロセスを実行する仮想マシンを生成する処理ステップと,
前記プログラム管理部が,前記第1プロセスから前記第2プロセス以降のプロセスの呼び出し通知を受信する処理ステップと,
前記仮想マシンスケジュール管理部が,前記プログラムテーブルを参照して,前記呼び出し通知に対応するプロセスを実行する仮想マシンへCPU割当を切り替える処理ステップと,
前記プログラム管理部が,前記第2プロセスから前記呼び出し通知に関する処理の返却通知を受信する処理ステップと,
前記仮想マシンスケジュール管理部が,前記プログラムテーブルを参照して,前記返却通知に対応するプロセスを実行する仮想マシンへCPU割当を切り替える処理ステップとを備える
ことを特徴とする仮想マシン管理方法。
1 仮想マシンシステム
10 仮想マシン管理装置
11 プログラム管理部
111 通知受信部
113 プログラムテーブル管理部
115 通知処理部
13 プログラムテーブル
15 仮想マシンスケジュール管理部
151 仮想マシン切替部
153 仮想マシン状態管理部
155 スケジューリング部
157 消費時間計算部
17 仮想マシン間通信部
2 第1仮想マシン(メインVM)
21 仮想マシンモニタ通知部
23 仮想マシン間通信部
3 仮想マシン(サブVM)
31 仮想マシンモニタ通知部
33 仮想マシン間通信部
4 仮想マシン(他VM)

Claims (6)

  1. プロセスを実行する複数の仮想マシンを仮想マシン管理装置上に構築し,前記仮想マシン管理装置が,前記構築された仮想マシンにCPUを割り当てて,各仮想マシンのプロセスの実行を管理する仮想マシンシステムであって,
    前記仮想マシン管理装置は,
    プログラムの実行を管理する,プログラム管理部と,
    前記プログラムを構成する複数のプロセスを各々で実行する複数の仮想マシンへのCPU割当を,スケジュールにもとづいて管理する,仮想マシンスケジュール管理部とを備えて,
    前記プログラム管理部は,
    前記プログラムを構成する複数のプロセスのうち当該プログラムの起動要求を受けて実行される第1プロセスを実行する第1仮想マシンから,前記第1プロセスの識別情報,前記プログラムを構成する前記第1プロセス以外の第2プロセス以降のプロセスを特定する情報を含むプログラム構成情報を取得して,前記プログラム構成情報および前記各プロセスを実行する仮想マシンの識別情報をプログラムテーブルに登録する,プログラムテーブル管理部と,
    前記仮想マシン管理装置上に生成した仮想マシンで実行されているプロセスから通知を受信する,通知受信部と,
    前記プログラムテーブルを参照して,前記通知受信部が受信した通知に対応するプロセスに関する処理の要求を前記仮想マシンスケジュール管理部へ送信する,通知処理部とを備えて,
    前記仮想マシンスケジュール管理部は,
    前記仮想マシンに対するCPU割当のスケジュールを決定する,スケジューリング部と,
    前記通知処理部から受信した前記要求が前記プログラムの起動要求である場合に,当該起動対象のプログラムを構成する前記第1プロセスを実行する第1仮想マシンを生成する処理と,前記通知処理部から受信した前記要求が前記第1プロセスに関連する第2プロセス以降のプロセスの実行要求である場合に,前記第2プロセス以降のプロセスを実行する仮想マシンを生成する処理とを行う,仮想マシン状態管理部と,
    前記通知処理部からの通知にもとづいて,前記要求により実行が要求される要求先のプロセスを実行する仮想マシンを前記プログラムテーブルにより特定し,前記特定した仮想マシンへCPU割当を切り替える,仮想マシン切替部とを備えて,
    前記第1仮想マシンは,
    前記第1プロセスの実行時に,前記プログラム構成情報を前記プログラム管理部へ送信する処理と,要求元および要求先のプロセスを特定する情報を含むプロセス呼び出しの通知を前記プログラム管理部へ送信する処理とを行う,仮想マシンモニタ通知部を備え,
    前記第2プロセス以降のプロセスを実行する各仮想マシンは,
    要求元および前記処理したプロセスの返却先のプロセスを特定する情報を含むプロセス返却の通知を前記プログラム管理部へ送信する,仮想マシンモニタ通知部を備える
    ことを特徴とする仮想マシンシステム。
  2. 前記仮想マシン状態管理部は,前記通知受信部が,前記第2プロセス以降のプロセスの各属性情報を含むプログラム構成情報を受信した場合に,前記受信されたプログラム構成情報にもとづくプログラムテーブルを参照して,前記第2プロセス以降のプロセスとして前記属性情報に対応するプロセスを実行する仮想マシンの生成を行う
    ことを特徴とする請求項1に記載の仮想マシンシステム。
  3. 前記仮想マシン状態管理部は,前記プログラムの実行に関連するプロセスであって前記プログラムのプロセスと独立して実行される独立プロセスの情報を含むプログラム構成情報を受信した場合に,前記受信されたプログラム構成情報にもとづくプログラムテーブルを参照して,前記独立プロセスを実行する仮想マシンの生成を行い,
    前記スケジューリング部は,前記生成された独立プロセスを実行する仮想マシンのスケジューリングを行う
    ことを特徴とする請求項1または請求項2に記載の仮想マシンシステム。
  4. 前記仮想マシンスケジュール管理部は,
    前記仮想マシン毎のCPU消費時間を取得する処理と,前記プログラムテーブルをもとに,前記第2プロセス以降のプロセスを実行する各仮想マシンの前記CPU消費時間を,前記第1仮想マシンのCPU消費時間に加算する処理とを行う消費時間計算部を備えて,
    前記スケジューリング部は,前記仮想マシンのCPU割当のスケジュールを決定する際に,前記第1仮想マシンのCPU消費時間として前記消費時間計算部により加算されたCPU消費時間を用いてスケジュールを決定する
    ことを特徴とする請求項1ないし請求項3のいずれか一項に記載の仮想マシンシステム。
  5. 前記仮想マシン状態管理部が,前記プログラムの第1プロセスを実行する第1仮想マシンを複数生成かつ前記複数の仮想マシンが実行するプロセスが前記第2プロセス以降のプロセスを共有している場合に,
    前記消費時間計算部は,前記プログラムテーブルをもとに,前記複数の第1仮想マシンによって共有されたプロセスを実行する仮想マシンのCPU消費時間を,前記共有する第1仮想マシンの各々のCPU消費時間に加算する
    ことを特徴とする請求項4に記載の仮想マシンシステム。
  6. プロセスを実行する複数の仮想マシンを構築して,前記構築した仮想マシンにCPUを割り当てて,各仮想マシンのプロセスの実行を管理する仮想マシン管理装置が実行する仮想マシン管理方法であって,
    前記仮想マシン管理装置が,プログラムの実行を管理するプログラム管理部と,前記プログラムを構成する複数のプロセスを各々で実行する複数の仮想マシンへのCPU割当を,スケジュールにもとづいて管理する仮想マシンスケジュール管理部と,プログラムテーブルとを備えて,
    前記プログラム管理部が,前記プログラムの起動要求を受信する処理ステップと,
    前記仮想マシンスケジュール管理部が,前記プログラムの起動要求が通知された場合に,前記プログラムを構成するプロセスであって前記起動要求を受けて実行する第1プロセスを実行する第1仮想マシンを生成する処理ステップと,
    前記プログラム管理部が,前記第1仮想マシンから,前記第1プロセスの識別情報,前記プログラムを構成する前記第1プロセス以外の第2プロセス以降のプロセスを特定する情報を含むプログラム構成情報を取得する処理ステップと,
    前記プログラム管理部が,前記プログラム構成情報および前記各プロセスを実行する仮想マシンの識別情報を前記プログラムテーブルに格納する処理ステップと,
    前記プログラム管理部が,前記第1プロセスから,前記第1プロセスに関連する第2プロセス以降のプロセスの実行要求を受信する処理ステップと,
    前記仮想マシンスケジュール管理部が,前記第2プロセス以降のプロセスを実行する仮想マシンを生成する処理ステップと,
    前記プログラム管理部が,前記第1プロセスから前記第2プロセス以降のプロセスの呼び出し通知を受信する処理ステップと,
    前記仮想マシンスケジュール管理部が,前記プログラムテーブルを参照して,前記呼び出し通知に対応するプロセスを実行する仮想マシンへCPU割当を切り替える処理ステップと,
    前記プログラム管理部が,前記第2プロセスから前記呼び出し通知に関する処理の返却通知を受信する処理ステップと,
    前記仮想マシンスケジュール管理部が,前記プログラムテーブルを参照して,前記返却通知に対応するプロセスを実行する仮想マシンへCPU割当を切り替える処理ステップとを備える
    ことを特徴とする仮想マシン管理方法。
JP2010064045A 2010-03-19 2010-03-19 仮想マシンシステムおよび仮想マシン管理方法 Expired - Fee Related JP5458998B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010064045A JP5458998B2 (ja) 2010-03-19 2010-03-19 仮想マシンシステムおよび仮想マシン管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010064045A JP5458998B2 (ja) 2010-03-19 2010-03-19 仮想マシンシステムおよび仮想マシン管理方法

Publications (2)

Publication Number Publication Date
JP2011198027A JP2011198027A (ja) 2011-10-06
JP5458998B2 true JP5458998B2 (ja) 2014-04-02

Family

ID=44876145

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010064045A Expired - Fee Related JP5458998B2 (ja) 2010-03-19 2010-03-19 仮想マシンシステムおよび仮想マシン管理方法

Country Status (1)

Country Link
JP (1) JP5458998B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5820525B2 (ja) 2012-03-29 2015-11-24 株式会社日立製作所 仮想計算機のスケジュールシステム及びその方法
US9411637B2 (en) * 2012-06-08 2016-08-09 Apple Inc. Adaptive process importance
WO2014020752A1 (ja) * 2012-08-03 2014-02-06 株式会社日立製作所 サーバ計算機及びサーバ計算方法
US10649796B2 (en) * 2014-06-27 2020-05-12 Amazon Technologies, Inc. Rolling resource credits for scheduling of virtual computer resources
CN105843592A (zh) * 2015-01-12 2016-08-10 芋头科技(杭州)有限公司 一种在预设嵌入式系统中实现脚本操作的系统
CN109947576B (zh) * 2017-12-21 2022-12-06 上海盛霄云计算技术有限公司 一种虚拟机内部代理程序管理的方法
CN111512285A (zh) * 2017-12-25 2020-08-07 三菱电机株式会社 设计辅助装置、设计辅助方法及程序
JP7259656B2 (ja) 2019-09-04 2023-04-18 トヨタ自動車株式会社 車両の制御装置、車両の制御方法及び制御プログラム
KR102443894B1 (ko) * 2020-11-23 2022-09-20 고려대학교 산학협력단 가상화 환경에서 가상머신의 i/o 성능을 높이기 위한 스케줄링 방법
CN113238832B (zh) * 2021-05-20 2024-12-27 元心信息科技集团有限公司 虚拟处理器的调度方法、装置、设备及计算机存储介质

Family Cites Families (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 デイスパツチング方式
JP2010039626A (ja) * 2008-08-01 2010-02-18 Fujitsu Ltd ネットワーク設定プログラム,ネットワーク設定方法及びネットワーク設定装置

Also Published As

Publication number Publication date
JP2011198027A (ja) 2011-10-06

Similar Documents

Publication Publication Date Title
JP5458998B2 (ja) 仮想マシンシステムおよび仮想マシン管理方法
US11797327B2 (en) Dynamic virtual machine sizing
JP5596343B2 (ja) 仮想計算機システムおよびその最適化方法
JP4345630B2 (ja) 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム
KR20110103257A (ko) 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법
JP4705051B2 (ja) 計算機システム
JP2020009403A (ja) 産業用サーバのマイクロカーネルアーキテクチャの制御システム及び産業用サーバ
JP2009110404A (ja) 仮想計算機システム及び同システムにおけるゲストosスケジューリング方法
CN102890643A (zh) 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
JP2008171293A (ja) 仮想計算機システムのスケジューリング方法
US20090241112A1 (en) Recording medium recording virtual machine control program and virtual machine system
CN110447012A (zh) 协作虚拟处理器调度
WO2013035246A1 (ja) 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路
JP5820525B2 (ja) 仮想計算機のスケジュールシステム及びその方法
Wang et al. Unleashing the power of preemptive priority-based scheduling for real-time gpu tasks
KR101330609B1 (ko) 모바일 멀티코어 가상화 시스템에서 실시간 처리를 보장하기 위한 스케쥴링 방법
JP7196439B2 (ja) 仮想化環境におけるデバイスへのアクセス方法
CN103970608A (zh) 用于借助至少两个虚拟机来管理计算机资源的方法及虚拟化控制器
CN114816777A (zh) 命令处理装置、方法、电子设备以及计算机可读存储介质
CN114327814B (zh) 任务调度方法、虚拟机、物理主机和存储介质
US20240231867A9 (en) Paravirtual pause loops in guest user space
Walters et al. Enabling interactive jobs in virtualized data centers
Ruda et al. Scheduling virtual grids: the magrathea system
KR101334842B1 (ko) 가상화 지원 단말 플랫폼을 위한 가상머신 관리장치 및 방법
Denemark et al. Virtualizing METACenter Resources Using Magrathea

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131128

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: 20131217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131230

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees