(57)【要約】      （修正有）【課題】サーバ仮想化された環境において、複数の仮想化された仮想制御サーバを複数のホストサーバ上で動作させる際に、仮想制御サーバ同士が与える影響を排除し、制御のリアルタイム性を守る。【解決手段】周期的に複数の仮想制御サーバ５０を実行するハイパーバイザ４０の仮想制御サーバスケジュール方式であって、仮想制御サーバ５０を実行するハイパーバイザ４０は、仮想制御サーバ５０を追加する際に実行するCPU３４と、前記周期で起動するタイミングを、他の仮想制御サーバ５０との実行が重ならないように仮想制御サーバ５０を起動し、各仮想制御サーバ５０が互いに与える影響を排除する。【選択図】図１
2015152987.tif 000002
【特許請求の範囲】
【請求項１】
周期的に複数のプログラムを実行するプログラム制御装置であって、
新たに実行するプログラムの実行周期と実行するプログラムの実行時間を受け取る入力部と、
入力された実行周期と実行時間に基づいて既に実行スケジュールされている他のプログラムの実行時間帯と新たに実行するプログラムの実行時間帯が重複しないよう新たに実行するプログラムを実行するCPUの識別子と、新たに実行するプログラムの周期上の実行タイミングを含む実行スケジュールを生成するスケジュール部と、
前記実行スケジュールに基づいてプログラムの実行を制御する実行制御部とを備えることを特徴とするプログラム制御装置。
【請求項２】
請求項１に記載のプログラム制御装置において、
前記入力部は前記新たに実行するプログラムの付加情報を入力し、
前記スケジュール部は前記付加情報に基づいて、予め定められた基準に基づいて前記新たに実行するプログラムと既に実行スケジュールされている他のプログラムを実行する間隔を決めることを特徴とするプログラム制御装置。
【請求項３】
請求項２に記載のプログラム制御装置において、
前記プログラムは鉄道の運行を制御するプログラムであり、前記プログラムに付与する付加情報は制御対象の鉄道の線区に関する情報であり、
前記スケジュール部は線区単位で異なるCPUで実行されるようスケジュールすることを特徴とするプログラム制御装置。
【請求項４】
請求項１に記載のプログラム制御装置において、
前記スケジュール部は第一のCPUで実行スケジュールされているプログラムを第二の実行可能なCPUで実行されるよう実行スケジュール変更し、第一のCPUでプログラムを連続実行できる時間を長くするようスケジュールすることを特徴とするプログラム制御装置。
【請求項５】
請求項４に記載のプログラム制御装置において、
前記入力部は前記新たに実行するプログラムの付加情報を入力し、
前記スケジュール部は前記付加情報に基づいて、予め定められた基準に基づいて前記新たに実行するプログラムと既に実行スケジュールされている他のプログラムを実行する間隔を決めることを特徴とするプログラム制御装置。
【請求項６】
請求項１に記載のプログラム制御装置において、
前記プログラムは仮想制御サーバであり、仮想制御サーバが実行を制御しているアプリケーションが処理中かどうかを判断し、処理が完了していれば実行制御部へ他の仮想制御サーバを実行できることを通知することを特徴とするプログラム制御装置。
【請求項７】
周期的に複数のプログラムを実行するプログラム制御方法であって、
入力部が新たに実行するプログラムの実行周期と実行するプログラムの実行時間を受け、
スケジュール部が入力された実行周期と実行時間に基づいて既に実行スケジュールされている他のプログラムの実行時間帯と新たに実行するプログラムの実行時間帯が重複しないよう新たに実行するプログラムを実行するCPUの識別子と、新たに実行するプログラムの周期上の実行タイミングを含む実行スケジュールを生成し、
実行制御部が前記実行スケジュールに基づいてプログラムの実行を制御することを特徴とするプログラム制御方法。
【請求項８】
請求項７に記載のプログラム制御方法において、
前記入力部は前記新たに実行するプログラムの付加情報を入力し、
前記スケジュール部は前記付加情報に基づいて、予め定められた基準に基づいて前記新たに実行するプログラムと既に実行スケジュールされている他のプログラムを実行する間隔を決めることを特徴とするプログラム制御方法。
【請求項９】
請求項８に記載のプログラム制御方法において、
前記プログラムは鉄道の運行を制御するプログラムであり、前記プログラムに付与する付加情報は制御対象の鉄道の線区に関する情報であり、
前記スケジュール部は線区単位で異なるCPUで実行されるようスケジュールすることを特徴とするプログラム制御方法。
【請求項１０】
請求項７に記載のプログラム制御方法において、
前記スケジュール部は第一のCPUで実行スケジュールされているプログラムを第二の実行可能なCPUで実行されるよう実行スケジュール変更し、第一のCPUでプログラムを連続実行できる時間を長くするようスケジュールすることを特徴とするプログラム制御方法。
【請求項１１】
請求項１０に記載のプログラム制御方法において、
前記入力部は前記新たに実行するプログラムの付加情報を入力し、
前記スケジュール部は前記付加情報に基づいて、予め定められた基準に基づいて前記新たに実行するプログラムと既に実行スケジュールされている他のプログラムを実行する間隔を決めることを特徴とするプログラム制御方法。
【請求項１２】
請求項７に記載のプログラム制御方法において、
前記プログラムは仮想制御サーバであり、仮想制御サーバが実行を制御しているアプリケーションが処理中かどうかを判断し、処理が完了していれば実行制御部へ他の仮想制御サーバを実行できることを通知することを特徴とするプログラム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化された制御サーバ管理方法、制御サーバ管理装置及びプログラムに係り、特に、各制御仮想サーバの制御周期・制御処理時間に合わせ、計算機資源の割当てを行う仮想制御サーバ管理方法、理装置及びプログラムに関する。
【背景技術】
【０００２】
クラウドコンピューティングなどのサーバ仮想化技術を用いたシステムでは、メモリ、プロセッサなどのサーバリソースの利用効率を向上させ、また、時間や時期で変動する負荷に対しサービスレベルを維持するために、特開2011-258119号公報（特許文献１）に記載の技術がある。この公報には、「複数の仮想計算機で構成されたクラスタを制御する方法であって、クラスタに対する所定時間後の負荷情報の予測値を演算し、クラスタを構成する仮想計算機の現在の計算機資源の割り当て量と、所定時間後の計算機資源の割り当て量とを保持し、クラスタの構成を変更するために利用可能な計算機資源の変更手段を保持し、クラスタを構成する仮想計算機に割り当てた現在の計算機資源の割り当て量と、負荷情報の予測値と、から変更手段の組み合わせを選択し、変更手段の実行予定時刻を設定し、実行予定時刻に到達した変更手段を仮想化部に通知して実行させる。」という技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2011-258119
【発明の概要】
【発明が解決しようとする課題】
【０００４】
制御システムにおいては、制御サーバは制御周期に基づき周期的にリアルタイム処理を行う。特許文献１では、計算機資源の割当、特にプロセッサ資源の割当については、プロセッサ使用率を監視しているが、制御サーバの周期的な動作におけるリアルタイム性を守るという観点での計算機資源割当がされていない。そのため、特許文献１の技術を制御サーバ仮想化装置に適用する場合においては、リアルタイム制御のためのサービスレベルを維持することが難しい。例えば、同じ時間に同じCPUコア上で、複数の仮想制御サーバが動作した場合、複数の仮想制御サーバで同一CPUコアを交互に使うため、動作時間が増大し、リアルタイム性を損なう。
【０００５】
そこで、本発明では、複数のホストサーバ上で、複数の仮想制御サーバを用いて、制御システムを動作させる際に、周期的なリアルタイム制御を維持するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、代表的な本発明の制御装置の一つは、サーバ仮想化環境で制御アプリケーションが稼動する仮想制御サーバへ新たにタスクを追加する際に、ユーザから受け付けたタスクの実行周期と最大実行時間を格納する、仮想制御サーバスケジュールテーブルを設ける。ハイパーバイザは仮想制御サーバスケジュールテーブルを参照し、既に稼動している仮想制御サーバの制御周期および最大処理時間をチェックし、新たに追加する仮想制御サーバの周期動作が同一プロセッサ上で他の仮想サーバと重複しないよう効率的に物理サーバに集約する仮想制御サーバ追加制御機構を備える。定期的に自動で、または、ユーザからの指示により、ホストサーバ内および、複数のホストサーバ間において、仮想制御サーバ再配置機構が、CPU空き時間が長くとれるよう、仮想制御サーバのデフラグメンテーション処理を実施する。
【発明の効果】
【０００７】
本発明によれば、周期的に実行されるプログラムをリアルタイム性を損なわずに実行することを容易にする。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施例に係る複数のホストサーバと複数の仮想制御サーバと、制御対象装置からなる制御装置の構成を示すブロック図。
【図２】実施例における、仮想制御サーバスケジュールテーブルの構成を示す図。
【図３】実施例における、仮想制御サーバスケジュールテーブルの情報に基づく、ホストサーバでの仮想制御サーバスケジュール動作を示す図。
【図４】実施例仮想制御サーバを新たに追加する処理手順の実施の形態を示すフローチャート。
【図５】実施例における、仮想制御サーバスケジュールテーブルに、仮想制御サーバ「D」および「E」を新たに追加した時の仮想制御サーバスケジュールテーブルの構成を示す図。
【図６】実施例における、仮想制御サーバスケジュールテーブルの情報に基づく、ホストサーバでの仮想制御サーバスケジュール動作を示す図。
【図７】実施例における、仮想制御サーバスケジュールテーブルに、仮想制御サーバ「F」および「G」を追加した時の仮想制御サーバスケジュールテーブルの構成を示す図。
【図８】実施例における、仮想制御サーバスケジュールテーブルの情報に基づく、ホストサーバでの仮想制御サーバスケジュール動作を示す図。
【図９】実施例における、仮想制御サーバスケジュールテーブルで、仮想制御サーバデフラグ処理を行った後の仮想制御サーバスケジュールテーブルの構成を示す図。
【図１０】実施例における、仮想制御サーバスケジュールテーブルの情報に基づく、ホストサーバでの仮想制御サーバスケジュール動作を示す図。
【図１１】実施例における仮想制御サーバデフラグ処理手順を示すフローチャート。
【図１２】実施例におけるホストサーバ間の仮想制御サーバデフラグ処理の動作例を示す図。
【図１３】実施例における仮想制御サーバスケジュールテーブルに「付加情報」の項目を付加した仮想制御サーバスケジュールテーブルの構成を示す図。
【図１４】実施例における、仮想制御サーバスケジュールテーブルの情報に基づく、ホストサーバでの仮想制御サーバスケジュール動作を示す図。
【発明を実施するための形態】
【０００９】
以下、実施例を、図面を用いて説明する。
【実施例１】
【００１０】
図１は、実施例における制御装置の構成を示すブロック図である。制御装置１０は複数のホストサーバ２０から構成される。おのおののホストサーバは、物理サーバ３０を備える。物理サーバ３０はプログラムを動作させるメモリ３２、および、CPUコア３４を備える。CPUコア３４は複数備えていても良い。ホストサーバ２０は、物理サーバ３０上で動作するハイパーバイザ４０を備える。
【００１１】
ハイパーバイザ４０は複数の仮想制御サーバ５０をスケジュールするための仮想制御サーバスケジュールテーブル４５を備える。ハイパーバイザ４０は、仮想制御サーバスケジュールテーブル４５に格納されているスケジュール情報を基に仮想制御サーバを動作させるCPUコア３４および動作タイミングを決定する。また、ハイパーバイザ４０は、仮想制御サーバ追加処理を実施する仮想制御サーバ追加制御機構４６、および、仮想制御サーバデフラグメンテーション処理を実施する仮想制御サーバ再配置機構を備える。
【００１２】
仮想制御サーバ５０は、制御アプリケーション５２、および、タスクスケジューラ５４を備える。制御アプリケーション５２は、制御対象装置６０を制御する。タスクスケジューラ５４は、ハイパーバイザ４０と連携し、制御アプリケーション５２の実行をスケジュールする。  制御装置１０は、通信装置７０を介して、複数の制御対象装置６０と接続されている。複数のホストサーバ２０上で動作する、複数の仮想制御サーバが、周期的に動作し、制御対象装置６０を制御している。
【００１３】
図２は、実施例における仮想制御サーバスケジュールテーブル４５の具体例を示したものである。仮想制御サーバスケジュールテーブルは、「仮想制御サーバ名」、「状態」、「制御周期」、「最大実行時間」、「動作CPUコア番号」、「周期起動時間差」の項目より構成される。「状態」は仮想制御サーバの状態を示し、「稼動」または「停止」（一時停止を含む）の値をとりうる。「制御周期」は仮想制御サーバが起動する周期を示している。「最大実行時間」は仮想制御サーバが起動されてからの実行時間の最大時間を示している。
【００１４】
仮想制御サーバは一度起動されると、周期処理実行が終了するまで、処理を継続する。つまり、仮想制御サーバ内のタスクスケジューラが、ハイパーバイザと通信を行い、仮想制御サーバ内の制御アプリケーションが周期処理実行中である場合には、他の仮想制御サーバに実行が移らないよう実行順序を制御する。
【００１５】
仮想制御サーバ内の制御アプリケーションの周期処理が終了すると、タスクスケジューラはハイパーバイザと通信を行い、他の仮想制御サーバに制御を渡してよいことを通知する。「制御周期」および、「最大実行時間」は、仮想制御サーバの制御内容から決まるものであり、ユーザが入力する。
【００１６】
「動作CPUコア番号」は、仮想制御サーバが動作する物理サーバのCPUコアを示す。「周期起動時間差」は、仮想制御サーバ起動する時間差を示す。周期起動時間差は、おのおのの仮想制御サーバの制御周期の最小公倍数の周期における時間差である。「動作CPUコア番号」および、「周期起動時間差」は、ユーザからの、「制御周期」および「最大実行時間」の入力から、ハイパーバイザの仮想制御サーバ追加制御機構が仮想制御サーバ起動時に算出し、決定するものである。算出方法の詳細については、「仮想制御サーバの追加処理」において詳述する（図４）。
【００１７】
図３は、実施例におけるホストサーバ内のCPUコアでの仮想制御サーバの起動・動作のタイミングを示す図である。ここでは、ホストサーバ内に、二つのCPUコア（CPUコア１、CPUコア２）を備えるものとする。
【００１８】
図３は、図２の仮想制御サーバスケジュールテーブルと対応している。つまり、仮想制御サーバ、「A」、「B」、「C」がそれぞれのパラメータで稼動している状況を示している。仮想制御サーバの制御周期の最小公倍数である6秒の周期における、仮想制御サーバの起動および動作時間が見て取れる。最小公倍数を用いる理由は、それぞれの仮想制御サーバが周期的に動作するため、すべての仮想制御サーバは最小公倍数周期で同じ動作パターンを繰り返すためである。
【００１９】
この例では、仮想制御サーバAは、制御周期：１秒、最大実行時間：２００ミリ秒、動作CPUコア番号：１、周期起動時間差：０ミリ秒であるため、最小公倍数周期において、０秒から２００ミリ秒、１秒から１２００ミリ秒、２秒から２２００ミリ秒、３秒から３２００ミリ秒、４秒から４２００ミリ秒、５秒から５２００ミリ秒、の間動作する。仮想制御サーバBおよびCにおいても同様である。
【００２０】
この例では仮想サーバの周期的な動作を例に説明しているが、仮想サーバの無いシステムにおいてはタスク等に置き換えることが可能である。
【００２１】
図４は、前記仮想制御サーバ追加制御機構の、追加処理手順を示すフローチャートである。フローチャートに基づく動作は以下のとおりである。
【００２２】
ステップ１００：ユーザから、追加する仮想制御サーバの仮想制御サーバ名、制御周期、仮想サーバの最大実行時間の入力を受け付け、仮想制御サーバスケジュールテーブルに格納する。
【００２３】
ステップ１０１：仮想制御サーバスケジュールテーブルから、すべての仮想制御サーバの制御周期の最小公倍数を算出する。
【００２４】
ステップ１０２：ホストサーバに備わる全てのCPUコア(C)について、CPUコア番号が小さい順にステップ１０４を繰り返す。
【００２５】
ステップ１０４：CPUコア（C）で、ステップ１０１で計算した制御周期の最小公倍数を周期とする周期動作内に、他の仮想制御サーバと追加対象の仮想制御サーバの動作時間を重ねずに動作させられるかどうかを判定する。判定は、追加対象の仮想制御サーバの周期をT、最大動作時間をΔＴ、制御周期の最小公倍数をL、起動時間差をW、L/T より少ない最大の整数を N とすると、仮想制御サーバ動作する区間群、[W, W + ΔＴ ]、[W + T, W + T + ΔＴ]、[W + 2 ＊  T, W + 2 ＊  T + ΔＴ]、…、[W + N ＊  T, W + N ＊  T + ΔＴ] が、他の仮想制御サーバと重ならないかを判定することで実施する。
【００２６】
ステップ１０５：まだステップ１０４の処理を行っていない物理CPUコアがあるか判定し、ある場合は１０２にもどり、ない場合は１０６を実施する。
【００２７】
ステップ１０６：すべての物理CPUコアについて、ステップ１０４で、他の仮想制御サーバと動作時間を重ねずに動作させることが不可能な場合は、これ以上仮想制御サーバを追加できない旨を示すエラーメッセージを出力する。エラーメッセージには、追加対象の仮想制御サーバ名、ホストサーバ名を含むものとする。
【００２８】
ステップ１０８：ステップ１０４で他の仮想制御サーバと動作時間を重ねずに動作させることが出来る場合は、設定可能な起動時間差 W のうちで最も少ないものを選び、動作CPUコア（C）と合わせて仮想制御サーバスケジュールテーブルに格納する。
【００２９】
ステップ１１０：仮想制御サーバスケジュールテーブルに記録された起動時間差に合わせて仮想制御サーバを起動する。
【００３０】
上記の仮想制御サーバ追加処理により、仮想制御サーバ同士を、動作時間を重ねずに、かつ、おのおのの制御周期と実行時間を確保した上で動作させることができる。仮想制御サーバは他の仮想制御サーバからの干渉を受けないため、リアルタイム性を確保することができる。
【００３１】
以下、仮想制御サーバ追加処理について、具体例を挙げて、本発明の実施例を記載する。
図２には、仮想制御サーバ「A」、「B」、「C」を順に追加していった場合の仮想制御サーバスケジュールテーブルが記載されている。最初に仮想制御サーバ「A」を追加する場合、既に稼動している仮想制御サーバは存在しないため、仮想制御サーバの制御周期の最小公倍数は、仮想制御サーバ「A」の制御周期と同一、つまりこの場合では1秒となる。
【００３２】
周期起動時間差には、他の仮想制御サーバがないため、０秒が設定され、「A」が起動される。「A」に加え、「B」の仮想制御サーバを追加する場合、すべての仮想制御サーバの制御周期の最小公倍数は、２秒となる。２秒周期のうち、区間０秒から０．２秒、１秒から１．２秒の間には仮想制御サーバ「A」が動作しているため、「B」の周期起動時間差には ０．２秒が設定され、「B」が起動される。さらに、「C」の仮想制御サーバを追加する場合、仮想制御サーバの制御周期の最小公倍数は６秒となる。「C」の起動時間差には、「A」、「B」と動作時間が重ならないよう、０．４秒が設定され、起動される。
【００３３】
仮想制御サーバ「A」、「B」、「C」を順に追加していったときの、ホストサーバでの仮想マシンスケジューリングの動作は図３に示したようになっている。
【００３４】
図５は、前記仮想制御サーバ追加処理（図４）において、「A」、「B」、「C」の仮想制御サーバに加え、さらに、「D」および「E」の仮想制御サーバを順に追加した際の仮想制御サーバスケジュールテーブルを示している。仮想制御サーバ「D」を追加する場合、CPUコア１において、すでに稼動している仮想制御サーバと、制御周期の最小公倍数周期で重ならないように動作させるためには、「D」の周期起動時間差は1.2秒でなければならい。
【００３５】
他の値の周期起動時間差では、既に起動している仮想制御サーバと動作が重なる場合が出てくる。続いて「E」を追加する場合、CPUコア１で「E」を動作させようとしても、他の仮想制御サーバと動作を重ねずに動作させることのできる周期起動時間差は存在しない。このため、「E」はCPUコア２において稼動を試みる。CPUコア２においては、「E」が起動する前においては、既に起動している仮想制御サーバは存在しないため、周期起動時間差に０秒を設定し、「E」を起動することが出来る。ここで、CPUコア１および２に間では、制御周期の最小公倍数は共有されているものとする。
【００３６】
図６には、図３での状況に加え、仮想制御サーバ「D」、「E」を追加した時の、ホストサーバでの仮想マシンスケジューリング動作を示している。仮想制御サーバ「D」は、CPUコア１において、６秒周期のうち、１.２秒から１.４秒、３.２秒から３.４秒、５.２秒から５.４秒の間動作する。仮想制御サーバ「E」は、CPUコア２において、０秒から０．２秒、２秒から２．２秒、４秒から４．２秒の間動作する。
【００３７】
図７は、仮想制御サーバが稼動と停止を繰り返したときの仮想制御サーバスケジュールテーブルを表す。  仮想制御サーバ停止処理について説明する。稼動している仮想制御サーバを停止する場合、仮想制御サーバの動作を停止した後、仮想制御サーバスケジュールテーブルの、停止対象の仮想制御サーバの動作CPUコア番号、および、周期起動時間差に「-」を記録する。記号「-」は未定義を表す。
【００３８】
仮想制御サーバデフラグ処理について説明する。仮想制御サーバデフラグ処理は、仮想制御サーバが稼動と停止を繰り返した際、制御周期の最小公倍数周期において、仮想制御サーバの動作区間がフラグメンテーション状態になった場合に、デフラグメンテーションを行う処理である。デフラグメンテーションを行うことで、長く続く動作区間を確保しやすくなるため、新たな仮想制御サーバを追加し空いたCPU時間を有効に使うことが出来る。
【００３９】
図８は、図７の仮想制御サーバスケジュールテーブルに基づく、ホストサーバでの仮想制御サーバのスケジュールの様子を示したものである。図８を見て分かるとおり、空きCPU時間のフラグメンテーションが発生している。このような場合では、仮に、ホストサーバに新たに制御周期３秒、最大実行時間０．７秒の仮想制御サーバを追加しようとしても、連続した空きCPU時間がたりないため、追加できない。
【００４０】
仮想制御サーバデフラグ処理は、このような状況において、CPUコア２で動作する仮想制御サーバを、CPUコア１に集め、CPUコア２での連続した空きCPU時間を確保する処理である。
【００４１】
図９、は、図７および、図８の状況から、仮想制御サーバデフラグ処理を行った後、さらに、制御周期３秒、最大実行時間０．７秒の仮想制御サーバ「H」を追加した時の仮想制御サーバスケジュールテーブルである。
【００４２】
図１０は、図９の仮想制御サーバスケジュールテーブルに基づく、ホストサーバでの仮想制御サーバのスケジュールの様子を示したものである。仮想制御サーバデフラグ処理により、CPUコア２で動作する仮想制御サーバがCPUコア１に移されたことで、CPUコア２に、仮想制御サーバ「H」を割り当てることができる。
【００４３】
図１１は、前記仮想制御サーバ再配置機構４７が、仮想制御サーバデフラグ処理を実施する際のフローチャートである。図１１に基づき、仮想制御サーバデフラグ処理について詳しく説明する。
【００４４】
ステップ２００：仮想制御サーバスケジュールテーブルから、すべての仮想制御サーバの制御周期の最小公倍数を算出する。
【００４５】
ステップ２０２：ホストサーバ内のすべての物理CPUコア（C）について、ステップ２０４、および、ステップ２０６を繰り返す。
【００４６】
ステップ２０４：物理CPUコア（C）上で動作するすべての仮想サーバ（V）について、ステップ２０６を繰り返す。
【００４７】
ステップ２０６：物理CPUコア（C）より小さいCPU番号を持つCPUコアのうち、最もCPU番号が小さいものから順に、そのCPUコア上で、他の仮想制御サーバと動作時間を重ねずに仮想制御サーバ（V）を、周期起動時間差を変更せずに動作させられるかどうかを判定する。動作させることが可能な場合は、ステップ２０８を実行する。動作させることが不可能な場合については、ステップ２０４を繰り返す。
【００４８】
ステップ２０８：仮想制御サーバの物理CPUコア間マイグレーション処理を実施する。物理CPUコア間マイグレーション処理では、一般のマルチコア対応マルチタスクOSが行っている、CPUコア間のタスクマイグレーション機構と同様に、仮想制御サーバをマイグレーションする。
【００４９】
ステップ２１０：仮想制御サーバスケジュールテーブルの、動作CPUコア項目を、マイグレーション元のCPU番号から、マイグレーション先のCPU番号に書き換える。以後、マイグレーションした仮想制御サーバは、マイグレーション先のCPUにて動作するようになる。
【００５０】
ステップ２１１：まだステップ２０６の処理を実施していない仮想制御サーバがあるかを判定し、ある場合はステップ２０４に戻り、ない場合は、ステップ２１２を実施する。
【００５１】
ステップ２１２：まだステップ２０６の処理を実施していない物理CPUコアがあるかどうかを判定し、ある場合はステップ２０２に戻り、ない場合は、処理を終了する。
【００５２】
図９を用いて、仮想マシンマイグレーション処理の具体例について説明する。図９は、図７の状況から、仮想制御サーバ「F」および「G」をCPUコア２からCPUコア１へとマイグレーションを行った後、仮想制御サーバ「H」を追加した状況を表している。図７の状況において、仮想制御サーバマイグレーション処理が開始されると、仮想制御サーバ「A」、「B」、「D」、「E」について、ステップ２０６が実施されるが、他の仮想制御サーバと動作時間を重ねずに動作させることはできない。「F」について、ステップ２０６が実施された場合、物理CPUコア１において、仮想制御サーバ「F」を、周期起動時間差を変更せずに動作させることが可能である。つまり、仮想制御サーバ「F」はCPUコア２において、制御周期の最小公倍数６秒のうち、０．４秒から０．７秒、３．４秒から３．７秒の区間で動作しているが、CPUコア１において、その区間内に動作している仮想制御サーバはないため、仮想制御サーバ「F」はCPUコア２からCPUコア１へとマイグレーション可能であると判定される。判定後はマイグレーションを実施し、以降、仮想制御サーバ「F」はCPUコア１で動作するようになる。同じように、仮想制御サーバ「G」についても、CPUコア２からCPUコア１へとマイグレーションを行い、仮想制御サーバデフラグ処理を終了する。仮想制御サーバでフラグ処理後には、CPUコア２において、長く続くCPU空き時間が増加しているため、新たに制御周期３秒、最大実行時間０．７秒の仮想制御サーバ「H」を追加することができる。
【００５３】
仮想制御サーバマイグレーション処理は、制御装置が動作している際に、ユーザからの指示、または、自動で定期的に実施される場合がある。
【００５４】
以上、同一ホストサーバ内での仮想制御サーバマイグレーション処理について説明したが、マイグレーション処理は、ホストサーバ間でも実施する形態がある。
【００５５】
図１２は、ホストサーバ２、および、ホストサーバ３からホストサーバ１へのホストサーバ間マイグレーション処理による、仮想制御サーバのホストサーバ間マイグレーションの様子を示している。ホストサーバ間マイグレーション処理は、ユーザからの指示によるか、または、定期的に自動で実行される。この例では、ホストサーバ２のCPUコア２で動作する仮想制御サーバ「F」をホストサーバ１のCPUコア２にホストサーバ間マイグレーションしている。また、ホストサーバ３からは、CPUコア２で動作する仮想制御サーバ「G」を、ホストサーバ１のCPUコア２へホストサーバ間マイグレーションしている。ホストサーバ間マイグレーションは、仮想制御サーバを稼動させたままでも、停止状態でも行ってよいものとする。仮想制御サーバを稼動させたままホストサーバ間マイグレーションを行う場合は、仮想化環境で一般に知られた技術である、仮想サーバのライブマイグレーションにより行う。このように、ホストサーバ間でマイグレーション処理を実施することにより、マイグレーション移行先に仮想制御サーバを集約し、移行元のホストサーバにCPU時間の空きをつくることができる。
【実施例２】
【００５６】
本実施例は、実施例１で扱った仮想制御サーバスケジュールテーブル４５に新たに「付加情報」という列を追加したものである。
【００５７】
図１３、１４を用いて、前記仮想制御サーバ追加制御機構４６の仮想制御サーバ追加処理について、実施例１との変更点のみ、以下に示す。
【００５８】
図１３には、実施例１の仮想制御サーバスケジュールテーブルに、「付加情報」として、「制御対象地域」を付加してある。制御対象地域とは、該当する仮想制御サーバが制御する、制御対象が存在する地域区分を表している。付加情報として、制御対象地域を与えることで、同じ地域を制御する仮想制御サーバに一時的に負荷が生じ、設定した最大実行時間を越えて仮想制御サーバが実行され、連鎖的に仮想制御サーバに高負荷がかかる場合に備えることができる。
【００５９】
付加情報は、仮想制御サーバを新たに追加する場合に、ユーザが入力するものである。図１３は、仮想制御サーバ「A」、「B」、「C」、「D」を順に追加していった時の状態となっている。ここで、仮想制御サーバ「A」を追加した後に、仮想制御サーバ「B」を追加する場合、付加情報である制御対象地域が同じであるため、「A」の仮想制御サーバと連続して動作しないように、余裕値として、「A」の最大実行時間を１．５倍し、「A」が０秒から０．６秒、３秒から３．６秒の区間で動作しているものと仮定して、「B」の周期起動時間差を０．６秒とする。
同じ付加情報をもつ「A」と「B」が連続して動作し、処理遅延が波及することを防ぐことができる。結果として、地域（a）を制御する仮想制御サーバに負荷が集中して掛かった場合でも、あらかじめマージンをとり、動作時間を設定してあるため、仮想制御サーバが最大実行時間を越えた場合であっても、同じ地域を制御する仮想制御サーバに影響が出にくいという効果がある。
【００６０】
図１４には、図１３に記載の仮想制御サーバスケジュールテーブルに基づく、ホストサーバでの仮想制御サーバのスケジュールの様子を示したものである。この図から、同じ制御対象地域の仮想制御サーバが連続して動作していないことが理解できる。
【００６１】
前記仮想制御サーバ追加制御機構４６の仮想制御サーバ追加処理に関して、仮想制御サーバに付与する付加情報の利用方法について述べたが、付加情報の利用は、仮想制御サーバデフラグ処理においても同様の考え方が適用される。つまり、デフラグ処理において、同じ付加情報をもつ仮想制御サーバが連続して動作しないようデフラグ処理を行う。また、ホストサーバ間にまたがるデフラグ処理においても同様である。
【００６２】
以上、仮想制御サーバスケジュールテーブルにおける付加情報の利用方法について述べたが、付加情報は制御対象地域のみならず、仮想制御サーバに付加できる属性ならどのようなものでも付加可能である。例えば、仮想制御サーバが扱う制御情報の種類、制御対象の重要度、仮想制御サーバにかかる負荷パターンなどを含む。
【００６３】
例えば、本発明を鉄道の運行システムに適用した場合、付加情報として鉄道の路線や線区を指定することも考えられる。
【００６４】
この場合は路線毎に各々の仮想制御サーバが提供する処理が正しく行われなければ、当該路線の運航を行うことができないため、路線単位や線区単位で独立したCPUコアに割り当てることにより、ある路線や線区の処理を行おうとした仮想制御サーバの処理遅延が他の路線や線区の処理に波及することを防ぐことができる。
【００６５】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD（Solid State Drive）等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【符号の説明】
【００６６】
１０・・・制御装置、
２０・・・ホストサーバ、
３０・・・物理サーバ、
４０・・・ハイパーバイザ、
４５・・・仮想制御サーバスケジュールテーブル、
５０・・・仮想制御サーバ、
６０・・・制御対象装置
【図１】
2015152987.tif 000003
【図２】
2015152987.tif 000004
【図３】
2015152987.tif 000005
【図４】
2015152987.tif 000006
【図５】
2015152987.tif 000007
【図６】
2015152987.tif 000008
【図７】
2015152987.tif 000009
【図８】
2015152987.tif 000010
【図９】
2015152987.tif 000011
【図１０】
2015152987.tif 000012
【図１１】
2015152987.tif 000013
【図１２】
2015152987.tif 000014
【図１３】
2015152987.tif 000015
【図１４】
2015152987.tif 000016