(57)【要約】【課題】サーバの演算時間を計測して確率分布演算を行い、予め設定される制御周期内に、制御プログラムが実行できるようにしたクラウド制御システムの制御プログラムのスケジューリング方法を提供することを目的とする。【解決手段】入出力装置１と、入出力データと制御プログラムとを、複数の演算サーバ３に分配する管理サーバ２と、複数の演算サーバ３と、演算結果を集約して入出力装置に出力する集約サーバ４と、ネットワーク５、６、を備えるクラウド制御システムの制御プログラムのスケジューリング方法であって、管理サーバは、分配されたタスク毎の演算時間データを、夫々の演算サーバについて予め採取して記憶しておき、制御プログラムを分配し、演算時間が予め定める確率での基準時間以上となった場合に、次の制御周期において当該演算サーバに分配する制御プログラムの演算量が減じるように分配する。【選択図】  図１
2015219896.tif 000002
【特許請求の範囲】
【請求項１】
センサからの入力信号を入力し、アクチュエータへ出力する入出力装置と、
前記入出力装置から入力された入出力データと、並列処理が可能な複数のタスクから構成される制御プログラムとを、予め定める制御周期内に実行させるように複数の演算サーバに分配する管理サーバと、
前記管理サーバから分配された前記制御プログラムを演算し、演算結果を集約サーバへ出力する複数の前記演算サーバと、
複数の前記演算サーバからの演算結果を集約して前記入出力装置に出力する集約サーバと、
前記各部間を接続するネットワークと、を備えるクラウド制御システムにおいて、
前記管理サーバは、複数の前記演算サーバが実行する前記タスク毎の演算時間データを、夫々の前記演算サーバに対応して記憶する記憶部と、
夫々の前記演算サーバの前記演算時間データから確率分布を演算して前記制御プログラムを予め設定される分配アルゴリズムに基づいて前記制御プログラムを分配する分配部と、
を備え、
夫々の前記演算サーバは、前記制御プログラムを実行する演算部と、
前記制御プログラムを記憶する記憶部と、
前記タスクの演算時間を含む自サーバの演算状態を自己診断する状態監視部と、
を備え、
前記管理サーバは、前記演算時間データから確率分布データを演算して、夫々の前記演算サーバが、分配された前記制御プログラムの実行を、予め設定された演算完了確率で、制御周期内に完了できるように分配することを特徴とする複数の演算サーバを備えるクラウド制御システム。
【請求項２】
分配される前記制御プログラムには、予め定めるテストプログラムを備え、
前記管理サーバは、分配する前記制御プログラムの前記タスク間に前記テストプログラムの挿入を夫々の前記演算サーバに指示し、
前記演算サーバは、分配された前記制御プログラムを実行して、前記状態監視部で前記テストプログラムにより当該制御プログラムの演算時間を計測して、前記管理サーバに送信し、
前記管理サーバは、前記演算時間データから確率分布を演算して、前記演算サーバに分配された前記制御プログラムの前記演算時間が予め定める演算完了確率での基準時間以上となった場合には、次の前記制御周期において当該演算サーバに分配する前記制御プログラムの演算量が減じるように分配することを特徴とする請求項１に記載の複数の演算サーバを備えるクラウド制御システム。
【請求項３】
前記演算サーバは、予め定める演算量のテストプログラムを実行して当該テストプログラムの演算時間データを予め前記記憶部に記憶しておき、
前記管理サーバは、前記演算サーバに対して、前記制御プログラムにテストプログラムの挿入を指示し、
前記演算サーバは、前記テストプログラムを実行して当該テストプログラムの演算時間を計測し、予め定める確率での前記演算時間データから確率分布の演算完了時間と当該計測値と比較して、前記演算サーバの演算状態の異常を検出するようにしたことを特徴とする請求項１に記載の複数の演算サーバを備えるクラウド制御システム。
【請求項４】
前記管理サーバは、演算時間のデッドラインを予め前記演算サーバに通知し、
前記演算サーバは、分配された前記制御プログラムの演算中の時刻が分配サーバから送信されたデッドライン超えた時点で実行中の前記制御プログラムを中断するようにしたことを特徴とする請求項１に記載の複数の演算サーバを備えるクラウド制御システム。
【請求項５】
センサからの入力信号を入力し、アクチュエータへ出力する入出力装置と、前記入出力装置から入力された入出力データと、並列処理が可能な複数のタスクから構成される制御プログラムとを、予め定める制御周期内に実行させるように複数の演算サーバに分配する管理サーバと、前記管理サーバから分配された前記制御プログラムを演算し、演算結果を集約サーバへ出力する複数の前記演算サーバと、複数の前記演算サーバからの演算結果を集約して前記入出力装置に出力する集約サーバと、前記各部間を接続するネットワークと、を備えるクラウド制御システムであって、
前記演算サーバを多重化し、前記集約サーバは、前記演算サーバの出力を逐次比較照合して出力する、または、一方の系を稼働系、他方の系を待機系として構成し当該稼働系から出力するように構成されたクラウド制御システムにおいて、
前記管理サーバは、同じタスク構成の前記制御プログラムを異なる順序で前記演算サーバに分配するようにしたことを特徴とする複数の演算サーバを備えるクラウド制御システム。
【請求項６】
前記演算サーバは、自身の演算時間を計測して、予め設定される前記制御周期のデットラインを超える異常状態を検出した場合、前記集約サーバに通知し、前記集約サーバは、異常状態となった前記演算サーバの出力を他の前記演算サーバの出力に切り替える、または、前回の前記制御周期での出力を継続して出力するようにした請求項５に記載の複数の演算サーバを備えるクラウド制御システム。
【請求項７】
センサからの入力信号を入力し、アクチュエータへ出力する入出力装置と、
前記入出力装置から入力された入出力データと、並列処理が可能な複数のタスクから構成される制御プログラムとを、予め定める制御周期内に実行させるように複数の演算サーバに分配する管理サーバと、前記管理サーバから分配された前記制御プログラムを演算し、演算結果を集約サーバへ出力する複数の前記演算サーバと、複数の前記演算サーバからの演算結果を集約して前記入出力装置に出力する集約サーバと、前記各部間を接続するネットワークと、を備える複数の演算サーバを備えるクラウド制御システムの制御プログラムのスケジューリング方法であって、
前記管理サーバは、複数の前記演算サーバが実行する前記タスク毎の演算時間データを、夫々の前記演算サーバについて予め採取して記憶しておき、
夫々の前記演算サーバの前記演算時間データから確率分布を演算して前記制御プログラムを予め設定される分配アルゴリズムに基づいて前記制御プログラムを分配し、
夫々に前記演算サーバは、前記制御プログラムを実行して、分配された複数の前記タスクの演算時間を計測し、
前記管理サーバは、前記演算時間データから確率分布を演算して、前記演算サーバに分配された前記制御プログラムの前記演算時間が予め定める演算完了確率での基準時間以上となった場合に、次の前記制御周期において当該演算サーバに分配する前記制御プログラムの演算量が減じるように分配することを特徴とする複数の演算サーバを備えるクラウド制御システムの制御プログラムのスケジューリング方法。
【請求項８】
センサからの入力信号を入力し、アクチュエータへ出力する入出力装置と、前記入出力装置から入力された入出力データと、並列処理が可能な複数のタスクから構成される制御プログラムとを、予め定める制御周期内に実行させるように複数の演算サーバに分配する管理サーバと、前記管理サーバから分配された前記制御プログラムを演算し、演算結果を集約サーバへ出力する複数の前記演算サーバと、複数の前記演算サーバからの演算結果を集約して前記入出力装置に出力する集約サーバと、前記各部間を接続するネットワークと、を備える複数の演算サーバを備えるクラウド制御システムの演算サーバの構成方法であって、
前記管理サーバは、複数の前記演算サーバが実行する前記タスク毎の演算時間データを予め記憶しておき、
分配する前記制御プログラムに対する前記演算サーバの演算時間の演算時間確率が、前記クラウド制御システムから要求される演算完了確率よりも大きい場合には前記演算サーバは、冗長構成とせず、
分配する前記制御プログラムに対する演算完了確率が要求される演算完了確率よりも小さい場合には、前記制御プログラムの時間冗長構成を選択し、
分配する前記制御プログラムを前記時間冗長構成としても演算完了確率が要求される演算時間確率よりも小さいくなる場合には、空間冗長構成を選択する様にしたことを特徴とするクラウド制御システムの演算サーバの冗長化構成方法。
【請求項９】
前記タスクは、予め設定される演算量のテストプログラムであることを特徴とする請求項８にクラウド制御システムの演算サーバの冗長化構成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、複数の演算サーバを備えるクラウド制御システム、その制御プログラムのスケジューリング方法、及び演算サーバの冗長化方法に関する。
【背景技術】
【０００２】
災害復旧を容易にするため、遠隔からネットワークを介して現場機器を制御する遠隔制御技術に注目が集まっている。遠隔に配置された複数のクラウドサーバから制御を行うシステムを、ここではクラウド制御システムと呼ぶ。
【０００３】
クラウド制御システムでは、制御プログラムを物理的に離れた複数のサーバに保持するので、被災時において、全ての制御プログラムが失われる恐れがないため、災害からの復旧の際、制御プログラムの再構築およびサーバの交換にかかる時間を短縮することができる。
【０００４】
また、クラウド制御システムにおいては、複数の制御プログラムを複数の演算サーバで並列実行させて予め設定される制御周期内に確実に処理を完了させる必要があるため、夫々の演算サーバの状態を正確に把握して制御プログラムをスケジューリングするスケジューラ、または、スケジューリングシステムが求められている。
【０００５】
ところで、このような分散処理システムにおいて、システムの信頼性を向上させるために整列マルチキャスト方式により稼働率を向上させる多重化拡大方法がある（例えば、特許文献１参照。）。
【０００６】
また、制御周期内に複数のプログラムを実行することが可能か否かを、実行時間の分布パターンを判定してスケジューリングするリアルタイムスケジューリング判定方法がある（例えば、特許文献２参照。）。
【０００７】
また、無線アクセスポイントの信号処理時間が、時間規定された要求処理時間以下で処理できるか否かを、無線通信方式に対応した信号処理時間の累積確率分布に基づいて定める指標時間を予め求めておき、指標時間の総和が要求処理時間以下である場合には割り当て可能と判断する信号処理割当判断装置がある（例えば、特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第３８３１１５４号公報
【特許文献２】特許第４０７４２９６号公報
【特許文献３】特開２０１３−１６２３９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述した特許文献１においては、演算サーバを多重化することにより制御周期内に制御プログラムを実行できる確率を向上させることができるが、実行中のプロセスから新規のプロセスへ整列マルチキャストを通してコピーして多重実行するため複数のサーバが必要となる問題がある。
【００１０】
また、上述した特許文献２においては、制御周期内に複数のプログラムを実行することが可能か否かを、実行時間の分布パターンを判定してスケジューリングすることはできるが、スケジューリング時以降にサーバの負荷が変動した場合には、制御周期内に制御プログラムを完了できる確率を満たせなくなる問題がある。
【００１１】
また、特許文献３においては、同じ信号処理リソースを想定して、通信方式毎の指標時間を確率分布に基づいて算出するものであるが、信号処理リソースが異なる場合には、対応することができない問題がある。
【００１２】
本発明は上述した課題を解決するためになされたものであり、制御周間内に制御プログラムを完了させる確率を満たすことができる複数の演算サーバを備えるクラウド制御システム、その制御プログラムのスケジューリング方法、及び演算サーバの冗長化方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本実施形態の請求項１に係る複数の演算サーバを備えるクラウド制御システムは、センサからの入力信号を入力し、アクチュエータへ出力する入出力装置と、前記入出力装置から入力された入出力データと、並列処理が可能な複数のタスクから構成される制御プログラムとを、予め定める制御周期内に実行させるように複数の演算サーバに分配する管理サーバと、前記管理サーバから分配された前記制御プログラムを演算し、演算結果を集約サーバへ出力する複数の前記演算サーバと、複数の前記演算サーバからの演算結果を集約して前記入出力装置に出力する集約サーバと、前記各部間を接続するネットワークと、を備えるクラウド制御システムにおいて、前記管理サーバは、複数の前記演算サーバが実行する前記タスク毎の演算時間データを、夫々の前記演算サーバに対応して記憶する記憶部と、夫々の前記演算サーバの前記演算時間データから確率分布を演算して前記制御プログラムを予め設定される分配アルゴリズムに基づいて前記制御プログラムを分配する分配部と、を備え、夫々の前記演算サーバは、前記制御プログラムを実行する演算部と、前記制御プログラムを記憶する記憶部と、前記タスクの演算時間を含む自サーバの演算状態を自己診断する状態監視部と、を備え、前記管理サーバは、前記演算時間データから確率分布を演算して、夫々の前記演算サーバが、分配された前記制御プログラムの実行を、予め設定された確率で、制御時間内に完了できるように分配することを特徴とする。
【００１４】
上記目的を達成するために、本実施形態の請求項５に係る複数の演算サーバを備えるクラウド制御システムは、センサからの入力信号を入力し、アクチュエータへ出力する入出力装置と、前記入出力装置から入力された入出力データと、並列処理が可能な複数のタスクから構成される制御プログラムとを、予め定める制御周期内に実行させるように複数の演算サーバに分配する管理サーバと、前記管理サーバから分配された前記制御プログラムを演算し、演算結果を集約サーバへ出力する複数の前記演算サーバと、複数の前記演算サーバからの演算結果を集約して前記入出力装置に出力する集約サーバと、前記各部間を接続するネットワークと、を備えるクラウド制御システムであって、前記演算サーバを多重化し、前記集約サーバは、前記演算サーバの出力を逐次比較照合して出力する、または、一方の系を稼働系、他方の系を待機系として構成し当該稼働系から出力するように構成されたクラウド制御システムにおいて、前記管理サーバは、同じタスク構成の前記制御プログラムを異なる順序で前記演算サーバに分配するようにしたことを特徴とする。
【００１５】
上記目的を達成するために、本実施形態の請求項７に係る複数の演算サーバを備えるクラウド制御システムの制御プログラムのスケジューリング方法は、センサからの入力信号を入力し、アクチュエータへ出力する入出力装置と、前記入出力装置から入力された入出力データと、並列処理が可能な複数のタスクから構成される制御プログラムとを、予め定める制御周期内に完了させるように複数の演算サーバに分配する管理サーバと、前記分配サーバから分配された前記制御プログラムを演算し、演算結果を集約サーバへ出力する複数の前記演算サーバと、複数の前記演算サーバからの演算結果を集約して前記入出力装置に出力する集約サーバと、前記各部間を接続するネットワークと、を備える複数の演算サーバを備えるクラウド制御システムの制御プログラムのスケジューリング方法であって、前記管理サーバは、複数の前記演算サーバが実行する前記タスク毎の演算時間データを、夫々の前記演算サーバについて予め採取して記憶しておき、夫々の前記演算サーバの前記演算時間データから確率分布を演算して前記制御プログラムを予め設定される分配アルゴリズムに基づいて前記制御プログラムを分配し、夫々に前記演算サーバは、前記制御プログラムを実行して、分配された複数の前記タスクの演算時間を計測し、前記管理サーバは、前記演算時間データから確率分布を演算して、前記演算サーバに分配された前記制御プログラムの前記演算時間が予め定める確率での基準時間以上となった場合に、次の前記制御周期において当該演算サーバに分配する前記制御プログラムの演算量が減じるように分配することを特徴とする。
【００１６】
上記目的を達成するために、本実施形態の請求項８に係る複数の演算サーバを備えるクラウド制御システムの演算サーバの冗長化構成方法は、センサからの入力信号を入力し、アクチュエータへ出力する入出力装置と、前記入出力装置から入力された入出力データと、並列処理が可能な複数のタスクから構成される制御プログラムとを、予め定める制御周期内に実行させるように複数の演算サーバに分配する管理サーバと、前記管理サーバから分配された前記制御プログラムを演算し、演算結果を集約サーバへ出力する複数の前記演算サーバと、複数の前記演算サーバからの演算結果を集約して前記入出力装置に出力する集約サーバと、前記各部間を接続するネットワークと、を備える複数の演算サーバを備えるクラウド制御システムの演算サーバの構成方法であって、前記管理サーバは、複数の前記演算サーバが実行する前記タスク毎の演算時間データを予め記憶しておき、分配する前記制御プログラムに対する前記演算サーバの演算時間の演算完了確率が、前記クラウド制御システムから要求される演算完了確率よりも大きい場合には前記演算サーバは、冗長構成とせず、分配する前記制御プログラムに対する演算完了確率が要求される演算完了確率よりも小さい場合には、前記制御プログラムの時間冗長構成を選択し、分配する前記制御プログラムを前記時間冗長構成としても演算完了確率が要求される演算完了確率よりも小さいくなる場合には、空間冗長構成を選択する様にしたことを特徴とする。
【図面の簡単な説明】
【００１７】
【図１】第１の実施の形態のクラウド制御システムのブロック構成図。
【図２】クラウド制御システムの動作原理を説明するタイムチャート図。
【図３】発明の動作原理を説明する確率密度関数とその分布関数。
【図４】確率分布を求めるフローチャート図。
【図５】演算時間の確率密度関数とその分布関数の対応を説明する図。
【図６】プログラムのスケジューリング時の演算完了確率の設定テーブル。
【図７】クラウド制御システムの処理動作を説明するフローチャート図。
【図８】テストプログラムの挿入方法を説明する図。
【図９】従来の多重化制御システムの制御プログラムの冗長化構成の例。
【図１０】第２の実施形態の多重化構成におけるデッドライン検出時の動作説明図。
【図１１】制御プログラムを異なる演算順序で分配した場合の動作説明図。
【発明を実施するための形態】
【００１８】
以下、本実施形態の複数の演算サーバを備えるクラウド制御システムについて、図面を参照して説明する。
【００１９】
（第１の実施形態）
図１は第１の実施形態のブロック構成図である。図１において、複数の演算サーバを備えるクラウド制御システム１００は、センサからの入力信号を入力し、アクチュエータへ出力する複数の入出力部１１〜１３を備える入出力装置１と、入出力装置１から入力された入出力データと、並列処理が可能な複数のタスクから構成される制御プログラムとを、予め定める制御周間内に実行させるように複数の演算サーバ３に分配する管理サーバ２と、管理サーバ２で分配された制御プログラムを演算し、演算結果を集約サーバ４へ出力する複数の演算サーバ３と、複数の演算サーバ３１〜演算サーバ３３（以後、演算サーバ３１〜演算サーバ３３を総称する場合には、演算サーバ３と記す）からの演算結果を集約して入出力装置１に出力する集約サーバ４と、各部間を接続するネットワーク５、及びネットワーク６と、を備える。
【００２０】
次に、各部の構成について説明する。管理サーバ２は、夫々の演算サーバ３が実行する、分配されたタスク毎の演算時間データを、夫々の演算サーバ３に対応して記憶する記憶部２３と、夫々の演算サーバ３の演算時間データから確率分布を演算して制御プログラムを予め設定される分配アルゴリズムに基づいて制御プログラムを分配する分配部２１と、各部とネットワーク５及びネットワーク６と通信する通信部２２とを備える。
【００２１】
夫々の演算サーバ３は、制御プログラムを実行する演算部３０ａと、制御プログラムを記憶する記憶部３０ｂと、タスクの演算時間を含む自サーバの演算状態を自己診断する状態監視部３０ｃと、各部とネットワーク５を介して通信する通信部３０ｄと、を備える。
【００２２】
更に、詳細構成について説明すれば、演算サーバ３は、同じプラットフォームで構成されていることが望ましいが、限定はされない。
【００２３】
また、管理サーバ２、集約サーバ４、及び入出力装置１を接続するネットワーク６は、専用のネットワーク、ＩＰネットワーク等のパブリックなネットワークのいずれで構成されても良い。また、ネットワーク６は、ネットワーク５と同一のネットワークとして構成しても良い。
【００２４】
次に、このように構成された複数の演算サーバ３を備えるクラウド制御システム１００の動作原理について、図２及び図３を参照して説明する。
【００２５】
クラウド制御システム１００は、このシステムが制御する制御対象の制御安定化条件で設定される制御周期Ｔｃに基づいて制御される。図２に示すように、夫々の演算サーバ３は、予め管理サーバ２から指示された制御プログラム３０ｂを記憶部３０から抽出して、演算を実行している。
【００２６】
制御周期Ｔｃ内での各演算サーバ３の応答時間Ｔは、管理サーバ２と演算サーバ３との通信時間Ｔ１、演算サーバ３自身の演算時間Ｔ２、及び演算サーバ３と集約サーバ４との通信時間Ｔ３、とすると、管理サーバ２から入出力装置１からの入力データを演算サーバ３に送信し、演算サーバ３で演算した演算結果を集約サーバ４で受信するまで時間の総和となり、以下のようになる。
【００２７】
Ｔ＝Ｔ１＋Ｔ２＋Ｔ３・・・・・（１）
ここで、演算時間Ｔ２は、演算サーバ３の演算量を演算サーバの演算速度で除した値で、演算量だけでなく、演算サーバ３のタスクの実行時間は個々の演算サーバ３の状態により異なる値となる。
【００２８】
この演算時間Ｔ２、通信時間Ｔ１及び通信時間Ｔ３は、同じタスクを実行して一定回数以上の応答時間Ｔを計測して、その分布が正規分布である場合、一般に、図３に示すような時間（ｔ）を確率変数とする下記（数１）に示す確率密度関数ｆ（ｔ）（数１）と、下記（数２）に示す確率分布関数Ｆ（ｔ）（数２）とで示される。
【数１】
2015219896.tif 000003
【数２】
2015219896.tif 000004
【００２９】
したがって、この確率密度関数ｆ（ｔ）の平均値μと標準偏差σとから、制御周期Ｔｃ以内となる、クラウド制御システムの信頼性から要求される応答時間Ｔｍに対応する確率Ｐｍが求まる。
【００３０】
そこで、詳細を後述する図４に示すような手順で、タスク毎の演算時間データを予め計測して、タスク毎の応答時間Ｔを求めておき、分配するタスク毎の応答時間Ｔｍの総和で示される総応答時間ΣＴｍが制御周期Ｔｃ以内で、予め定める確率Ｐｍで収まるように夫々の演算サーバ３に複数のタスクを分配する。
【００３１】
即ち、本発明はタスク毎の演算時間の確率分布に基づいて、制御周期Ｔｃをデッドラインとして、この値を超えないように演算サーバ３に分配することを動作原理とする。
【００３２】
ここで、管理サーバ２の詳細な機能について説明する。管理サーバ２は、総応答時間ΣＴｍが制御周期Ｔｃ以内となる確率Ｐｍが与えられた場合、例えば、各演算サーバ３の演算時間Ｔ２がＴ２ｍ以内となる確率Ｐ２ｍと、通信時間Ｔ１、Ｔ３が、夫々Ｔ１ｍ、Ｔ３ｍとなる確率Ｐ１ｍ、Ｐ３ｍを割り当てる。
【００３３】
割り当ては、制御周期Ｔｃは、システムからの要求に基づいて定めるので、例えば、Ｐｍ＝Ｐ１ｍ＝Ｐ２ｍ＝Ｐ３ｍとすると、
各演算サーバ３の演算時間Ｔ２ｍは、
Ｔ２ｍ＝Ｔｍ−Ｔ１ｍ−Ｔ３ｍ・・・・・（４）
で割り当てられる。
【００３４】
したがって、管理サーバ２は、夫々の演算サーバ３には、式(４)を満足するように、予め設定される確率Ｐｍ以上で、且つ、制御周期Ｔｃのデッドライン時間内で演算が完了するように複数のタスクを分配する。
【００３５】
また、分配した結果、制御周期Ｔｃのデッドライン時間以内となる確率がＰ２ｍよりも小さくなる場合には演算処理時間を短縮する冗長化が必要となる。この演算サーバ３の冗長化については後述の実施形態で説明するする。
【００３６】
ここで、再び図４を参照して、演算時間の確率分布の演算手順について説明する。上述したように、(数１)に示す応答時間Ｔの内、最も大きな比率を構成する各演算サーバ３の応答時間Ｔ２は、同じプラットフォームで構成しても負荷状態により異なる値となることが予想される。
【００３７】
そこで、先ず、制御プログラムを構成するタスク毎の演算時間Ｔ２を、夫々の演算サーバ３毎に予め予想される負荷状態で計測しておく（ｓ１）。
【００３８】
そして、予め定める負荷状態の変動範囲を予想できる回数分計測後、その演算時間の確率分布を判定(検定とも言う)する（ｓ２）。
【００３９】
そして、その結果、その演算時間の確率分布が正規分布、あるいは、その他の演算時間の確率分布であるのかを判定する（ｓ３）。
【００４０】
正規分布と判定された場合には、その確率分布パラメータである平均値、標準偏差（または分散値）を求める（ｓ４）。
【００４１】
他の演算時間の確率分布と判定された場合には、その演算時間の確率分布に応じたパラメータを求めておく（ｓ５）。
【００４２】
そして、求めた演算時間の確率分布と、その演算時間の確率分布とから要求される確率設定値Ｐ２ｍでの演算時間Ｔ２ｍを演算により求める（ｓ６）。
【００４３】
この演算は、例えば、正規分布の場合には、正規分布表、または、誤差関数Erf（Error function）を使用して求めることができる。
【００４４】
次に、このようにして求めた演算サーバ３毎の演算時間の確率分布から、分配するタスクの総応答時間ΣＴ２ｍを求める動作について、その一例を図５及び図６を参照して説明する。
【００４５】
図５は、例えば、複数の分配された３つのタスクＰｒｇ１〜Ｐｒｇ３の確率密度関数ｆ（ｔ）とその確率分布関数Ｆ（ｔ）との対応を図示したものである。
【００４６】
また、タスクＰｒｇ１、タスクＰｒｇ２、及びタスクＰｒｇ３の夫々の確率分布が、正規分布で、夫々、Ｎ（Ｔμ１、Ｔσ１）、Ｎ（Ｔμ２、Ｔσ２）、Ｎ（Ｔμ３、Ｔσ３）、の場合、要求される制御周期Ｔｃ内に収まる演算時間の確率がＰ２ｍとなる夫々の時間Ｔ２ｍ１、Ｔ２ｍ２、Ｔ２ｍ３は、正規分布表、または、誤差関数Ｅｒｆを用いて求められる。
【００４７】
そして、求めた結果は図６に示すような予め設定される確率での演算時間をタスク毎にテーブル化しておくことも可能である。
【００４８】
これらの総演算時間ΣＴ２ｍは、予め割り当てられる通信時間分を除いて、制御周期Ｔｃ以下であるように設定（分配）される。
【００４９】
制御周期Ｔｃ≧ΣＴ２ｍ＝Ｔ２ｍ１＋Ｔ２ｍ２＋Ｔ２ｍ３・・・・・（５）
即ち、演算サーバ３毎に分配されるタスクに対して要求される設定確率Ｐ２ｍで、制御周期Ｔｃ以内でタスクが分配される。
【００５０】
以上のように構成された図１に示す複数の演算サーバ３を備えるクラウド制御システムの全体動作について、図７を参照して説明する。
【００５１】
先ず、管理サーバ２は、最初の制御周期では、制御プログラムのタスクが、予め設定される分配アルゴリズムに基づいて、演算時間データから確率分布を演算して複数のタスクのスケジューリングを行う(ｓ１１)。
【００５２】
そして、スケジューリングしたタスクの演算完了時間が、予め設定される演算完了確率で、且つ、予め設定される制御周期Ｔｃ内で完了するか否かを判定する（ｓ１２）。
【００５３】
制御周期Ｔｃ内で完了すると判定されると、管理サーバ２は各演算サーバ３にスケジューリングされたタスク、または、そのタスク構成を通知する（ｓ１４）。
【００５４】
そして、各演算サーバ３は、通知された制御プログラムを記憶部３０ｂから抽出して実行し（ｓ１５）、演算した結果を集約サーバ４に送信する（ｓ１５）とともに、実行したタスクの演算時間を計測し、演算時間が制御周期Ｔｃ以内に完了したか否かを判定して、結果を管理サーバ２に送信する（ｓ１６）。
【００５５】
各演算サーバ３は、演算時間のみを管理サーバ２に送信して、判定は管理サーバ２で行うようにしても良い。
【００５６】
そして、制御周期時間Ｔｃ以内に完了した場合には、次のサイクルの制御周期での制御プログラムの実行に移る（ｓ１７）。
【００５７】
判定の結果、制御周期Ｔｃ内で完了しないと判定した場合には、管理サーバ２は、当該演算サーバ３の演算量を減じるようにタスクのスケジューリングを行い（ｓ１１）、制御周期Ｔｃ内で、且つ予め設定された演算完了確率以上であることを再判定し（ｓ１２）、各演算サーバ３に更新された複数のタスクを分配し（ｓ１４）、各演算サーバ３はこのプログラムを実行する。
【００５８】
管理サーバ２は、再判定の結果、制御周期Ｔｃ内で完了しないと判定し、さらに、当初設定したアルゴリズムのスケジューリングでのタスク分配が不可能である、例えば、演算サーバ３の故障があると判定された場合（ｓ１２）には、予め設定される異常処理手順に基づいて、当該演算サーバに対して、例えば、前回の制御周期での演算出力の再出力を演算サーバに指示する。
【００５９】
そして、このような異常状態の場合には、破線矢印で示すように、予備の演算サーバ３を追加選定する演算サーバ台数設定変更を選択する（ｓ１３）。
【００６０】
そして、再び、追加された演算サーバ３の台数に基づいてプログラムのスケジューリングを行う（ｓ１１）。
【００６１】
以上説明したように、本実施形態の複数の演算サーバを備えるクラウド制御システムに依れば、管理サーバ２は、演算時間の確率分布と通信時間の確率分布とを演算して、夫々の演算サーバ３が、分配された制御プログラムを、予め設定された確率で、制御時間内に実行できるように分配することができる複数の演算サーバを備えるクラウド制御システムを提供することができる。
【００６２】
更に、管理サーバ２は、分配される制御プログラムのタスク間にタイムスタンプを生成するテストプログラム、例えば、図２に示すように、演算サーバ３１の制御プログラム１と制御プログラム２との間に開始時刻を検出するテストプログラムＴ１と、その完了時刻を検出するテストプログラムＴ２、の挿入を各演算サーバ３に指示し、各演算サーバ３は、分配された制御プログラムを実行して、状態監視部３０ｃで当該制御プログラムの開始時刻と完了時刻とを検出して演算時間求め、管理サーバ２に送信する。
【００６３】
そして、管理サーバ２は、演算時間データから確率分布を演算して、各演算サーバ３の分配された制御プログラムの演算時間が、予め定める基準時間以上となった場合に、以降の制御周期において当該演算サーバ３の演算量が減じるようにすることも可能である。
【００６４】
また、演算サーバ３は、予め定める演算量のテストプログラムを実行して当該テストプログラムの演算時間データを予め記憶部３０ｂに記憶しておき、管理サーバ２は、演算サーバ３に対して、制御プログラムにこのテストプログラムの挿入を指示する。
【００６５】
そして、演算サーバ３は、テストプログラムを実行して当該テストプログラムの演算時間を状態監視部３０ｃで計測し、予め定める演算完了確率での演算完了時間と当該計測値とを比較して、演算サーバ３の演算状態の異常を高精度で検出するように構成することも可能である。
【００６６】
このようなテストプログラムによる自己診断により演算サーバの異常を早く正確に判断することができる。
【００６７】
（第２の実施形態）
第１の実施形態では、制御周期Ｔｃ内に制御プログラムを完了させる確率を低下させることがない、複数の演算サーバに対して制御プログラムを時間冗長でスケジューリングする制御システムの構成について説明した。
【００６８】
第２の実施形態では、第１の実施形態で説明した演算時間の確率分布を利用した複数の演算サーバを備えるクラウド制御システムの冗長化構成方法について説明する。
【００６９】
一般に、冗長方法には、図９（ａ）に示すような制御プログラム１、制御プログラム２毎の夫々を独立して並列演算する演算サーバ３１〜演算サーバ３４を備えて冗長する空間冗長と、図９（ｂ）に示すように制御プログラム１と制御プログラム２とを直列に接続して、２台の演算サーバ並列運転する時間冗長とがある。
【００７０】
そして、各演算サーバ３１〜３４の演算時間Ｔ２の演算完了確率Ｐ２は、制御周期Ｔｃ以下のデッドラインＴ２ｍとなる演算完了確率をＰ２ｍとすると、制御システムから要求される演算完了確率Ｐ２がＰ２ｍよりも大きい構成の場合には冗長する必要がないが、演算完了確率Ｐ２がＰ２ｍよりも小さい場合には冗長する必要がある。
【００７１】
例えば、制御プログラム１と制御プログラム２の演算量は同量とし、複数の演算サーバ３１〜３４の演算速度も同じと仮定すると、演算完了確率は以下のようになる。
【００７２】
１つの制御プログラムの演算完了確率をＦ（Ｔ２ｍ）とすると、冗長なしでの確率Ｐ２０は、以下のようになる。
【００７３】
Ｐ２０＝Ｆ（Ｔ２ｍ）＾２
また、空間冗長での確率Ｐ２ｓは、以下のようになる。
【００７４】
Ｐ２ｓ＝（１−（１−Ｆ（Ｔ２ｍ））＾２）＾２・・・・・（６）
また、時間冗長での確率Ｐ２ｔは、プログラムの実行順の組み合わせにより、
同順序冗長確率＝１−（１−Ｆ（Ｔ２ｍ×２））＾２・・・・・（７）
異順序冗長確率＝１−（１−Ｆ（Ｔ２ｍ×２））＾２
×（１−（１−（１−Ｆ（Ｔ２ｍ））×（１−Ｆ（Ｔ２ｍ×２）））＾２）
・・・・・（８）
となる。
【００７５】
但し、このような演算サーバの多重化構成による冗長化は、システムコストとの兼ね合いで、優先順位を設定して決定する必要がある。
【００７６】
したがって、冗長化システム構成の優先順位は、下記のようになる。
【００７７】
冗長なし＞時間冗長＞空間冗長・・・・・（９）
この優先順位の冗長なしで構成する条件は、演算完了確率Ｐ２が、Ｐ２＞Ｐ２ｍを満足する制御システムの場合である。
【００７８】
また、時間冗長で構成する場合の条件は、その演算完了確率Ｐ２ｔが、
Ｐ２ｔ＞Ｐ２ｍ・・・・・（１０）
となることが条件である。
【００７９】
更に空間冗長で構成する場合の条件は、その演算完了確率Ｐ２ｓが、
Ｐ２ｓ＞Ｐ２ｍ・・・・・（１１）
となることが条件である。
【００８０】
以上の選択条件から、要求される演算完了確率Ｐ２ｍを満たさない場合にはし、さらに、演算サーバを増やす多重化構成を選択することになる。
【００８１】
また、図１０（ａ）及び図１０（ｂ）に示すように、多重化された構成においては、管理サーバ２から各演算サーバ３に対して、制御周期Ｔｃを管理するデッドラインＴ２ｍを予め送信しておく。そして、各演算サーバ３では、状態監視部３０ｃで監視する演算時間がこのデッドラインＴ２ｍを越えた時点で制御プログラムの実行を中断するように構成しておく。
【００８２】
このような演算状態の異常監視機能を備え、デッドラインＴ２ｍで制御プログラムの実行を中断すると、演算サーバ３での制御プログラムの演算時間Ｔ２は、（１−Ｐ２）以下の確率でデッドラインＴ２ｍを超えること、さらには制御周期Ｔｃを超えることによって、次の制御周期での演算サーバの演算処理に対する影響を除くことができる。
【００８３】
この場合、演算サーバ３２ではデッドラインＴ２ｍ超えた時点で制御プログラムを中断し、集約サーバ４で他の演算サーバ３１の出力を採用する構成とすることで、異常に対する対応ができる効果がある。
【００８４】
また、例えば、演算サーバ３１及び３２に対して、時間冗長で分配する際、図１１（ａ）に示す分配を図１１（ｂ）同一制御プログラムの演算順序を演算サーバ３１と演算サーバ３２とで異なるように分配する。
【００８５】
このように分配し、演算周期ＴｃのデットラインＴ２ｍを超える異常状態となった場合、予め集約サーバ４での集約ロジックをいずれかの出力を採用する構成としておくことで、異常状態を回避することができる。
【００８６】
例えば、集約サーバ４は、演算サーバ３の出力を比較照合して出力する、または、一方の系を稼働系、他方の系を待機系として構成し当該稼働系から出力するように構成された二重化クラウド制御システムにおいては、集約サーバ４は、一方の系の異常が検出された場合、他方の系の出力を使用するように構成することができる。
【００８７】
即ち、演算サーバ３を多重化構成とする場合には、集約サーバ４での集約ロジックは、演算サーバ３の冗長化構成と状態監視部３０ｃの異常判定方法により適宜変更することが可能である。
【００８８】
以上説明したように、本実施形態によれば、演算サーバの演算時間の確率分布とネットワークでの通信時間の確率分布とを予め求めて、求めた確率分布を用いて複数の演算サーバにプログラムを分配する冗長方法を選択する様にしたので、制御周期内に制御プログラムを要求された演算完了確率で実行することができる冗長化された最適な演算サーバ数のクラウド制御システムを構成することができる。
【００８９】
（第３の実施形態）
第２の実施形態では、第１の実施形態で説明した演算時間の確率分布を利用した複数の演算サーバを備えるクラウド制御システムの最適な冗長構成の決定方法について説明したが、第３の実施形態ではクラウド制御システムのシステム構築時の演算サーバ数の決定方法について説明する。
【００９０】
演算サーバ数ｎは、下記のような方法で決定する。
【００９１】
ｎ＞総演算量／（平均演算速度×演算時間デッドライン）・・・・・（１２）
ここで、演算量は、各演算サーバにスケジューリングされる制御プログラムを実行し、その演算時間をそのサーバの演算速度で割って計算して求める。
【００９２】
また、総演算量は、制御プログラムの制御周期Ｔｃで実行する最大の演算量とする。
【００９３】
また、平均演算速度ｖは、各演算サーバの演算速度の調和平均で、下記（式１３）で求める。
【００９４】
ｖ＝１／（（１／ｖ１）＋１／ｖ２））・・・・・（１３）
また、演算速度は、予め定める演算量のテストプログラムによって計測することもできる。この場合には、演算時間のデッドラインは、制御周期から予め設定される。
【００９５】
また、各演算サーバの演算時間の確率分布から、予備サーバ数を選択してもよい。
【００９６】
このような演算サーバ数の決定方法によれば、推定した演算時間の確率分布、テストプログラムの演算結果を用いて予備を含む演算サーバ数を選択することができるので、制御周期内に制御プログラムを実行できる確率を満たすクラウド制御システムの構築ができる。
【００９７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９８】
１  入出力装置
２  管理サーバ
３  演算サーバ
４  集約サーバ
５、６  ネットワーク
１１、１２、１３  入出力部
２１  分配部
２２  通信部
２３  記憶部
３１、３２、３３  演算サーバ
３０ａ  演算部
３０ｂ  記憶部
３０ｃ  状態監視部
３０ｄ  通信部
４１  集約部
４２  通信部
１００  複数の演算サーバを備えるクラウド制御システム
【図１】
2015219896.tif 000005
【図２】
2015219896.tif 000006
【図３】
2015219896.tif 000007
【図４】
2015219896.tif 000008
【図５】
2015219896.tif 000009
【図６】
2015219896.tif 000010
【図７】
2015219896.tif 000011
【図８】
2015219896.tif 000012
【図９】
2015219896.tif 000013
【図１０】
2015219896.tif 000014
【図１１】
2015219896.tif 000015