特許第5820525号(P5820525)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧
特許5820525仮想計算機のスケジュールシステム及びその方法
<>
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000002
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000003
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000004
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000005
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000006
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000007
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000008
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000009
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000010
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000011
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000012
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000013
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000014
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000015
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000016
  • 特許5820525-仮想計算機のスケジュールシステム及びその方法 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5820525
(24)【登録日】2015年10月9日
(45)【発行日】2015年11月24日
(54)【発明の名称】仮想計算機のスケジュールシステム及びその方法
(51)【国際特許分類】
   G06F 9/48 20060101AFI20151104BHJP
   G06F 9/46 20060101ALI20151104BHJP
【FI】
   G06F9/46 452A
   G06F9/46 350
【請求項の数】8
【全頁数】19
(21)【出願番号】特願2014-507165(P2014-507165)
(86)(22)【出願日】2012年3月29日
(86)【国際出願番号】JP2012058295
(87)【国際公開番号】WO2013145199
(87)【国際公開日】20131003
【審査請求日】2014年5月21日
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜特許業務法人
(72)【発明者】
【氏名】金 成昊
(72)【発明者】
【氏名】大平 崇博
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2005−43959(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
G06F 9/46
(57)【特許請求の範囲】
【請求項1】
プロセッサとメモリを備え、前記メモリに格納されたホストOSおよび仮想計算機を前記プロセッサで実行する計算機システムにおける仮想計算機のスケジュール方法であって、
前記仮想計算機上に設けた仮想計算機内スケジュール処理部が、
前記仮想計算機上で動作するアプリケーションの優先度に従って優先度グループを作成し、
通知手段が、
前記優先度グループの動作開始と終了の通知を受け、前記優先度グループの動作開始と終了を前記ホストOSへ通知し、
仮想計算機スケジューラ制御部が、
前記優先度グループの動作開始と終了から、前記優先度グループを実行する仮想計算機の処理優先度を決定することを特徴とする仮想計算機のスケジュール方法。
【請求項2】
前記通知手段は、前記優先度グループの先頭アプリケーションの実行と最後尾アプリケーションの実行により前記優先度グループの動作開始と終了の通知を受けることを特徴とする請求項1に記載の仮想計算機のスケジュール方法。
【請求項3】
前記仮想計算機スケジューラ制御部は、前記優先度グループの動作開始と終了から前記優先度グループの処理時間を求め、前記優先度グループの処理時間を基に、前記優先度グループを実行する仮想計算機の処理優先度を決定することを特徴とする請求項2に記載の仮想計算機のスケジュール方法。
【請求項4】
前記仮想計算機スケジューラ制御部に設けた割り込み管理部は、仮想計算機毎に外部装置からの割り込み数を制限することによって、仮想計算機で実行されるアプリケーションが予め定められたデッドラインまでに処理されるリアルタイム性を保証する制御を行うことを特徴とする請求項に記載の仮想計算機のスケジュール方法。
【請求項5】
プロセッサとメモリを備え、前記メモリに格納されたホストOSおよび仮想計算機を前記プロセッサで実行する仮想計算機のスケジュールシステムであって、
前記仮想計算上で動作するアプリケーションの優先度に従って優先度グループを作成する仮想計算機内スケジュール処理部と、
前記優先度グループの動作開始と終了の通知を受け、前記優先度グループの動作開始と終了を前記ホストOSへ通知する通知手段と、
前記優先度グループの動作開始と終了から前記優先度グループの処理時間を求め、前記優先度グループの処理時間を基に、前記優先度グループを実行する仮想計算機の処理優先度を決定する仮想計算機スケジューラ制御部を備えることを特徴とする仮想計算機のスケジュールシステム。
【請求項6】
前記通知手段は、前記優先度グループの先頭アプリケーションの実行と最後尾アプリケーションの実行により前記優先度グループの動作開始と終了の通知を受けることを特徴とする請求項5に記載の仮想計算機のスケジュールシステム。
【請求項7】
前記仮想計算機スケジューラ制御部は、前記優先度グループの動作開始と終了から前記優先度グループの処理時間を求め、前記優先度グループの処理時間を基に、前記優先度グループを実行する仮想計算機の処理優先度を決定することを特徴とする請求項6に記載の仮想計算機のスケジュールシステム。
【請求項8】
前記仮想計算機スケジューラ制御部に、仮想計算機毎に外部装置からの割り込み数を制限する割り込み管理部を設け、仮想計算機で実行されるアプリケーションが予め定められたデッドラインまでに処理されるリアルタイム性を保証する制御を行うことを特徴とする請求項に記載の仮想計算機のスケジュールシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバ仮想化環境においてリアルタイム性が必要な仮想計算機の運用する計算機システムに関し、特にCPUリソースの制限がある計算機上の仮想計算機をスケジュールする方法である。
【背景技術】
【0002】
サーバ仮想化技術は、1台の物理計算機上で複数の仮想計算機(VM)を実行して、物理計算機の台数を削減することで、運用コスト、計算機の設置場所及び消費電力等を削減できる利点があり、注目を浴びている。その際、仮想計算機内のアプリケーションによってリアルタイム性が要求される。しかし、物理計算機に仮想計算機に割り当てるCPUリソースが十分に存在する場合は、CPUリソースを占有割当するなどの性能保証の手法が存在するが、CPUリソースが不十分な計算機環境では、十分なリアルタイム性保証は困難である。また、計算機と接続されているネットワークデバイス等の外部装置からの割り込みが頻繁に発生する場合、仮想計算機内のアプリケーションの処理遅延が発生し、その状況をさらに悪化させる。しかし、制御システムにおいてはこのような計算機状況でも、仮想計算機上のアプリケーションのリアルタイム性保証が要求される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2011−198027号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に示す従来の仮想計算機のスケジュール方式では、仮想計算機で処理するアプリケーションをスレッド単位に分離し、分離したスレッド単位を複数の仮想計算機で分担して処理を行うこととし、アプリケーションの処理順に仮想計算機の実行順番をスケジュールしていた。しかし、複数のアプリケーションから構成されるシステムの場合、リソースの占有状態を考慮すると、アプリケーションの処理順序のみに基づいて、仮想計算機の実行順番を決定するのは困難である。また、それぞれのCPUの負荷(さらには処理能力)が異なるので複数CPU構成のマルチCPU環境での対応が困難であるため、物理計算機のCPUリソースの有効な活用ができない。
【0005】
そこで、本発明は1つ以上のCPUリソースが利用できる物理計算機環境において、大規模なアプリケーションを稼働する複数仮想計算機で構成される仮想化システムのスケジュール方法において、仮想計算機で処理するアプリケーションのリアルタイム性を保証できる仮想計算機のスケジューリング技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
物理計算機及び各仮想計算機は物理NICを共有し、それを介して計算機サーバやコントローラ等の外部装置と通信を行っている。また、ホストOSおよび複数の仮想計算機を搭載する計算機システムにおいて、上記の計算機内部のホストOS上にVMスケジューラ制御部を設ける。また、各仮想計算機上にはゲストOSが稼働して、仮想計算機上のアプリケーションの実行処理を行う。ゲストOS上には、前記アプリケーションの実行優先度別グループでアプリケーションの実行順を決定するVM内スケジュール制御部を設ける。ただし、ホストOSには各仮想計算機にCPUリソースを割り当てるスケジュール機能を備え、外部装置からの割り込みを該当仮想計算機へ伝達する割り込み処理機能を備えた仮想化プログラムを備えていることを前提とする。また、ゲストOSには、ホストOSから各仮想計算機に割り当てたCPUリソースを仮想計算機内アプリケーションに割り当ててアプリケーションを実行できるスケジュール機能、及び、ホストOS上の仮想化プログラムから通知された割り込みを処理する機能を備えていることを前提とする。
【0007】
まず、ゲストOS上で稼働するVM内スケジュール制御部は、仮想計算機内のアプリケーションを優先度別にグループに分ける。また、各グループの先頭と最後尾にはVM内スケジュール制御部が用意するグループの中で最初に実行するアプリケーションと最後に実行するアプリケーションが登録される。
【0008】
前記優先度グループは複数存在する。各優先度グループは優先度を表す識別子を持つ。本発明では、「L1」が最高優先度グループとし、「Ln」が最低優先度グループとする。VM内スケジュール制御部は「L1」から「Ln」までのいずれかのグループに属する全アプリケーションは、あるデッドラインで処理されることを保証するように各優先度グループの処理時間が管理される。各グループの処理時間は、前記グループ先頭アプリケーションの起動時間と、最後尾アプリケーションを終了時間で管理している。前記デッドライン設計は、本発明を提供するシステムの要件によって調整する必要がある。
【0009】
なお、ホストOS上のVMスケジューラ制御部へ各仮想計算機の内部スケジュール状態を通知するために、各ゲストOSのVM内スケジュール制御部は、ホストOS上のVMスケジューラ制御部との通知手段を備える。ホストOS上のVMスケジューラ制御部が各仮想計算機の内部スケジュール状態を把握するために、ゲストOS上のVM内スケジュール制御部は、仮想計算機内の優先度グループの先頭アプリケーションの開始と最後尾アプリケーションの終了をホストOS上のVMスケジューラ制御部に通知する。
【0010】
ただし、優先度が最も低い「Ln」優先度グループにおいては、前記の通知は行わない。仮想計算機からホストOSへの通知のオーバヘッドは大きいため、低優先度のグループの開始終了は管理しないことで、前記オーバヘッドの低減を実施する。「Ln」以外の高優先度グループからのアプリケーションの開始と終了の時間の通知によって、ホストOS上のVMスケジューラ制御部は各仮想化計算機で実行されているアプリケーションの優先度が把握できる。
【0011】
仮想計算機内の実行優先度から、CPUリソースに割り当てるべき仮想計算機を選択する。そのため、ホストOS上のVMスケジューラ制御部は、各仮想計算機の実行状態として優先度グループの優先度を常に記録管理し、高優先度グループの終了通知をもって通知元の仮想計算機の優先度を下げていく。したがって、複数の仮想計算機の中で最優先にCPUリソースを割り当てるべき仮想計算機が把握できる。
【0012】
なお、各仮想計算機が守るべきデッドラインを監視し、現状の実行優先度が低い仮想計算機であってもデッドラインに近い仮想計算機は最高優先度に調整し、かならずデッドラインを守るように調整する。「Ln」のような優先度が低いグループは、仮想計算機内のVM内スケジュール制御部からホストOSへの、先頭アプリケーションの開始及び最後尾アプリケーションの終了の通知によるデッドラインによるスケジュール制御ではなく、後述するCPUリソースを割り当てるQuota時間でスケジュール制御を行う。
【0013】
一方、割り込み処理においては、ホストOS上のVMスケジューラ制御部内に割り込み管理制御部を設け、仮想計算機のデッドライン内で許容される割り込み数を制限する。割り込み数制限は、各仮想計算機のデッドラインの許容値に対して1つの割り込み処理時間を割った数を割り込み数の制限値として管理する。ホストOS上の仮想化プログラムからの割り込み通知に対して割り込み数制限値内であれば、仮想計算機へ割り込みの通知を行う。
【0014】
割り込みの通知の際には、該当仮想計算機の現在の実行優先度にかかわらず最高優先度に変更し、ホストOSがCPUのリソースを該当仮想計算機に割り当てるようにする。該当仮想計算機内では、ゲストOSで割り込み処理が行われ、ゲストOSのスケジューラはVM内部スケジュール制御部で設定している優先度グループのアプリケーションを選択し、CPUリソースを割り当てる。
【0015】
しかし、そのアプリケーションより高い実行優先度のアプリケーションを実行する仮想計算機にCPUリソースが割り当てられなくなるため、割り込み通知による最高優先度設定には、その優先度を維持するQuota時間を設ける。即ち、割り込み処理に割り当てられていた時間がQuota時間となると元の優先度に調整され、常にホストOSは最高優先度の仮想計算機にCPUリソースを割り当てるようにする。
【0016】
以上のように、仮想計算機内のVM内スケジュール制御部による優先度グループでのアプリケーション管理方法と、ホストOS上のVMスケジューラ制御部によって、仮想計算機内で実行している優先度グループに従って、CPUリソースを仮想計算機へ割り当てることで、CPUリソースの制限があるシステムにおいても仮想計算機内のアプリケーションのリアルタイム性保証が可能である。また、ホストOS上のVMスケジューラ制御部に割り込み管理制御部を設けることで、割り込み処理の高負荷の計算機環境においても仮想計算機内のアプリケーションのリアルタイム保証が可能である。
【発明の効果】
【0017】
本発明によれば、VMスケジューラ制御部が仮想計算機内の処理アプリケーションの優先度グループのデッドラインによって仮想計算機のCPUリソース割当を管理するため、CPUリソースが制限される計算機システムにおいてもリアルタイム性保証が可能となる。また、外部割り込みが多く発生する外部ネットワークを利用する仮想計算機の運用においても、仮想計算機内の処理アプリケーションの優先度グループのデッドラインによって割り込み通知・処理の数制限を設けるため、リアルタイム性の保証が可能となる。
【図面の簡単な説明】
【0018】
図1】本発明の仮想計算機のスケジュール制御の全体構成図である。
図2】本発明のVM内スケジュール管理テーブルの構成図である。
図3】本発明のVM管理テーブルの構成図である。
図4】本発明のタイマ−管理テーブルの構成図である
図5】本発明の割り込み管理テーブルの構成図である。
図6A】本発明の通知IF処理の概要図である。
図6B】本発明の通知IF処理の概要図である。
図7】本発明のVM内スケジュールプログラムのフローチャートである。
図8】本発明のVM内スケジュールプログラムの終了処理のフローチャートである。
図9】本発明の仮想化システムの全体フローチャートである。
図10】本発明のVMデッドライン管理プログラムのフローチャートである。
図11】本発明のVMデッドライン管理プログラムの実行VM選択処理のフローチャートである。
図12】本発明のタイマ−イベント管理プログラムのフローチャートである。
図13】本発明の外部イベント処理のフローチャートである。
図14】本発明のQuota管理処理のフローチャートである。
図15】本発明の割り込み管理プログラムのフローチャートである。
【発明を実施するための形態】
【0019】
以下、本発明の一実施の形態を、図面を用いて説明する。なお、本発明が実施の形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明に該当する。
【0020】
(全体構成図)
図1は本発明の実施形態の仮想マシンのスケジュール制御の全体構成図である。仮想マシンのスケジュール制御は、一つの仮想化システム1及び一つ端末2及び外部ネットワーク3から構成される。仮想化システム1は、1台の計算機で構成されている。計算機100は、メモリ101、プロセッサ102、記憶装置103、及び外部通信インタフェース104を備える。メモリ101内には、ホストオペレーティングシステム400(図中、ホストOSと略記)、VMスケジューラ制御プログラム300、及び、一つまたは複数の仮想マシン環境200(図中、VMと略記)が保持される。ホストOS400内には仮想化プログラム401が保持される。
【0021】
VMスケジューラ制御プログラム300は、VM内スケジュール管理テーブル301、VM管理テーブル302、タイマ−管理テーブル303、割り込み管理テーブル304、VM内スケジュール入力プログラム305、VMデッドラン管理プログラム306、タイマ−管理プログラム307、及び割り込み管理プログラム308から構成される。VM200は、アプリケーション211(図中、APと略記)、VM内スケジュール212、ゲストオペレーティングシステム213(図中、ゲストOSと略記)、及び通知インタフェース214(図中、インタフェースをI/Fと略記)から構成される。図1では、計算機 100内にVM200として実線枠で示したVM1(200−A)、VM2(200−B)及び点線枠で示したその他のVM200の例が示されているが、特にVMの台数は限定されるものではない。
【0022】
端末2と計算機100は外部ネットワーク3を介して接続される。計算機100では、外部ネットワーク3は外部通信I/F104に接続される。
【0023】
端末2は外部ネットワーク3を介して仮想化システム1との通信を行うことができる。
【0024】
計算機ノード100の記憶装置103は、ホストOS400、VMスケジューラ制御プログラム300(プログラムと各種テーブル情報)、さらに、VM200を構成するAP211、VM内スケジュール212、ゲストOS213、及び通知I/F214を格納する。プロセッサ102は記憶装置103からホストOS400、VMスケジューラ制御プログラム300、VM200の構成要素をメモリ101に展開して実行し、また、外部通信I/F104からの割込みを処理する。外部通信I/F104は、外部ネットワーク3を通じて端末2とのデータの送受信を行う。
【0025】
仮想化プログラム401は、VM200を作成して管理するためのプログラムであり、外部通信I/F104から割り込みを、通知I/F214を介してVM200に通知する。ホストOS400は、仮想化プログラム401を用いて、VMスケジューラ制御プログラム300やVM200の実行を制御し、外部通信I/F104や記憶装置103へのアクセス制御を行う。
【0026】
VM200は、固有のプログラムやオペレーティングシステムが動作することが可能な、仮想化プログラム401により作成された仮想的な実行環境である。複数のVM200が存在する場合に、異なるVM200内で動作するプログラムやオペレーティングシステムは同じでも良いし、異なっていても良い。また、異なるVM200内で動作するプログラムやオペレーティングシステムが互いに直接影響を与え合うことはない。VM200は、仮想化システム1内で一意の識別子を持ち、例えば、図1中のVM200は「VM1」、あるいは「VM2」の識別子を保有する。
【0027】
AP211は、VM200内で動作アプリケーションプログラムである。AP211として、AP1−1(211−A)、AP1−n(211−B)が示されているが、VM200内で動作するAP211の数を限定するものではない。ゲストOS213は、VM200環境内でVM内スケジュール212を利用してAP211を制御する。通知IF214は、VM内スケジュール212の処理結果をゲストOS213から受け取りVMスケジューラ制御プログラム300へ出力する。
【0028】
VMスケジューラ制御プログラム300は、VM200で稼働するときに、VM内スケジュール212から、VM200内のAP211のスケジュール情報を、通知IF214を介して受け取る。VMスケジューラ制御プログラム300は、AP211のスケジュール情報を、VM内スケジュール入力プログラム305に入力する。VM内スケジュール入力プログラム305は、AP211のスケジュール情報をVM内スケジュール管理テーブル301に格納する。
【0029】
VM200内で動作するVM内スケジュール212は、AP211の動作優先度に応じてグループ化してプロセッサ102での実行時間をスケジュールする。動作優先度によるスケジュール方法は後述する。
【0030】
VM200内で動作するVM内スケジュール212は、動作優先度グループのAP211の動作開始と終了を、通知IF214を介してVMスケジューラ制御プログラム300で動作するVMデッドライン管理プログラム306に通知する。VMデッドライン管理プログラムは、AP211の動作開始と終了を元にVM200の優先度の調整を行う。また、割り込みテーブル304に、動作開始と終了の時間を実行時間のデッドラインとして書き込む。VM200の優先度に応じて仮想化プログラム401はVM200を実行する。
【0031】
VM200内で動作するVM内スケジュール212は、最高優先度グループのAP211のタイマ−登録をタイマ−イベント管理プログラム307に通知IF214を介して通知する。タイマ−イベント管理プログラム307は、タイマー制御のための情報をタイマ−管理テーブル303に登録し、仮想化プログラム401にタイマ−制御を委ねる。仮想化プログラム401は、タイマ−が発火(起動)するとタイマ−イベント管理プログラム307に通知する。タイマ−イベント管理プログラム307は、タイマ−イベントを割り込み管理プログラム308に通知する。割り込み管理プログラム308は、通知IF214を介してVM200にタイマ−イベントを通知する。ゲストOS213が割り込み管理プログラム308からタイマ−イベントを処理し、処理結果を、タイマ−登録を行ったAP211に通知する。
【0032】
割り込み管理プログラム308は、外部IF104からの割り込みを、通知IF214を介してVM200に通知する。割り込みはゲストOS213で処理する。
【0033】
VMスケジューラ制御プログラム300の詳細は、図7と共に後述する。
【0034】
(VM内スケジュール管理テーブル)
図2は本発明の実施形態のVM内スケジュール管理テーブル301の構成を示す図である。VM内スケジュール管理テーブル301は、VM内スケジュール212とVMスケジューラ制御プログラム300内に保持され、計算機100内に作成されているVM200−AやVM200−Bの各VM200のAP211のスケジュール情報を保持する。
【0035】
VM識別子3101には、計算機100内でVM200を一意に識別する情報を格納する。周期3102は、各VM200で動作する全AP211が実行される時間を格納する。図2では、VM200−AのVM1で動作するAP1−1からAP1−nまで実行するのに1秒(1000ms)かかることを意味している。
【0036】
優先度レベル識別子3103は、AP211をゲストOS213がAP211を実行する順位を決める実行優先度別にグループ化し、そのグループを一意に識別する情報を格納する。図2では、L1グループの優先度が最も高く、次にL2、次にL3、次にLnの順に優先度が高い。
【0037】
また、グループに属するAP211は、同グループ内で最初に実行するAP211から最後に実行するAP211がリング状(円環)状となるように構成されている。同一グループに属しているAP211をリング状に構成するため、VM200には、各優先度グループの最初と最後のAP211を事前に登録しておく必要がある。最初と最後のAP211は、ユーザが登録するアプリケーションとは異なり、VM内スケジュール213が登録されたAP211である。
【0038】
レベルリング開始終了識別子3104には、グループに属する最初のAP211が開始することを知らせる「S」と最後に実行するAP211の終了を示す「E」が格納される。AP211がグループの最初と最後のAP211ではない場合はレベルリング開始終了識別子3104に「N」が格納される。
【0039】
タスク識別子3105には、グループ内のAP211を一意に識別する情報を格納する。優先度3106には、ゲストOS213がAP211を実行する順位を決めるAP211の実行優先度情報を格納する。ランタイム3107には、AP211がゲストOS213で実行された時間を「ms」単位で格納する。順序制御タスク識別子3108には、AP211の実行が終了した場合、次に実行するAP211のタスク識別子3105を格納する。順序制御タスク識別子3108にタスク識別子3105「E」以外の情報が格納されている場合は、該当するAP211を実行する。タスク識別子3105に「E」の情報が格納され、レベルリング開始終了識別子3104に「N」が格納されている場合は同グループの他AP211の実行を行う。
【0040】
Quota3109には、優先度レベル識別子3013が「Ln」に属しているAP211の実行に割り当てる時間を格納する。
【0041】
VM内スケジュール212の詳細は図7と共に後述する。
【0042】
(VM管理テーブル)
図3は本発明の実施形態のVM管理テーブル302の構成を示す図である。VM管理テーブル302は、仮想化プログラム401がVM200を実行するために用いる。
【0043】
VM識別子3201には、計算機100内でVM200を一意に識別する情報を格納する。優先度識別子3202には、ゲストOS213が実行しているAP211が属している優先度レベル識別子3102を格納する。優先度識別子3202は、VM内スケジュール212が後述する通知フォーマット500に格納する情報から取得する。レベルリング開始終了識別子3203には、優先度レベル識別子3103の優先度グループの最初AP211の開始「S」または、最後のAP211の終了「E」の情報を格納する。「I」は優先度IDの変更を表わす。
【0044】
デッドライン3204は、優先度レベル識別子3103の優先度グループの最初のAP211の開始から最後のAP211の終了までの時間を「ms」単位で格納する。タスク識別子3205は、通知フォーマット500に格納する情報から取得する。
【0045】
実行状態3206には、仮想化プログラム401が実行するVM200の実行状態を格納する。仮想化プログラム401がVM200を実行する場合、実行状態3206には「R」と格納する。仮想化プログラム401によって実行してないVM200は「0」を格納する。プロセッサ102がマルチコア構成の場合は、仮想化プログラム401によって実行されるVM200は複数個となる。
【0046】
ランタイム3207には、仮想化プログラム401によって実行されたVM200の実行時間が「ms」単位で格納する。Quota3208には、ゲストOS213が実行しているAP211の優先度グループが「Ln」の場合、仮想化プログラム401によって該当VM200を実行する時間が格納される。また、後述するタイマ−イベント管理プログラム307と割り込み管理プログラム308の処理では、優先度グループが「Ln」以外の優先度であってもQuota3208には実行時間を格納する。
【0047】
タイマーイベント管理プログラム307と割り込み管理プログラム308によって格納するQuota3208の情報は、タイマ−イベントと割り込みがVM200のゲストOS213によって処理された後、ゲストOS213によって実行されるAP211の優先度グループが優先度識別子3202と一致しないことがある。特に、「Ln」優先度グループのAP211が実行される場合、開始終了がVMデッドライン管理プログラム306に通知されないため、VM管理テーブル304の優先度識別子3202が「Ln」より高い優先度グループのVM200がある場合、優先度による実行順序が守れなくなる。優先度による実行順序を守るため、タイマ−イベントと割り込み通知にはQuota3208を格納する必要がある。
【0048】
TimeStamp3209にはランタイム3207を格納する。後述するVMデッドライン管理プログラム307がQuota3208の時間が経過したかを判断するためである。元優先度3210には、タイマ−イベントと割り込み処理では優先度識別子3202に優先度「L1」を格納する際に優先度識別子3202の情報を格納する。タイマ−イベントと割り込み処理は、制御システムのリアルタイム性保証のためにVM200が優先的に処理するようにする必要があるため、VM200の実行優先度に関係なく最高優先度「L1」にする必要がある。Quota3208の経過後は、元優先度3210の優先度を優先度識別子3202に格納する。
【0049】
(タイマ−管理テーブル)
図4は本発明の実施形態のタイマ−管理テーブル303の構成を示す図である。タイマ−管理テーブル303は、VM200のゲストOS213が実行するAP211の中で実行優先度グループ「L1」に属しているAP211のタイマ−登録を仮想化プログラム401で行うために必要なテーブルである。「L1」のグループのAP211はリアルタイム性が必要なアプリケーションである。そのため、VM200のゲストOS213ではなく、ホストOS400の仮想化プログラム401で処理を行う。「L1」のグループに属しているAP211のタイマ−登録を、VM内スケジュール212が通知IF214を介してタイマ−イベント管理プログラム307に通知する。
【0050】
VM識別子3301には、計算機100内でVM200を一意に識別する情報を格納する。優先度レベル3302には優先度レベル識別子3103を格納する。タスク識別子3303にはAP211の識別する情報を格納する。インタバール3304にはタイマ−イベントの発火時間を格納する。カウンタ3305にはタイマ−イベントの単位時間(例えば1秒間)当たりの発火頻度を格納する。
【0051】
(割り込み管理テーブル)
図5は本発明の実施形態の割り込み管理テーブル304の構成を示す図である。仮想化システムにおいては前記AP211のリアルタイム性を保証するにはVM200が処理する割り込み数を制限する必要がある。後述する割り込み管理プログラム308によって管理される。
【0052】
VM識別子3401には計算機100内でVM200を一意に識別する情報を格納する。周期3402にはVM内スケジュール管理テーブル301の周期3102の情報を格納する。優先度レベル3403にはタイマー管理テーブル303で管理しているVM識別子3401を格納する。デッドライン3404にはVM管理テーブル302のデッドライン3204を格納する。デッドライン許容値3405には優先度レベル3404に属するAP211のグループの実行デッドライン時間からリアルタイム性を保証できる許容時間を「ms」で格納する。
【0053】
1つ割り込み処理時間3406にはVM200のゲストOS213が外部IF102からの1つの割り込みを処理する時間を「ms」で格納する。割り込み数臨界値3407にはデッドライン許容値3405に対して1つ割り込み処理時間3406を割った数の90%の値を格納する。90%を格納することで、10%の余裕値を設ける。周期デッドライン3408にはVM内スケジュール管理テーブル301の周期3102を格納する。割り込み累積3409には、周期デッドライン3408の時間内で発生した割り込み数を格納する。
【0054】
(通知IF処理概要)
図6Aは本発明の実施形態の通知IF214の処理概要である。図6Bは、通知フォーマット500の構成を示す。優先度グループの最初のAP211の開始と最後のAP211の終了の際に通知フォーマット500にAP211の情報を格納し(503)、VMスケジューラ制御プログラム300に通知する(502)。通知によってホストOS400の仮想化プログラム401がVM200の実行順序を決定する。外部通信IF104からの割り込みとタイマ−イベントは仮想化プログラム401が処理し、VMスケジューラ制御プログラム300に通知する。VMスケジューラ制御プログラム300はVM管理テーブル302の優先度識別子3202に「L1」を設定し、Quota3208を設定し、通知IF214でVM200に通知する(501)。
【0055】
図6Bの通知フォーマット500における、VM識別子5001、周期5002、優先度レベル5003、及び開始時のタスク識別子5004は、図2のVM内スケジュール管理テーブル301のそれぞれの項目に対応して、優先度グループの最初のAP211の開始時に、最初のAP211によって設定され、開始終了5005に「S」が設定される。VMスケジューラ制御プログラム300によって、図5の割り込み管理テーブル304の項目3406及び3407に基づいて、1つ割り込み処理時間5006、及び割り込み数臨界値5007が設定される。最後のAP211の終了時に、終了時のタスク識別子5004が設定され、開始終了5005に「E」が設定される。
【0056】
(VM内スケジュールのフローチャート)
図7は本発明の実施形態のVM内スケジュール212のフローチャートである。ホストOS400及びプロセッサ102は、VMスケジューラ制御プログラム300及びVM200を計算機100のメモリ101内に展開すると、VM200の処理を開始する。VM200が処理を始めるとゲストOS213の処理を始め、VM内スケジュール212の処理を始める。
【0057】
VM内スケジュール212は、記憶装置103からVM内スケジュール管理テーブル301をメモリ101内に読み込む(S1001)。VM内スケジュール212はVM内スケジュール管理テーブル301の優先度レベル識別子3103の情報に格納している「Ln」レベルグループを除く全優先度レベルグループに対して開始用AP211と終了用AP211を登録する(S1002)。
【0058】
VM内スケジュール管理テーブル301の優先度3106の情報から最高優先度のAP211を、タスク識別子3105から選択する(S1003)。優先度3106の情報の数字が大きいほど優先度は高い。優先度が同じであるタスク識別子3105が複数ある場合(S1004のY)、VM内スケジュール管理テーブル301のランタイム3107の情報からランタイムが最小のタスク識別子3105を選択する(S1011)。
【0059】
前記タスク識別子3105の属する優先度レベル識別子3103が「Ln」かどうかを判断する(S1012)。優先度レベルが「Ln」の場合、VM内スケジュール212は、前記タスク識別子3105のAP211を、ゲストOS213が起動するアプリケーションとして登録する(S1021)。
【0060】
優先度レベルが「Ln」ではない場合、通知フォーマット500に、VM識別子5001と周期5002と優先度レベル5003とタスク識別子5004をVM内スケジュール管理テーブル301から取得して該当情報を格納する。開始終了5005には「S」を格納する(S1032)。通知IF214を介して通知フォーマット500をVMスケジューラ制御プログラム300にAP211の開始を送信する(S1033)。VM内スケジュール212は、前記タスク識別子3105のAP211を、ゲストOS213が処理するアプリケーションとして登録する(S1034)。終了処理を行う(S1035)(図8参照)。その後、VM内スケジュール212は、優先度レベル識別子3103のグループに属しているAP211をすべて起動する。
【0061】
(終了処理のフローチャート)
図8は本発明の実施形態の図7に示した終了処理(1035)のフローチャートである。VM内スケジュール212は、VM内スケジュール管理テーブル301の優先度レベル識別子3104が優先度グループ内にあるAP211すべてを、ゲストOS213が起動するアプリケーションとしてVM内スケジュール212に登録する。
【0062】
優先度レベル識別子3104の優先度グループ内の最初のAP211がゲストOS213によって処理された際のランタイムを、図2のVM内スケジュール管理テーブル301のランタイム3107に加算する(S2002)。AP211が、優先度レベル識別子3104の優先度グループ内の最後AP211かどうかを、VM内スケジュール管理テーブル301のレベルリング開始終了識別子3104から判断する(S2003)。開始終了識別子3104の情報が「E」であれば、これを通知フォーマット500に設定して、優先度グループ内AP211のアプリケーションの処理が終了したことを、VMスケジューラ制御プログラム300に通知し、処理を終了する(S2011、S2012)。
【0063】
開始終了識別子3104の情報が「E」ではない場合、VM内スケジュール管理テーブル301の順序制御タスク識別子3108に、順序制御タスク識別子3108から順序に処理するAP211が存在するかどうかを判断する(S2021)。順序制御タスク識別子3108にAP211のタスク識別子3105の情報が格納されていれば、該当AP211を、ゲストOS213が起動するアプリケーションとしてVM内スケジュール212に登録する(S2031)。順序制御タスク識別子3108にAP211のタスク識別子3105の情報が「0」であれば、同グループ内のAP211から、ランタイム3107が最小のタスク識別子3105を選択して、該当AP211を、ゲストOS213が起動するアプリケーションとしてVM内スケジュール212に登録する(S2022、S2023)。その後、次のタスクについて上記の処理を行う。
【0064】
(仮想化システムの全体フローチャート)
図9は本発明の実施形態の仮想化システム1の全体フローチャートである。仮想化システム1の全体処理は、VMスケジューラ制御プログラム300の起動処理及び、VMデッドライン管理プログラム306、タイマ−イベント管理プログラム307、割り込み管理プログラム308より成り立つ。
【0065】
ホストOS400及びプロセッサ102はVMスケジューラ制御プログラム300及びVM200を計算機100のメモリ101内に展開すると、VMスケジューラ制御プログラム300の処理を開始する。VMスケジューラ制御プログラム300の処理は処理が開始されると、記憶装置103からVM内管理テーブル301、VM管理テーブル302、タイマ−イベント管理テーブル303、及び割り込み管理テーブル304をメモリ101内に読込み(S101)、VM200を起動する(S102)。VMスケジューラ制御プログラム300はテーブルの読み込みS102の後、VMデッドライン管理プログラム306(図10参照)、タイマーイベント管理プログラム307(図12参照)、及び割り込み管理プログラム308(図15参照)のそれぞれのプログラムを立ち上げ、通知又は割り込みがあるまで待機する。
【0066】
(VMデッドライン管理プログラムのフローチャート)
図10は本発明の実施形態のVMデッドライン管理プログラム306のフローチャートである。VM200のVM内スケジュール212から通知があれば(S301のY)、通知IF214からの通信フォーマット500の開始終了情報5005を読み取る(S302)。
【0067】
通信フォーマット500の開始終了情報5005が終了の「E」であれば(S303のY)、通信フォーマット500のタスク識別子5004と一致するVM管理テーブル302のタスク識別子3205を検索し、検索したタスク識別子3205に関するレベルリング開始終了識別子3203に「E」を書き込む(S311)。実行状態3206には「0」セットし、前記VM200が実行状態ではないことを示す(S312)。デッドライン3204に、ホスト400の時刻とTimestamp3209との差をデッドラインとして格納する。ラインタイム3207には、デッドライン3204を加算する(S313)。前記VM200の優先度識別子3202のレベルを1つ下げる(S314)。例えば、優先度3202のレベルが「L1」であれば「L2」を格納する。優先度3202のレベルが「Ln」であれば(S315のY)、Timestamp3209にホストOS400の時刻を格納する(S316)。レベルリング開始終了識別子3203には、優先度識別子3202の変更があることを示す「I」を格納する(S317)。ホストOS400がプロセッサ102で処理するVM200を選択する(S318)(図11参照)。
【0068】
通信フォーマット500の開始終了情報5005が終了の「E」でない場合(S303のN)、通信フォーマット500のタスク識別子5004と一致するVM管理テーブル302のタスク識別子3205を検索する(S321)。検索したタスク識別子3205がVM管理テーブル302に登録されてないVM200であれば(S321のY)、VM管理テーブル302に検索したタスク識別子3205を登録する(S331)。検索したタスク識別子3205がVM管理テーブル302に登録されているVM200であれば(S321のN)、レベルリング開始終了識別子3203に開始の「S」を格納し(S322)、Timestamp3209にはホストOS400の時刻を格納する(S323)。
【0069】
VM200のVM内スケジュール212から通知がない場合(S301のN)、VM内スケジュール管理テーブル301のQuota3208の処理を行う(S341)(図14参照)。処理S318、331、323、341の後、次の通知を待つ。
【0070】
(実行VM選択のフローチャート)
図11は本発明の実施形態の実行VM選択(図10のS318)のフローチャートである。ホストOS400がプロセッサ102で処理するVM200を選択する。VM管理テーブル302から、優先度3202が「L1」のVM識別子3201を検索する(S401)。「L1」優先度を格納しているVM識別子3201がない場合(S401のY)、ランタイム3207が最小であるVM識別子3201と一致するVM内スケジュール管理テーブル301内のVM識別子3101の周期3102を読み込む(S402)。ホストOS400の時刻とTimestamp3209との差が周期3102の長さ以上、即ち、周期デッドライン以上であれば(S403のY)、VM識別子3201に対応する優先度識別子3202に最高優先度「L1」を格納する(S404)。優先度識別子3202から最優先度を持つVM識別子3201を検索する(S405)。
【0071】
「L1」優先度を格納しているVM識別子3201がある場合(S401のN)、優先度識別子3202から最優先度を持つVM識別子3201を検索する(S405)。
【0072】
優先度識別子3202が同じVM識別子3201が複数ある場合(S406のY)、VM識別子3201の同列のランタイム3207が最小のVM識別子3201を選択する(S411)。選択したVM識別子3201の同列の実行状態3206に「R」を格納し、実行待ちであることを示す(S421)。ホストOS400がプロセッサ102で処理するVM200として、選択したVM識別子3201をホストOS400に登録する(S422)。
【0073】
(タイマ−イベント管理プログラムのフローチャート)
図12は本発明の実施形態のタイマ−イベント管理プログラム(307)のフローチャートである。タイマ−イベントの通知を待つ(S501)。VM200内のVM内スケジュール212からの通知の場合(S502のY)、通知フォーマット500の優先度レベル5003を読み込み(S503)。優先度レベルが「L1」であれば(S504)、タイマ−管理テーブル303に優先度レベルを設定し、ホストOS400のタイマ−イベントとして登録する(S505)。
【0074】
ホストOS400の仮想化プログラム401からの通知でなければ(S502のN)、タイマ−イベントを受信し(S511)、外部イベント処理を行う(S512)(図13参照)。処理505、512の後、次の通知を待つ。
【0075】
(外部イベント処理のフローチャート)
図13は本発明の実施形態の外部イベント処理(図12のS512、図15のS821)のフローチャートである。外部イベントは、ホストOS400からVMスケジューラ制御プログラム300に通知される。外部イベントには通知先のVM200の情報が格納されている。
【0076】
受信外部イベントからVM管理テーブル302のVM識別子3201と一致するVM200を選択する(S601)。VM識別子3201の列の優先度識別子3202を読み込む(S602)。優先度識別子3202が「Ln」であれば(S603のY)、Quota3208にその値「10」を格納する(S604)。
【0077】
優先度識別子3202が「Ln」でない場合(S603のN)、元優先度識別子3210に優先度識別子3202を格納し、優先度識別子3202に最高優先度「L1」を格納する(S611)。実行状態3206に実行待ちであることを示す「R」を格納し、ホストOS時刻をTimestamp3209に格納する(S612)。通知IF214を介して前記外部イベントをVMスケジューラ制御プログラム300に通知する(S613)。ホストOS400が、プロセッサ102で処理するVM200として、ホストOS400にVM識別子3201を登録する(S614)。
【0078】
(Quota管理処理のフローチャート)
図14は本発明の実施形態のQuota管理処理(図10のS341)のフローチャートである。VM管理テーブル302のQuota3208が「0」以外のVM識別子3201を選択する。VM識別子3201に関するQuota3208を読み込む(S701)。ホストOS400の時刻とTimestamp3209の差がQuota3208を超過した場合(S702のY)、前記VM識別子3201に関する優先度識別子3202に元優先度識別子3210、即ち「0」を格納する(S711)。
【0079】
優先度識別子3202が「Ln」であれば(S712のY)、ランタイム3207にQuota3208を加算する(S713)。優先度識別子3202が「Ln」でない場合(S712のN)、ランタイム3207にQuota3208を加算し、Quota3208に「0」を格納する(S714)。
【0080】
ホストOS400の時刻とTimestamp3209の差がQuota3208の未満の場合(S702のN)、ランタイム3207にホストOS400の時刻とTimestamp3209の差を加算する(S721)。ホストOS400の時刻をTimestamp3209に格納する(S722)。処理S713、714、722の後、処理S341は終了する。
【0081】
(割り込み管理プログラムのフローチャート)
図15は本発明の実施形態の割り込み管理プログラム(308)のフローチャートである。VM内スケジュール管理テーブル301を読み込み、割り込み管理テーブル304の項目3401から3404に情報を設定し、デッドライン許容値3405にはdefault値の「10」を格納し、1つ割り込み処理時間3406には「0.1」を格納する(S801)。割り込み数臨界値3407には、デッドライン許容値3405を1つ割り込み処理時間3406で割った数に「10」を引いた数を格納する(S802)。1つ割り込み処理時間3406割った数に「10」を引くことで、1つ割り込み処理時間3406の処理時間の誤差によって発生する臨界値誤差に対する余裕値が設定される。
【0082】
ホストOS400から割り込みがあるか判断する(S803)。割り込み情報には通常割り込み通知先のVM200の情報が格納されている。割り込み情報に含まれているVM200の情報とVM識別子3401が一致する、割り込み管理テーブル304の行を選択する(S811)。割り込み累積3409に「1」を加算する(S812)。割り込み累積3409が割り込み数臨界値3407未満であるかどうかを判断する(S813)。
【0083】
割り込み累積3409が割り込み数臨界値3407内であれば(S813のY)、割り込みがタイマ−イベントであるかどうかを判断する(S814)。タイマ−イベントであれば(S814のY)、割り込み累積3409を「1」減算し(S815)、タイマ−イベント管理プログラム307に通知する(S816)。割り込みがタイマ−イベントでない場合(S814のN)、外部イベント処理を呼び出す(S821)(図13参照)。
【0084】
割り込み累積3409が割り込み数臨界値3407を超過した場合(S813のN)、ホストOS400の仮想化プログラム401の割り込みペンディング処理(図示せず)を呼び出し、割り込み通知を遅延する(S831)。
【符号の説明】
【0085】
1…仮想化システム、2…端末、3…外部ネットワーク、100…計算機ノード、101…メモリ、102…プロセッサ、103…記憶装置、104…外部通信I/F、200…VM、211…AP、212…VM内スケジュールプログラム、213…ゲストOS、214…通知I/F、300…VMスケジューラ制御プログラム、301…VM内スケジュール管理テーブル、302…VM管理テーブル、303…タイマ−管理テーブル、304…割り込み管理テーブル、306…VMデッドライン管理プログラム、307…タイマ−イベント管理プログラム、308…割り込み管理プログラム、400…ホストOS、401…仮想化プログラム
図1
図2
図3
図4
図5
図6A
図6B
図7
図8
図9
図10
図11
図12
図13
図14
図15