以下に、図面を参照して、本発明にかかる情報処理システム、情報処理方法、および情報処理プログラムの実施の形態を詳細に説明する。
(実施の形態にかかる情報処理方法の一実施例)
まず、図1~図4を用いて、実施の形態にかかる情報処理方法の一実施例について説明する。図1は、情報処理システム100の構成例を示す説明図である。図1において、情報処理システム100は、制御装置101と、複数の保存装置102と、複数の演算装置103とを含む。
情報処理システム100において、制御装置101と保存装置102と演算装置103とは、有線または無線のネットワーク110を介して接続される。ネットワーク110は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
制御装置101は、複数の保存装置102と、複数の演算装置103とを制御するコンピュータである。制御装置101は、例えば、複数の保存装置102と、複数の演算装置103とを制御し、情報処理システム100の構成変更を実施可能である。制御装置101は、例えば、サーバやPC(Personal Computer)などである。
保存装置102は、データを蓄積するコンピュータである。保存装置102は、例えば、1以上のデータ源からデータを収集して蓄積し、いずれかの演算装置103に出力する。保存装置102は、例えば、データストアとして動作する。保存装置102は、例えば、サーバやPCなどである。
データ源は、例えば、PC、タブレット端末、スマートフォン、ウェアラブル端末、家電などのIoT機器、車載装置、または、センサ装置などである。
演算装置103は、データを処理するコンピュータである。演算装置103は、例えば、所定のデータ処理を実施するタスクが実装され、入力されたデータに基づいて、タスクにより所定のデータ処理を実施し、タスクの処理結果のデータを出力する。タスクは、例えば、処理部である。出力先は、例えば、他の演算装置103である。演算装置103は、例えば、サーバやPCなどである。
ここでは、制御装置101と保存装置102とが異なる装置である場合について説明したが、これに限らない。例えば、制御装置101が、保存装置102としても動作する場合があってもよい。
また、ここでは、制御装置101と演算装置103とが異なる装置である場合について説明したが、これに限らない。例えば、制御装置101が、演算装置103としても動作する場合があってもよい。
また、ここでは、保存装置102と演算装置103とが異なる装置である場合について説明したが、これに限らない。例えば、保存装置102が、演算装置103としても動作する場合があってもよい。
また、ここでは、保存装置102とデータ源とが異なる装置である場合について説明したが、これに限らない。例えば、保存装置102が、データ源としても動作する場合があってもよい。
また、情報処理システム100において、制御装置101が、演算装置103間の接続関係、および、保存装置102と演算装置103との接続関係などを変更可能である場合があってもよい。また、情報処理システム100において、制御装置101が、演算装置103の処理内容を変更可能であり、演算装置103間で処理内容を移動可能である場合があってもよい。
情報処理システム100は、例えば、ストリーム処理形式でデータを処理していく。情報処理システム100は、具体的には、ストリーム処理基盤200を実現する。次に、図2を用いて、ストリーム処理基盤200の動作内容の一例について説明する。
図2は、ストリーム処理基盤200の動作内容の一例を示す説明図である。図2に示すように、ストリーム処理基盤200は、データストア201から出力される、データストア201が1以上のデータ源から収集したデータを、複数のタスク202で順次処理していくことにより、特定のサービスを実現する。
データストア201は、例えば、保存装置102により実現され、タスク202は、例えば、演算装置103により実行される。また、複数のデータストア201が、例えば、1つの保存装置102により実現されてもよい。また、複数のタスク202が、例えば、1つの演算装置103により実現されてもよい。
具体的には、データ源が、車載装置であり、データストア201が、自動車の速度データを収集する場合、ストリーム処理基盤200は、自動車の危険運転を検知し、交通事故を抑制するためのサービスを実現可能である。
また、具体的には、データ源が、ウェアラブル端末やIoT機器であり、データストア201が、人間の生体データや生活データを収集する場合、ストリーム処理基盤200は、人間の体調を管理するためのサービスを実現可能である。
また、具体的には、データ群が、河川に設置されたセンサ装置であり、データストア201が、河川の水位データを収集する場合、ストリーム処理基盤200は、自然災害を検知し、災害に対処するためのサービスを実現可能である。
ストリーム処理基盤200は、センサデータのような、データ源で繰り返し発生し続けるデータを、複数のタスク202で順次処理していくことが望まれる場合がある。このため、データについての処理遅延を抑制しつつ、ストリーム処理基盤200の耐障害性を確保することが望まれ、ストリーム処理基盤200を、障害から復旧可能にすることが求められる。障害は、例えば、保存装置102や演算装置103の故障、停電、または、通信切断などである。
ここで、ストリーム処理基盤200の耐障害性を確保する手法の一つとして、分散チェックポイント方式と呼ばれる手法が存在する。分散チェックポイント方式は、それぞれのタスク202の内部状態を、定期的にチェックポイントとしてバックアップしておき、障害が発生した場合、チェックポイントに基づいて、所定のデータ処理をやり直し可能にする方式である。分散チェックポイント方式は、内部状態のバックアップを、タスク202ごとに分散して実施することにより、データについての処理遅延を抑制しつつ、ストリーム処理基盤200の耐障害性を確保することを目的とする。
制御装置101は、分散チェックポイント方式を実現するために、バリアマーカと呼ばれる特殊なメッセージを、ストリーム処理基盤200に投入する。バリアマーカは、例えば、バリアマーカに固有の識別子を含む。バリアマーカは、例えば、ストリーム処理基盤200に投入された回数を含んでもよい。
そして、タスク202は、バリアマーカが辿り着いた際の内部状態をバックアップする。タスク202は、バリアマーカが辿り着く経路が複数存在する場合、すべての経路からバリアマーカが入力されてから、内部状態をバックアップすることになる。経路は、論理的な経路であってもよいし、物理的な経路であってもよい。次に、図3A~図3Eを用いて、分散チェックポイント方式の処理内容の一例について説明する。
図3A~図3Eは、分散チェックポイント方式の処理内容の一例を示す説明図である。図3A~図3Dの例では、タスクAとタスクBとタスクCとが存在し、演算装置103によって実現される。タスクAの処理結果のデータは、タスクCへと出力され、タスクBの処理結果のデータは、タスクCへと出力される。タスクBは、タスクAより処理所要時間が短い傾向があるとする。次に、図3Aの説明に移行する。
図3Aにおいて、制御装置101は、複数のデータストア201のそれぞれのデータストア201からバリアマーカを出力させる。図中では、バリアマーカは、例えば、ハッチをかけた○印で示される。また、図中で、矢印上に表記されたバリアマーカやデータは、例えば、通信路上に存在するか、または、矢印の先にあるタスクのバッファに存在し、処理待ち状態であることを示す。図3Aの例では、バリアマーカは、タスクAとタスクBとに辿り着く前であるとする。次に、図3Bの説明に移行する。
図3Bにおいて、タスクBは、タスクAより処理所要時間が短い傾向があり、バリアマーカ以前のデータに基づき、所定のデータ処理を実施し終えており、バリアマーカが辿り着いたため、内部状態をチェックポイントにバックアップする。タスクBは、内部状態をチェックポイントにバックアップした後、バリアマーカを、タスクCへと出力する。次に、図3Cの説明に移行する。
図3Cにおいて、タスクBは、バリアマーカ以降のデータに基づき、所定のデータ処理を実施し、処理結果のデータを、タスクCへと出力する。これに対し、タスクCは、タスクBから、バリアマーカが辿り着いたものの、タスクAから、バリアマーカが辿り着く前であるため、タスクAから、バリアマーカが辿り着くまで待機することになる。
ここで、仮に、タスクCが、タスクBから受信したデータに基づき、所定のデータ処理を実施してしまうと、復旧時の整合性が担保されなくなる。このため、タスクCは、タスクBから受信したデータに基づいて所定のデータ処理を実施することなく、タスクBから受信したデータを保留することになる。次に、図3Dの説明に移行する。
図3Dにおいて、タスクAは、バリアマーカ以前のデータに基づき、所定のデータ処理を実施し終えており、バリアマーカが辿り着いたため、内部状態をチェックポイントにバックアップする。タスクAは、内部状態をチェックポイントにバックアップした後、バリアマーカを、タスクCへと出力する。
タスクCは、タスクAと、タスクBとから、バリアマーカが辿り着いたため、内部状態をチェックポイントにバックアップする。タスクCは、内部状態をチェックポイントにバックアップした後、バリアマーカを、タスクCの下流へと出力する。
ここで、チェックポイントは、バリアマーカ以前のデータに基づき、所定のデータ処理を実施済み、かつ、バリアマーカ以降のデータに基づき、所定のデータ処理を未実施である場合の、タスクAとタスクBとタスクCとの内部状態を有する。このため、ストリーム処理基盤200に障害が発生しても、チェックポイントを参照し、バリアマーカ以降のデータに基づき、所定のデータ処理を実施し直すようにすれば、ストリーム処理基盤200を、障害から復旧可能になる。
この際、従来技術では、タスクCにおける、タスクAからのバリアマーカと、タスクBからのバリアマーカとの待ち時間の増大化を抑制することが難しい。そして、タスクCは、タスクAとタスクBとの両方からバリアマーカが辿り着かなければ、バリアマーカ以降のデータについてデータ処理を実施しないため、待ち時間の増大化に伴い、バリアマーカ以降のデータについての処理遅延の増大化も招いてしまう。
次に、図3Eの説明に移行し、バリアマーカ以降のデータについての処理遅延の増大化を招いてしまう状況の具体例について説明する。
図3Eの例では、閾値算出タスク301と、センサデータ収集タスク302と、異常値検出タスク303と、正常対応タスク304と、異常対応タスク305とが存在する。
閾値算出タスク301は、例えば、統計データを受信し、統計データに基づき、閾値を算出する第1のデータ処理を実施し、処理結果となる閾値データを、異常値検出タスク303へと出力するタスク202である。
センサデータ収集タスク302は、例えば、異なる種類のセンサデータを収集し、センサデータを纏める第2のデータ処理を実施し、処理結果となる纏めデータを、異常値検出タスク303へと出力するタスク202である。
異常値検出タスク303は、例えば、閾値データと纏めデータとに基づき、センサ値の異常値を検出する第3のデータ処理を実施し、検出結果のデータを、正常対応タスク304または異常対応タスク305へと出力するタスク202である。
正常対応タスク304は、例えば、検出結果のデータに基づき、正常対応に対応する第4のデータ処理を実施するタスク202である。異常対応タスク305は、例えば、検出結果のデータに基づき、異常対応に対応する第5のデータ処理を実施するタスク202である。
図3Eにおいて、センサデータ収集タスク302の処理所要時間は、閾値算出タスク301の処理所要時間よりも短くなる傾向があるとする。このため、異常値検出タスク303は、センサデータ収集タスク302からのバリアマーカを、閾値算出タスク301からのバリアマーカよりも先に受信しやすくなる。
この場合、異常値検出タスク303は、閾値算出タスク301からのバリアマーカを受信するまで待機することになり、センサデータ収集タスク302からの、バリアマーカ以降の纏めデータについて、第3のデータ処理を実施せずに一時保留することになる。従って、閾値算出タスク301の処理所要時間が、センサデータ収集タスク302の処理所要時間よりも長くなるほど、異常値検出タスク303における、センサデータ収集タスク302からの、バリアマーカ以降の纏めデータについての処理遅延も長くなる。
そこで、本実施の形態では、ストリーム処理基盤200の接続構成を、タスク202の処理結果のデータを、データストア201に再投入する再投入構成とすることにより、メッセージの待ち時間の増大化を抑制するための情報処理方法について説明する。
図4は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。図4の例では、第1のデータストア401と、第2のデータストア402と、第3のデータストア403とを含む複数のデータストア201が存在する。また、第1の処理部411と、第2の処理部412と、第3の処理部413と、第4の処理部421と、第5の処理部422とを含む、タスク202を実現するための複数の処理部が存在する。
処理部は、タスク202、または、タスク202を実現する機能部である。第1の処理部411は、動作が比較的遅いタスク202を実現する。第2の処理部412は、動作が比較的遅いタスク202と、動作が比較的速いタスク202との下流のタスク202を実現する。第3の処理部413は、動作が比較的速いタスク202を実現する。
それぞれの処理部は、バリアマーカを受信することがある。それぞれの処理部は、バリアマーカを、自処理部へとデータが入力される経路の数分だけ受信したことに応じて、自処理部の内部状態のバックアップを実施すると共に、自処理部からデータが出力されるそれぞれの経路にバリアマーカを出力する。バリアマーカは、例えば、内部状態のバックアップを指示するメッセージである。
ここで、ストリーム処理基盤200の当初の接続構成は、第1の処理部411から第2の処理部412までの経路上に第3のデータストア403を含まない第1の構成となる直接構成400であるとする。
直接構成400において、第1のデータストア401は、第1の処理部411へと接続される経路にデータを出力する。図4の例では、第1のデータストア401が、第1の処理部411に直接データを出力するが、第1のデータストア401と第1の処理部411との間に他の処理部が含まれ、第1のデータストア401が、他の処理部にデータを出力する場合があってもよい。他の処理部は、例えば、複数含まれていてもよい。直接構成400において、第1の処理部411は、第2の処理部412に直接データを出力する。
直接構成400において、第2のデータストア402は、第2の処理部412へと接続される経路にデータを出力する。図1の例では、第2のデータストア402と第2の処理部412との間に、他の処理部である第3の処理部413が含まれているが、第2のデータストア402が、第2の処理部412に直接データを出力する場合があってもよい。他の処理部は、例えば、複数含まれていてもよい。
制御装置101は、所定のタイミングで、バリアマーカを複数のデータストア201のそれぞれのデータストア201から出力させる。図4の例では、第3の処理部413は、第2の処理部412に直接データを出力する。
また、制御装置101は、第2の処理部412が、バリアマーカを、第2の処理部412へとデータが入力される経路の数分だけ受信するまでの待ち時間に関する情報を取得する。制御装置101は、取得した情報に基づいて、待ち時間が第1の閾値以上であるか否かを判定する。制御装置は、第1の閾値以上であると判定した場合、ストリーム処理基盤200の接続構成を、直接構成400から、第1の処理部411から第2の処理部412までの経路上に第3のデータストア403を含む第2の構成となる再投入構成430へと切り替える。
再投入構成430において、第1のデータストア401は、直接構成400と同様に、第1の処理部411へと接続される経路にデータを出力する。再投入構成430において、第1の処理部411は、直接構成400とは異なり、第2の処理部412に直接データを出力せず、再投入送信タスクを実現する第4の処理部421へと接続される経路にデータを出力する。第4の処理部421は、第3のデータストア403に直接データを出力する。第4の処理部421は、バリアマーカについては、第3のデータストア403に出力しないようにする。
第3のデータストア403は、受信したデータを蓄積すると共に、受信したデータを、再投入受信タスクを実現する第5の処理部422への経路に出力する。第5の処理部422は、第2の処理部412へと接続される経路にデータを出力する。再投入構成430において、第2のデータストア402は、直接構成400と同様に、第2の処理部412へと接続される経路にデータを出力する。第3の処理部413は、第2の処理部412に直接データを出力する。再投入構成430においても、制御装置101は、所定のタイミングで、バリアマーカを複数のデータストア201のそれぞれのデータストア201から出力させる。
これにより、制御装置101は、第2の処理部412におけるバリアマーカの待ち時間の低減化を図ることができる。制御装置101は、例えば、第2の処理部412が、第3の処理部413と第5の処理部422とからバリアマーカを受信し、バリアマーカ以降のデータについて、データ処理を実施可能にすることができる。このため、制御装置101は、第1の処理部411の処理所要時間が長くなり、第1の処理部411が、バリアマーカを出力していない状況でも、第2の処理部412における、バリアマーカ以降のデータについての処理遅延を抑制することができる。
ここでは、制御装置101が、ストリーム処理基盤200の接続構成を、直接構成400から、再投入構成430に切り替える場合について説明したが、これに限らない。例えば、制御装置101が、第2の処理部412におけるバリアマーカの待ち時間が比較的短くなると予測される状況であれば、ストリーム処理基盤200の接続構成を、再投入構成430から、直接構成400に切り替える場合があってもよい。この際、制御装置101は、ストリーム処理基盤200における、データの処理順序の整合性を確保することが望まれる。
また、例えば、ストリーム処理基盤200の接続構成が、再投入構成430で固定されている場合があってもよい。具体的には、予め、第2の処理部412におけるバリアマーカの待ち時間が比較的長くなると予測される状況であれば、ストリーム処理基盤200の接続構成が、再投入構成430で固定されていてもよい。
ここでは、ストリーム処理基盤200の当初の接続構成が、直接構成400である場合について説明したが、これに限らない。ストリーム処理基盤200の当初の接続構成が、再投入構成430である場合があってもよい。
ここでは、第3のデータストア403と、第4の処理部421と、第5の処理部422とが、予め用意されている場合について説明したが、これに限らない。例えば、制御装置101が、ストリーム処理基盤200の接続構成を、直接構成400から再投入構成430へと切り替える際に、第3のデータストア403と、第4の処理部421と、第5の処理部422とを生成する場合があってもよい。具体的には、制御装置101は、保存装置102に、第3のデータストア403としての動作を開始させることにより、第3のデータストア403を生成する。
ここでは、直接構成400において、第1の処理部411が、第2の処理部412に直接データを出力する場合について説明したが、これに限らない。例えば、第1の処理部411と第2の処理部412との経路上に、特定のデータ処理を実施する他の処理部が含まれる場合があってもよい。この場合、再投入構成430において、第3のデータストア403から、第2の処理部412までの経路上に、上記特定のデータ処理を実施する他の処理部が含まれるようにしてもよい。
(制御装置101のハードウェア構成例)
次に、図5を用いて、制御装置101のハードウェア構成例について説明する。
図5は、制御装置101のハードウェア構成例を示すブロック図である。図5において、制御装置101は、CPU(Central Processing Unit)501と、メモリ502と、ネットワークI/F(Interface)503と、記録媒体I/F504と、記録媒体505とを有する。また、各構成部は、バス500によってそれぞれ接続される。
ここで、CPU501は、制御装置101の全体の制御を司る。メモリ502は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU501のワークエリアとして使用される。メモリ502に記憶されるプログラムは、CPU501にロードされることで、コーディングされている処理をCPU501に実行させる。
ネットワークI/F503は、通信回線を通じてネットワーク110に接続され、ネットワーク110を介して他のコンピュータに接続される。そして、ネットワークI/F503は、ネットワーク110と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F503は、例えば、モデムやLANアダプタなどである。
記録媒体I/F504は、CPU501の制御に従って記録媒体505に対するデータのリード/ライトを制御する。記録媒体I/F504は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体505は、記録媒体I/F504の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体505は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体505は、制御装置101から着脱可能であってもよい。
制御装置101は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、制御装置101は、記録媒体I/F504や記録媒体505を複数有していてもよい。また、制御装置101は、記録媒体I/F504や記録媒体505を有していなくてもよい。
(データメッセージ600の一例)
次に、図6を用いて、データメッセージ600の一例について説明する。データメッセージ600は、例えば、保存装置102や演算装置103によって出力される。データメッセージ600は、例えば、センサデータである。
図6は、データメッセージ600の一例を示す説明図である。図6に示すように、データメッセージ600は、タイムスタンプと、位置と、気温とのフィールドを有する。データメッセージ600は、時点ごとに各フィールドに情報を設定することにより形成される。
タイムスタンプのフィールドには、時点を示すタイムスタンプが設定される。位置のフィールドには、タイムスタンプが示す時点において、センサ装置が計測した位置が設定される。気温のフィールドには、タイムスタンプが示す時点において、センサ装置が計測した気温が設定される。
(構成変更メッセージ700の一例)
次に、図7を用いて、構成変更メッセージ700の一例について説明する。構成変更メッセージ700は、制御装置101によって出力され、保存装置102や演算装置103によって転送される。
図7は、構成変更メッセージ700の一例を示す説明図である。図7に示すように、構成変更メッセージ700は、送信ルートと、再投入構成情報(変更前)と、再投入構成情報(変更後)とのフィールドを有する。
送信ルートのフィールドには、構成変更メッセージ700の送信ルートが設定される。送信ルートは、例えば、接続構成を変更する接続箇所を形成するタスク202までの送信ルートである。再投入構成情報(変更前)のフィールドには、変更前の接続構成を示す接続構成情報が設定される。接続構成情報は、例えば、図8に示す接続構成テーブル800のレコードと同様である。再投入構成情報(変更後)のフィールドには、変更後の接続構成を示す接続構成情報が設定される。構成変更メッセージ700は、さらに、タスク状態のダンプデータのフィールドを有していてもよい。タスク状態のダンプデータのフィールドには、タスク状態のダンプデータが設定される。
(接続構成テーブル800の記憶内容)
次に、図8を用いて、接続構成テーブル800の記憶内容の一例について説明する。接続構成テーブル800は、例えば、図5に示した制御装置101のメモリ502や記録媒体505などの記憶領域により実現される。
図8は、接続構成テーブル800の記憶内容の一例を示す説明図である。図8に示すように、接続構成テーブル800は、上流タスクと、下流タスクと、接続種別と、再投入送信と、再投入受信と、時間計測とのフィールドを有する。接続構成テーブル800は、接続箇所ごとに各フィールドに情報を設定することにより、接続構成情報がレコードとして記憶される。
上流タスクのフィールドには、接続箇所を形成する上流タスクのタスク名が設定される。下流タスクのフィールドには、接続箇所を形成する下流タスクのタスク名が設定される。接続種別のフィールドには、接続箇所の接続種別が、直接構成であるか、再投入構成であるかを示す情報が設定される。再投入送信のフィールドには、再投入構成における再投入送信タスクのタスク名が設定される。再投入受信のフィールドには、再投入構成における再投入受信タスクのタスク名が設定される。時間計測のフィールドには、再投入構成における時間計測タスクのタスク名が設定される。
(閾値テーブル900の記憶内容)
次に、図9を用いて、閾値テーブル900の記憶内容の一例について説明する。閾値テーブル900は、例えば、図5に示した制御装置101のメモリ502や記録媒体505などの記憶領域により実現される。
図9は、閾値テーブル900の記憶内容の一例を示す説明図である。図9に示すように、閾値テーブル900は、直接→再投入変更と、再投入→直接変更とのフィールドを有する。閾値テーブル900は、各フィールドに情報を設定することにより、閾値情報を記憶する。
直接→再投入変更のフィールドには、ストリーム処理基盤200の接続構成を、直接構成から再投入構成に変更するか否かを判定する際に用いられる第1の閾値が設定される。再投入→直接変更のフィールドには、ストリーム処理基盤200の接続構成を、再投入構成から直接構成に変更するか否かを判定する際に用いられる第2の閾値が設定される。
ここで、第1の閾値が、第2の閾値と同じ値であると、待ち時間が第1の閾値以上になった直後に、待ち時間が第2の閾値未満にもなる確率が比較的高くなり、ストリーム処理基盤200の接続構成の切替頻度が高くなる傾向がある。そして、演算装置103の負担の増大化を招く。このため、第1の閾値は、例えば、第2の閾値よりも大きいことが好ましい。
(保存装置102のハードウェア構成例)
次に、図10を用いて、保存装置102のハードウェア構成例について説明する。
図10は、保存装置102のハードウェア構成例を示すブロック図である。図10において、保存装置102は、CPU1001と、メモリ1002と、ネットワークI/F1003と、記録媒体I/F1004と、記録媒体1005とを有する。また、各構成部は、バス1000によってそれぞれ接続される。保存装置102が有するCPU1001~記録媒体1005は、図5に示した制御装置101が有するCPU501~記録媒体505と同様であるため、説明を省略する。
保存装置102は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、保存装置102は、記録媒体I/F1004や記録媒体1005を複数有していてもよい。また、保存装置102は、記録媒体I/F1004や記録媒体1005を有していなくてもよい。
(演算装置103のハードウェア構成例)
次に、図11を用いて、演算装置103のハードウェア構成例について説明する。
図11は、演算装置103のハードウェア構成例を示すブロック図である。図11において、演算装置103は、CPU1101と、メモリ1102と、ネットワークI/F1103と、記録媒体I/F1104と、記録媒体1105とを有する。また、各構成部は、バス1100によってそれぞれ接続される。演算装置103が有するCPU1101~記録媒体1105は、図5に示した制御装置101が有するCPU501~記録媒体505と同様であるため、説明を省略する。
演算装置103は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、演算装置103は、記録媒体I/F1104や記録媒体1105を複数有していてもよい。また、演算装置103は、記録媒体I/F1104や記録媒体1105を有していなくてもよい。
(内部状態テーブル1200の記憶内容)
次に、図12を用いて、内部状態テーブル1200の記憶内容の一例について説明する。内部状態テーブル1200は、例えば、図5に示した制御装置101のメモリ502や記録媒体505などの記憶領域により実現される。
図12は、内部状態テーブル1200の記憶内容の一例を示す説明図である。図12に示すように、内部状態テーブル1200は、タスクIDと、タスク種別と、構成変更中フラグと、内部待機メッセージリストと、動作プログラムバイナリと、上流タスクと、下流タスクと、内部状態値とのフィールドを有する。内部状態テーブル1200は、タスク202ごとに各フィールドに情報を設定することにより、内部状態情報がレコードとして記憶される。
タスクIDのフィールドには、タスクIDが設定される。タスク種別のフィールドには、タスク種別が、直接送信タスクであるか、再投入タスクであるか、再投入送信タスクであるか、再投入受信タスクであるか、時間計測タスクであるかを示す情報が設定される。構成変更中フラグのフィールドには、構成変更中であるか否かを示すフラグが設定される。内部待機メッセージリストのフィールドには、一時保持中のメッセージを集めたリストが設定される。
動作プログラムバイナリのフィールドには、タスク202となる実行可能なプログラムが設定される。上流タスクのフィールドには、上流タスクのタスク名が設定される。下流タスクのフィールドには、下流タスクのタスク名が設定される。内部状態値のフィールドには、内部状態値が設定される。内部状態値は、locationとtempである。locationは、位置である。tempは、気温である。
(情報処理システム100の機能的構成例)
次に、図13を用いて、ストリーム処理形式でデータが処理される情報処理システム100の機能的構成例について説明する。
図13は、情報処理システム100の機能的構成例を示すブロック図である。情報処理システムは、制御装置101と、複数のデータストア201を実現する複数の保存装置102と、複数の処理部1321を実現する複数の演算装置103とを含む。
処理部1321は、タスク、または、タスクを実現する機能部である。タスクを実現する機能部は、例えば、演算装置103自体であってもよい。情報処理システム100は、少なくとも、第1の演算装置103と、第2の演算装置103と、第3の演算装置103と、第4の演算装置103とを含む。
ここで、複数の保存装置102は、例えば、少なくとも、第1のデータストア201と、第2のデータストア201と、第3のデータストア201とを実現する。また、複数の演算装置103は、例えば、少なくとも、第1の処理部1321と、第2の処理部1321と、第1の中継部1322と、第2の中継部1322とを実現する。
情報処理システム100において、保存装置102は、第1の記憶部1310と、投入部1311とを含む。第1の記憶部1310は、例えば、図10に示したメモリ1002や記録媒体1005などの記憶領域によって実現される。以下では、第1の記憶部1310が、保存装置102に含まれる場合について説明するが、これに限らない。例えば、第1の記憶部1310が、保存装置102とは異なる装置に含まれ、第1の記憶部1310の記憶内容が保存装置102から参照可能である場合があってもよい。
投入部1311は、保存装置102の制御部の一例として機能する。投入部1311は、具体的には、例えば、図10に示したメモリ1002や記録媒体1005などの記憶領域に記憶されたプログラムをCPU1001に実行させることにより、または、ネットワークI/F1003により、その機能を実現する。投入部1311の処理結果は、例えば、図10に示したメモリ1002や記録媒体1005などの記憶領域に記憶される。
第1の記憶部1310は、投入部1311の処理において参照され、または更新される各種情報を記憶する。第1の記憶部1310は、例えば、出力対象とするデータを記憶する。
投入部1311は、各種情報を取得する。投入部1311は、取得した各種情報を、第1の記憶部1310に記憶し、または、出力する。また、投入部1311は、第1の記憶部1310に記憶しておいた各種情報を、出力してもよい。投入部1311は、例えば、利用者の操作入力に基づき、各種情報を取得する。投入部1311は、例えば、保存装置102とは異なる装置から、各種情報を受信してもよい。
投入部1311は、例えば、データ源から、データを取得し、第1の記憶部1310に記憶する。投入部1311は、例えば、演算装置103から、データを取得し、第1の記憶部1310に記憶する。投入部1311は、例えば、記憶部が記憶する出力対象とするデータを、演算装置103への経路に出力する。
投入部1311は、具体的には、保存装置102が第1のデータストア201を実現するとすれば、第1の処理部1321へと接続される経路にデータを出力する。投入部1311は、具体的には、保存装置102が第2のデータストア201を実現するとすれば、第2の処理部1321へと接続される経路にデータを出力する。投入部1311は、具体的には、保存装置102が第3のデータストア201を実現するとすれば、受信したデータを、第2の処理部1321へと接続される第2の中継部1322への経路に送信する。第2の中継部1322は、例えば、第4の演算装置103で実現される。
投入部1311は、例えば、制御装置101から、各種要求を取得する。投入部1311は、例えば、制御装置101から取得した各種要求を、演算装置103への経路に出力する。投入部1311は、具体的には、保存装置102が第1のデータストア201を実現するとすれば、第1の処理部1321へと接続される経路に各種要求を出力する。投入部1311は、具体的には、保存装置102が第2のデータストア201を実現するとすれば、第2の処理部1321へと接続される経路に各種要求を出力する。投入部1311は、具体的には、保存装置102が第3のデータストア201を実現するとすれば、受信した各種要求を、第2の処理部1321へと接続される第2の中継部1322への経路に送信する。
投入部1311は、具体的には、制御装置101から、バリアマーカを出力することの出力要求を、受信することにより取得し、出力する。バリアマーカは、内部状態のバックアップを指示するメッセージである。バリアマーカは、複数のデータストア201のいずれかのデータストア201から出力された後、いずれかのデータストア201とは異なる他のデータストア201へは入力されずに破棄される。
投入部1311は、具体的には、処理部1321の出力先を切り替える切替要求を取得し、出力する。投入部1311は、より具体的には、第1の処理部1321の出力先を、第2の処理部1321に切り替える切替要求を受信することにより取得し、出力する。投入部1311は、より具体的には、第1の処理部1321の出力先を、第1の中継部1322に切り替える切替要求を受信することにより取得し、出力する。
投入部1311は、具体的には、タスク202を、演算装置103間で移動させる移動要求を取得し、出力する。移動は、タスク202を実行する演算装置103を変更することである。投入部1311は、より具体的には、第1のタスク202を、第1の演算装置103から、第3の演算装置103に移動させる移動要求を受信することにより取得し、出力する。投入部1311は、より具体的には、第1のタスク202を、第3の演算装置103から、第1の演算装置103に移動させる移動要求を受信することにより取得し、出力する。
投入部1311は、具体的には、保存装置102が第3のデータストア201を実現するとすれば、第1のタスク202の処理内容を規定した処理情報を受信することにより取得する。処理情報は、例えば、第1のタスク202の処理内容を規定する。投入部1311は、具体的には、保存装置102が第3のデータストア201を実現するとすれば、受信した処理情報を、第2の処理部1321へと接続される第2の中継部1322への経路に送信する。
投入部1311は、投入部1311の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、データ源から、データを受信したことである。開始トリガーは、例えば、制御装置101から、各種要求を受信したことである。
情報処理システム100において、演算装置103は、第2の記憶部1320と、処理部1321または中継部1322とを含む。第2の記憶部1320は、例えば、図11に示したメモリ1102や記録媒体1105などの記憶領域によって実現される。以下では、第2の記憶部1320が、演算装置103に含まれる場合について説明するが、これに限らない。例えば、第2の記憶部1320が、演算装置103とは異なる装置に含まれ、第2の記憶部1320の記憶内容が演算装置103から参照可能である場合があってもよい。
処理部1321や中継部1322は、演算装置103の制御部の一例として機能する。処理部1321や中継部1322は、具体的には、例えば、図11に示したメモリ1102や記録媒体1105などの記憶領域に記憶されたプログラムをCPU1101に実行させることにより、または、ネットワークI/F1103により、その機能を実現する。
処理部1321は、具体的には、第1の処理部1321または第2の処理部1321のいずれかとして動作する。中継部1322は、具体的には、第1の中継部1322または第2の中継部1322のいずれかとして動作する。処理部1321や中継部1322の処理結果は、例えば、図11に示したメモリ1102や記録媒体1105などの記憶領域に記憶される。
第2の記憶部1320は、処理部1321や中継部1322の処理において参照され、または更新される各種情報を記憶する。第2の記憶部1320は、例えば、出力対象とするデータを記憶する。第2の記憶部1320は、例えば、処理部1321の内部状態を記憶する。第2の記憶部1320は、具体的には、タスク202の内部状態を記憶する。第2の記憶部1320は、より具体的には、内部状態テーブル1200を記憶する。
処理部1321は、各種情報を取得する。処理部1321は、取得した各種情報を、第2の記憶部1320に記憶し、または、出力する。また、処理部1321は、第2の記憶部1320に記憶しておいた各種情報を、出力してもよい。処理部1321は、例えば、利用者の操作入力に基づき、各種情報を取得する。処理部1321は、例えば、演算装置103とは異なる装置から、各種情報を受信してもよい。
処理部1321は、例えば、保存装置102または他の演算装置103から、データを取得し、第1の記憶部1310に記憶する。処理部1321は、例えば、第1の記憶部1310が記憶する出力対象とするデータを、演算装置103への経路に出力する。
処理部1321は、例えば、保存装置102または他の演算装置103から、バリアマーカを取得する。処理部1321は、バリアマーカを、データが入力される経路の数分だけ受信したことに応じて、内部状態のバックアップを実施する。処理部1321は、例えば、バリアマーカを、データが入力される経路の数分だけ受信したことに応じて、データが出力されるそれぞれの経路にバリアマーカを出力する。
処理部1321は、例えば、保存装置102または他の演算装置103から、各種要求を取得する。処理部1321は、具体的には、処理部1321の出力先を切り替える切替要求を取得して出力する。処理部1321は、より具体的には、第1の処理部1321の出力先を、第2の処理部1321に切り替える切替要求を受信することにより取得して出力する。処理部1321は、第1の処理部1321として動作していれば、第2の中継部1322から、第1の処理部1321の出力先を、第2の処理部1321に切り替える切替要求が入力される。そして、処理部1321は、切替要求が入力された後に、第1の処理部1321の出力先を、第1の中継部1322から、第2の処理部1321へと切り替える。
処理部1321は、より具体的には、第1の処理部1321の出力先を、第1の中継部1322に切り替える切替要求を受信することにより取得して出力する。処理部1321は、第1の処理部1321として動作していれば、第2の中継部1322から、第1の処理部1321の出力先を、第1の中継部1322に切り替える切替要求が入力される。そして、処理部1321は、切替要求が入力された後に、第1の処理部1321の出力先を、第1の中継部1322から、第2の処理部1321へと切り替える。
処理部1321は、データ処理を実現する。処理部1321は、例えば、タスク202のデータ処理を実施し、処理結果のデータを出力する。第1の処理部1321は、例えば、第1の演算装置103で実行され、所定のデータ処理を実施する第1のタスク202であり、第1のタスク202のデータ処理を実施する。第1の処理部1321は、第3の演算装置103で実行されてもよい。第2の処理部1321は、例えば、第2の演算装置103で実行され、所定のデータ処理を実施する第2のタスク202であり、第2のタスク202のデータ処理を実施する。
処理部1321は、第1の演算装置103において、移動要求を受信した場合、移動要求以降に受信したデータを蓄積する。移動要求は、第1のタスク202を、第1の演算装置103から、第3の演算装置103に移動させる要求である。処理部1321は、第3の演算装置103において、要求を受信した場合、第1のタスク202を終了する。処理部1321は、処理情報を受信した場合、受信した処理情報に基づいて、第1のタスク202のデータ処理を実現する。
処理部1321は、例えば、取得した各種要求を、演算装置103への経路に出力する。処理部1321は、具体的には、第1の処理部1321へと接続される経路に各種要求を出力する。処理部1321は、具体的には、第2の処理部1321へと接続される経路に各種要求を出力する。
処理部1321は、第1の演算装置103において、第1の処理部1321として動作していれば、第1のタスク202の処理結果のデータを、第2の演算装置103への経路に送信する。処理部1321は、第1の演算装置103において、第1の処理部1321として動作していなければ、受信したデータを、第3の演算装置103への経路に送信する。
処理部1321は、第3の演算装置103において、第1の処理部1321として動作していれば、第1のタスク202の処理結果のデータを、第3のデータストア201への経路に送信する。処理部1321は、第4の演算装置103において、受信したデータを、第2の演算装置103への経路に送信する。
処理部1321は、第1の演算装置103において、移動要求を受信した場合、受信した要求を、第3の演算装置103への経路に送信する。移動要求は、第1のタスク202を、第1の演算装置103から、第3の演算装置103に移動させる要求である。
処理部1321は、第3の演算装置103において、移動要求を受信した場合、第1のタスク202の処理内容を規定した処理情報を、第3のデータストア201への経路に送信する。移動要求は、第1のタスク202を、第3の演算装置103から、第1の演算装置103に移動させる要求である。
処理部1321は、第1の演算装置103において、処理情報を受信した場合、第1のタスク202の処理結果のデータを、第2の演算装置103への経路に送信する。処理部1321は、第4の演算装置103において、受信した処理情報を、第1の演算装置103への経路に送信する。
中継部1322は、各種情報を取得する。中継部1322は、取得した各種情報を、第2の記憶部1320に記憶し、または、出力する。また、中継部1322は、第2の記憶部1320に記憶しておいた各種情報を、出力してもよい。中継部1322は、例えば、利用者の操作入力に基づき、各種情報を取得する。中継部1322は、例えば、演算装置103とは異なる装置から、各種情報を受信してもよい。
中継部1322は、第1の中継部1322として動作していれば、1回目の切替要求以降に入力されたデータを、第2の記憶部1320に蓄積する。切替要求は、第1の処理部1321の出力先を、第2の処理部1321に切り替える要求である。中継部1322は、第1の中継部1322として動作していれば、1回目の切替要求以降に、第2の中継部1322から切替要求が入力された場合、蓄積したデータを第2の処理部1321に出力する。中継部1322は、第2の中継部1322として動作していれば、入力された切替要求を第1の処理部1321と第1の中継部1322とに出力する。
中継部1322は、中継部1322の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、保存装置102または他の演算装置103から、データを受信したことである。開始トリガーは、例えば、保存装置102または他の演算装置103から、バリアマーカを受信したことである。開始トリガーは、例えば、保存装置102または他の演算装置103から、各種要求を受信したことである。
情報処理システム100において、制御装置101は、第3の記憶部1330と、取得部1331と、変更部1332と、BU指示部1333と、出力部1334とを含む。第3の記憶部1330は、例えば、図5に示したメモリ502や記録媒体505などの記憶領域によって実現される。以下では、第3の記憶部1330が、制御装置101に含まれる場合について説明するが、これに限らない。例えば、第3の記憶部1330が、制御装置101とは異なる装置に含まれ、第3の記憶部1330の記憶内容が制御装置101から参照可能である場合があってもよい。
取得部1331~出力部1334は、制御装置101の制御部の一例として機能する。取得部1331~出力部1334は、具体的には、例えば、図5に示したメモリ502や記録媒体505などの記憶領域に記憶されたプログラムをCPU501に実行させることにより、または、ネットワークI/F503により、その機能を実現する。各機能部の処理結果は、例えば、図5に示したメモリ502や記録媒体505などの記憶領域に記憶される。
第3の記憶部1330は、各機能部の処理において参照され、または更新される各種情報を記憶する。第3の記憶部1330は、演算装置103間の接続関係を記憶する。第3の記憶部1330は、例えば、タスク202間の接続関係を記憶する。第3の記憶部1330は、第1の閾値と第2の閾値とを記憶する。第1の閾値は、例えば、第2の閾値よりも大きい。第3の記憶部1330は、具体的には、図8に示した接続構成テーブル800や図9に示した閾値テーブル900を記憶する。
取得部1331は、各機能部の処理に用いられる各種情報を取得する。取得部1331は、取得した各種情報を、第3の記憶部1330に記憶し、または、各機能部に出力する。また、取得部1331は、第3の記憶部1330に記憶しておいた各種情報を、各機能部に出力してもよい。取得部1331は、例えば、利用者の操作入力に基づき、各種情報を取得する。取得部1331は、例えば、情報処理システム100とは異なる装置から、各種情報を受信してもよい。
取得部1331は、処理部1321が、バリアマーカを、処理部1321へとデータが入力される経路の数分だけ受信するまでの待ち時間に関する情報を取得する。取得部1331は、例えば、第2の処理部1321について待ち時間に関する情報を取得する。
取得部1331は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。取得部1331は、例えば、定期的に、それぞれのデータストア201にバリアマーカを出力させるタイミングを検出してもよい。
変更部1332は、取得した情報に基づいて、待ち時間が第1の閾値以上であるか否かを判定する。変更部1332は、第1の閾値以上であると判定した場合、ストリーム処理基盤200の接続構成を、第1の構成から、第2の構成へと切り替える。第1の構成は、第1の処理部1321から第2の処理部1321までの経路上に第3のデータストア201を含まない構成である。第2の構成は、第1の処理部1321から第2の処理部1321までの経路上に第3のデータストア201を含む構成である。
第1の構成における第1の処理部1321から第2の処理部1321までの経路と、第2の構成における第3のデータストア201を含む第1の処理部1321から第2の処理部1321までの経路とは、第2の処理部1321で合流する。変更部1332は、第1の閾値以上であると判定した場合、第3のデータストア201を生成するようにしてもよい。
変更部1332は、例えば、第1の閾値以上であると判定した場合、第1の処理部1321の出力先を、第2の処理部1321から、入力されたデータを出力する第1の中継部1322へと切り替える。第1の中継部1322は、第1の処理部1321から第3のデータストア201までの経路上に含まれる。変更部1332は、具体的には、第1の閾値以上であると判定した場合、第1の処理部1321の出力先を、第2の処理部1321から、第1の中継部1322へと切り替える切替要求を、第1のデータストア201から出力させる。
変更部1332は、例えば、第1の閾値以上であると判定した場合、第1のタスク202を、第1の演算装置103から、第1のタスク202を実行可能な第3の演算装置103に移動させてもよい。変更部1332は、具体的には、第1の閾値以上であると判定した場合、第1のタスク202を、第1の演算装置103から、第1のタスク202を実行可能な第3の演算装置103に移動させる移動要求を、第1のデータストア201から出力させる。
変更部1332は、取得した情報に基づいて、待ち時間が第2の閾値未満であるか否かを判定する。変更部1332は、第2の閾値未満であると判定した場合、第2の構成から、第1の構成へと切り替える。変更部1332は、例えば、第2の閾値未満であると判定した場合、第1の処理部1321の出力先を、第1の中継部1322から、第2の処理部1321へと切り替える。変更部1332は、具体的には、第2の閾値未満であると判定した場合、第1の処理部1321の出力先を、第2の処理部1321に切り替える切替要求を、第1のデータストア201から出力させる。
変更部1332は、例えば、第2の閾値未満であると判定した場合、第1のタスク202を、第3の演算装置103から、第1の演算装置103に移動させてもよい。変更部1332は、例えば、第2の閾値未満であると判定した場合、第1のタスク202を、第3の演算装置103から、第1の演算装置103に移動させる移動要求を、第1のデータストア201から出力させる。
BU指示部1333は、バリアマーカを複数のデータストア201のそれぞれのデータストア201から出力させる。
出力部1334は、いずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F503による外部装置への送信、または、メモリ502や記録媒体505などの記憶領域への記憶である。これにより、出力部1334は、いずれかの機能部の処理結果を利用者に通知可能にすることができ、情報処理システム100の利便性の向上を図ることができる。
(情報処理システム100の具体的な機能的構成例)
次に、図14を用いて、情報処理システム100の具体的な機能的構成例について説明する。
図14は、情報処理システム100の具体的な機能的構成例を示すブロック図である。情報処理システム100において、演算装置103は、入力データ受信部1411と、処理実行部1412と、出力データ送信部1413と、再投入データ送信部1414と、チェックポイント管理部1415と、処理状況監視部1416とを含む。また、情報処理システム100において、制御装置101は、演算装置動作監視部1400と、チェックポイント進捗管理部1401と、接続構成変更判定部1402と、接続構成変更指示部1403とを含む。
入力データ受信部1411は、データストア201、または、他の演算装置103からのデータメッセージ600を受信する。また、入力データ受信部1411は、データストア201、または、他の演算装置103からの各種要求を受信する。また、入力データ受信部1411は、他の演算装置103から、タスク202の処理内容を規定した処理情報を受信する。
処理実行部1412は、データメッセージ600に基づいて、所定のデータ処理を実施する。処理実行部1412は、出力データ送信部1413を制御し、処理結果のデータを、他の演算装置103に出力する。または、処理実行部1412は、再投入データ送信部1414を制御し、処理結果のデータを、データストア201に出力する。処理実行部1412は、データが入力される経路の数分のバリアマーカを受信すると、チェックポイント管理部1415を起動する。処理実行部1412は、データが入力される経路の数分のバリアマーカを受信すると、出力データ送信部1413を制御し、バリアマーカを、他の演算装置103に出力する。
処理実行部1412は、各種要求に対応する処理を実施する。処理実行部1412は、切替要求や移動要求を受信すると、出力データ送信部1413または再投入データ送信部1414を制御し、切替要求や移動要求を、他の演算装置103またはデータストア201に送信する。処理実行部1412は、切替要求を受信すると、出力データ送信部1413または再投入データ送信部1414を制御し、送信先を切り替える。処理実行部1412は、移動要求を受信すると、出力データ送信部1413または再投入データ送信部1414を制御し、タスク202を移動するために、タスク202の処理内容を規定した処理情報を、他の演算装置103またはデータストア201に送信する。
また、処理実行部1412は、処理情報を受信すると、処理情報に基づいて、タスク202を実装する。処理実行部1412は、処理情報を受信すると、出力データ送信部1413または再投入データ送信部1414を制御し、処理情報を、他の演算装置103またはデータストア201に送信する。
出力データ送信部1413は、処理実行部1412の制御に従って、他の演算装置103や外部のコンピュータなどに、処理結果のデータ、切替要求や移動要求、処理情報、または、バリアマーカなどを送信する。再投入データ送信部1414は、処理実行部1412の制御に従って、データストア201に、処理結果のデータ、切替要求や移動要求、または、処理情報などを送信する。
チェックポイント管理部1415は、起動されると、タスク202ごとの内部状態テーブル1200を、チェックポイント1420として保存する。チェックポイント管理部1415は、タスク202ごとの内部状態テーブル1200を保存すると、チェックポイント進捗管理部1401に、保存完了報告を送信する。処理状況監視部1416は、処理実行部1412におけるバリアマーカの待ち時間を計測し、待ち時間を、接続構成変更判定部1402に送信する。
演算装置動作監視部1400は、演算装置103の故障などを監視し、ストリーム処理基盤200を障害から復旧するタイミングを検出する。チェックポイント進捗管理部1401は、それぞれのデータストア201からバリアマーカを出力させる。また、チェックポイント進捗管理部1401は、それぞれの演算装置103におけるバックアップの進捗情報を収集して管理する。チェックポイント進捗管理部1401は、例えば、保存完了報告を収集して、それぞれの演算装置103におけるバックアップの進捗情報を管理する。
接続構成変更判定部1402は、閾値テーブル900に基づいて、処理実行部1412におけるバリアマーカの待ち時間が、第1の閾値以上であるか否か、または、第2の閾値未満であるか否かを判定する。接続構成変更判定部1402は、例えば、ストリーム処理基盤200の現在の接続構成が、直接構成であれば、待ち時間が第1の閾値以上であるか否かを判定する。また、接続構成変更判定部1402は、例えば、ストリーム処理基盤200の現在の接続構成が、再投入構成であれば、待ち時間が第2の閾値未満であるか否かを判定する。
接続構成変更判定部1402は、ストリーム処理基盤200の現在の接続構成が、直接構成であり、第1の閾値以上であると判定した場合、ストリーム処理基盤200の接続構成を、再投入構成に変更すると判定する。そして、接続構成変更判定部1402は、再投入構成に変更する変更指示となる切替要求または移動要求を、接続構成変更指示部1403に出力する。
接続構成変更判定部1402は、ストリーム処理基盤200の現在の接続構成が、再投入構成であり、第2の閾値未満であると判定した場合、ストリーム処理基盤200の接続構成を、直接構成に変更すると判定する。そして、接続構成変更判定部1402は、直接構成に変更する変更指示となる切替要求または移動要求を、接続構成変更指示部1403に出力する。
接続構成変更指示部1403は、変更指示となる切替要求または移動要求を、データストア201から出力させる。接続構成変更指示部1403は、ストリーム処理基盤200の変更後の接続構成に合わせて、接続構成テーブル800を更新する。
(情報処理システム100の実施例1)
次に、図15~図33を用いて、情報処理システム100の実施例1について説明する。まず、図15および図16を用いて、実施例1において、ストリーム処理基盤200の接続構成を、直接構成から再投入構成に変更する一例について説明する。
図15および図16は、実施例1において、ストリーム処理基盤200の接続構成を、直接構成から再投入構成に変更する一例を示す説明図である。図15および図16の例では、データストア1501~1503と、タスク1511~1513,1521,1522が存在する。
タスク1511は、動作が比較的遅いタスクである。タスク1512は、動作が比較的速いタスクである。タスク1513は、タスク1511の処理結果のデータと、タスク1512の処理結果のデータとを受信する下流のタスクである。タスク1521は、再投入送信タスクである。タスク1522は、再投入受信タスクである。
図15において、ストリーム処理基盤200の接続構成は、直接構成である。例えば、タスク1511は、タスク1511の処理結果のデータを、タスク1513に直接送信する。また、例えば、タスク1512は、タスク1512の処理結果のデータを、タスク1513に直接送信する。
制御装置101は、タスク1513におけるバリアマーカの待ち時間を取得する。ここで、タスク1513におけるバリアマーカの待ち時間が第1の閾値以上であり、制御装置101が、ストリーム処理基盤200の接続構成を、再投入構成に変更すると決定したとする。このため、制御装置101は、タスク1521からデータストア1503への接続、データストア1503からタスク1522への接続、タスク1522からタスク1513への接続を形成する。次に、図16の説明に移行する。
図16において、制御装置101は、データストア1501~1503からバリアマーカを出力させるタイミングで、タスク1511からタスク1513への接続を削除し、タスク1511からタスク1521への接続を形成する。
これにより、制御装置101は、タスク1513におけるバリアマーカの待ち時間の低減化を図ることができる。制御装置101は、例えば、データストア1502,1503から出力されたバリアマーカが、タスク1513に辿り着きやすいため、タスク1513におけるバリアマーカの待ち時間の低減化を図ることができる。
次に、図17を用いて、実施例1において、再投入構成に変更後に、直接構成時のタスク1513におけるバリアマーカの待ち時間を取得する一例について説明する。図17の例では、図16に示したストリーム処理基盤200の接続構成で、直接構成時のタスク1513におけるバリアマーカの待ち時間を取得する。
図17は、待ち時間を取得する一例を示す説明図である。図17において、タスク1511からタスク1513への接続が存在しないため、制御装置101は、直接構成時のタスク1513におけるバリアマーカの待ち時間を、直接取得することができない。
このため、制御装置101は、時間計測タスク1700を用意し、タスク1511から時間計測タスク1700への接続、および、タスク1512から時間計測タスク1700への接続を生成する。そして、制御装置101は、時間計測タスク1700におけるバリアマーカの待ち時間を、直接構成時のタスク1513におけるバリアマーカの待ち時間として取得する。
これにより、制御装置101は、ストリーム処理基盤200の接続構成を、再投入構成から、直接構成に変更するか否かを判定可能にすることができる。制御装置101は、例えば、タスク1511とタスク1512との処理負荷を計測し、タスク1511とタスク1512との処理負荷に基づいて、待ち時間を推定する場合があってもよい。また、制御装置101は、例えば、タスク1511とタスク1512とのデータ送受信間隔を計測し、タスク1511とタスク1512とのデータ送受信間隔に基づいて、待ち時間を推定する場合があってもよい。
次に、図18~図23を用いて、実施例1において、ストリーム処理基盤200の接続構成を、再投入構成から直接構成に変更する一例について説明する。図18~図23の例では、図16に示したストリーム処理基盤200の接続構成を、再投入構成から直接構成に変更する。
図18~図23は、実施例1において、ストリーム処理基盤200の接続構成を、再投入構成から直接構成に変更する一例を示す説明図である。図18において、制御装置101は、直接構成時のタスク1513におけるバリアマーカの待ち時間が第2の閾値未満であるため、ストリーム処理基盤200の接続構成を、再投入構成から、直接構成に変更すると判定する。
ここで、制御装置101は、タスク1511からタスク1513への接続と、タスク1521からタスク1513への接続と、タスク1522からタスク1511への接続と、タスク1522からタスク1521への接続とを生成する。次に、図19の説明に移行する。
図19において、制御装置101は、データストア1501から構成変更メッセージ700を出力させる。構成変更メッセージ700は、タスク1511を経由し、タスク1521に辿り着く。タスク1521は、構成変更メッセージ700以降のデータについては、データストア1503に再投入せずに蓄積し、構成変更メッセージ700については、データストア1503に送信する。次に、図20の説明に移行する。
図20において、データストア1503は、構成変更メッセージ700を、構成変更メッセージ700以前のデータを追い越させずに、タスク1522に送信する。タスク1522は、データストア1503から受信した構成変更メッセージ700を、タスク1511とタスク1521とに送信する。次に、図21の説明に移行する。
図21において、タスク1511は、構成変更メッセージ700を保持する。タスク1521は、蓄積したデータを順にタスク1513に送信する。ここで、データストア1503が、構成変更メッセージ700以前のデータを、構成変更メッセージ700が追い越さないようにしたため、タスク1521が、蓄積したデータを送信しても、データ順序は担保される。次に、図22の説明に移行する。
図22において、データストア1501からバリアマーカが出力されるまで、タスク1511から、タスク1521を経由し、タスク1513へとデータが送信されるように、ストリーム処理基盤200を動作させる。次に、図23の説明に移行する。
図23において、タスク1511は、バリアマーカを受信すると、構成変更メッセージ700に基づいて、送信先をタスク1513に切り替える。バリアマーカ以降のデータは、バリアマーカ以前のデータを追い越さないため、データ順序は担保される。その後、制御装置101は、タスク1521,1522などを除去してもよい。
これにより、制御装置101は、データ順序を担保しつつ、ストリーム処理基盤200の接続構成を、再投入構成から直接構成に変更することができる。このため、制御装置101は、直接構成時のタスク1513におけるバリアマーカの待ち時間が比較的小さいと判断されれば、データを、データストア1503に再投入することによる処理遅延を防止することができる。
次に、図24~図27を用いて、直接構成における処理遅延と、再投入構成における処理遅延とを比較する一例について説明する。
図24~図27は、直接構成における処理遅延と、再投入構成における処理遅延とを比較する一例を示す説明図である。図24の例では、ストリーム処理基盤200の、直接構成2400と、再投入構成2420とを示す。直接構成2400と、再投入構成2420とで共通するタスクは、同じ符号を付している。
直接構成2400は、データストア2401,2402と、タスク2411~2413とを含む。タスク2411は、動作が比較的遅いタスクである。タスク2412は、動作が比較的速いタスクである。タスク2413は、タスク2411の処理結果のデータと、タスク2412の処理結果のデータとを受信する下流のタスクである。直接構成2400において、データストア2401からタスク2411への接続と、データストア2402からタスク2412への接続と、タスク2411からタスク2413への接続と、タスク2412からタスク2413への接続とが存在する。
再投入構成2420は、データストア2401~2403と、タスク2411~2413と、タスク2431,2432とを含む。タスク2431は、再投入送信タスクである。タスク2432は、再投入受信タスクである。
再投入構成2420において、データストア2401からタスク2411への接続と、タスク2411からタスク2431への接続と、タスク2431からデータストア2403への接続とが存在する。また、データストア2403からタスク2432への接続と、タスク2432からタスク2413への接続とが存在する。また、データストア2402からタスク2412への接続と、タスク2412からタスク2413への接続とが存在する。次に、図25の説明に移行する。
図25において、直接構成2400において、データストア2401,2402からバリアマーカが出力され、再投入構成2420において、データストア2401~2403からバリアマーカが出力されたとする。次に、図26の説明に移行する。
図26において、時間経過に伴い、バリアマーカが伝搬されていく。直接構成2400および、再投入構成2420のいずれにおいても、タスク2411の動作が比較的遅いため、タスク2411においてバリアマーカの伝搬が滞ることになる。
このため、直接構成2400では、タスク2413が、データストア2402が出力したバリアマーカを受信しても、データストア2401が出力したバリアマーカを受信するまで、所定のデータ処理を実施せずに待機することになる。結果として、直接構成2400は、タスク2413において、バリアマーカの待ち時間の増大化を招く。
これに対し、再投入構成2420では、タスク2413が、データストア2402が出力したバリアマーカと、データストア2403が出力したバリアマーカとを受信することができ、所定のデータ処理を、比較的早期に実施することができる。このため、再投入構成2420は、バリアマーカの待ち時間の増大化を抑制することができる。次に、図27の説明に移行する。
図27において、直接構成2400は、タスク2413において、バリアマーカの待ち時間の増大化を招いたため、データストア2402が出力した、バリマーカ以降のデータについての処理遅延が発生することになる。一方で、再投入構成2420は、タスク2413において、データストア2402が出力した、バリマーカ以降のデータについての処理遅延を抑制することができる。
(実施例1における全体処理手順)
次に、図28を用いて、制御装置101が実行する、実施例1における全体処理手順の一例について説明する。全体処理は、例えば、図5に示したCPU501と、メモリ502や記録媒体505などの記憶領域と、ネットワークI/F503とによって実現される。
図28は、実施例1における全体処理手順の一例を示すフローチャートである。図28において、制御装置101は、チェックポイントの処理完了まで待機する(ステップS2801)。
次に、制御装置101は、バリアマーカの待ち時間を取得する(ステップS2802)。そして、制御装置101は、未処理の接続箇所を選択する(ステップS2803)。
次に、制御装置101は、選択した接続箇所の接続構成の接続種別が、直接構成であるか否かを判定する(ステップS2804)。ここで、直接構成である場合(ステップS2804:Yes)、制御装置101は、ステップS2805の処理に移行する。一方で、直接構成ではなく再投入構成である場合(ステップS2804:No)、制御装置101は、ステップS2808の処理に移行する。
ステップS2805では、制御装置101は、下流タスクの待ち時間が第1の閾値以上であるか否かを判定する(ステップS2805)。ここで、第1の閾値以上である場合(ステップS2805:Yes)、制御装置101は、ステップS2806の処理に移行する。一方で、第1の閾値以上ではない場合(ステップS2805:No)、制御装置101は、ステップS2811の処理に移行する。
ステップS2806では、制御装置101は、接続構成を、再投入構成に更新する(ステップS2806)。次に、制御装置101は、再投入構成への変更指示を送信する(ステップS2807)。再投入構成への変更指示は、例えば、構成変更メッセージである。そして、制御装置101は、ステップS2811の処理に移行する。
ステップS2808では、制御装置101は、計測タスクの待ち時間が第2の閾値以下であるか否かを判定する(ステップS2808)。ここで、第2の閾値以下である場合(ステップS2808:Yes)、制御装置101は、ステップS2809の処理に移行する。一方で、第2の閾値以下ではない場合(ステップS2808:No)、制御装置101は、ステップS2811の処理に移行する。
ステップS2809では、制御装置101は、接続構成を、直接構成に更新する(ステップS2809)。次に、制御装置101は、直接構成への変更指示を送信する(ステップS2810)。直接構成への変更指示は、例えば、構成変更メッセージである。そして、制御装置101は、ステップS2811の処理に移行する。
ステップS2811では、制御装置101は、すべての接続箇所を選択したか否かを判定する(ステップS2811)。ここで、未選択の接続箇所がある場合(ステップS2811:No)、制御装置101は、ステップS2803の処理に戻る。すべての接続箇所を選択している場合(ステップS2811:Yes)、制御装置101は、ステップS2801の処理に戻る。
(実施例1における変更指示処理手順)
次に、図29を用いて、制御装置101が実行する、実施例1における変更指示処理手順の一例について説明する。変更指示処理は、例えば、図5に示したCPU501と、メモリ502や記録媒体505などの記憶領域と、ネットワークI/F503とによって実現される。
図29は、実施例1における変更処理手順の一例を示すフローチャートである。図29において、制御装置101は、変更指示を受信するまで待機する(ステップS2901)。
次に、制御装置101は、変更指示の種別が、再投入であるか否かを判定する(ステップS2902)。ここで、再投入である場合(ステップS2902:Yes)、制御装置101は、ステップS2903の処理に移行する。一方で、再投入ではない場合(ステップS2902:No)、制御装置101は、ステップS2906の処理に移行する。
ステップS2903では、制御装置101は、再投入送信タスクと、再投入受信タスクとを生成する(ステップS2903)。次に、制御装置101は、再投入送信タスクに接続される経路と、再投入受信タスクに接続される経路とを形成する(ステップS2904)。そして、制御装置101は、再投入構成に変更する構成変更メッセージ700を送信する(ステップS2905)。その後、制御装置101は、ステップS2901の処理に戻る。
ステップS2906では、制御装置101は、直接構成に変更する構成変更メッセージ700を送信する(ステップS2906)。次に、制御装置101は、構成変更が完了するまで待機する(ステップS2907)。そして、制御装置101は、再投入送信タスクと、再投入受信タスクと、再投入送信タスクに接続される経路と、再投入受信タスクに接続される経路とを除去する(ステップS2908)。その後、制御装置101は、ステップS2901の処理に戻る。
(実施例1におけるタスク処理手順)
次に、図30および図31を用いて、演算装置103が実行する、実施例1におけるタスク処理手順の一例について説明する。タスク処理は、例えば、図11に示したCPU1101と、メモリ1102や記録媒体1105などの記憶領域と、ネットワークI/F1103とによって実現される。
図30および図31は、実施例1におけるタスク処理手順の一例を示すフローチャートである。図30において、演算装置103は、メッセージを受信するまで待機する(ステップS3001)。
次に、演算装置103は、メッセージの種別が、データメッセージ600であるか否かを判定する(ステップS3002)。ここで、データメッセージ600である場合(ステップS3002:Yes)、演算装置103は、ステップS3003の処理に移行する。一方で、データメッセージ600ではない場合(ステップS3002:No)、演算装置103は、ステップS3005の処理に移行する。
ステップS3003では、演算装置103は、通常処理を実行する(ステップS3003)。次に、演算装置103は、通常処理に従って、データメッセージ600を送信する(ステップS3004)。そして、演算装置103は、ステップS3001の処理に戻る。
ステップS3005では、演算装置103は、メッセージの種別が、自装置宛ての構成変更メッセージ700であるか否かを判定する(ステップS3005)。ここで、自装置宛ての構成変更メッセージ700である場合(ステップS3005:Yes)、演算装置103は、ステップS3006の処理に移行する。一方で、自装置宛ての構成変更メッセージ700ではない場合(ステップS3005:No)、演算装置103は、ステップS3007の処理に移行する。
ステップS3006では、演算装置103は、構成変更メッセージ700のルート情報に従って、構成変更メッセージ700を転送する(ステップS3006)。そして、演算装置103は、ステップS3001の処理に戻る。
ステップS3007では、演算装置103は、メッセージの種別が、再投入構成に変更する構成変更メッセージ700であるか否かを判定する(ステップS3007)。ここで、再投入構成に変更する構成変更メッセージ700である場合(ステップS3007:Yes)、演算装置103は、ステップS3008の処理に移行する。一方で、再投入構成に変更する構成変更メッセージ700ではない場合(ステップS3007:No)、演算装置103は、ステップS3009の処理に移行する。
ステップS3008では、演算装置103は、以降のメッセージの送信先を、再投入送信タスクに変更する(ステップS3008)。そして、演算装置103は、ステップS3001の処理に戻る。
ステップS3009では、演算装置103は、メッセージの種別が、直接構成に変更する構成変更メッセージ700であるか否かを判定する(ステップS3009)。ここで、直接構成に変更する構成変更メッセージ700である場合(ステップS3009:Yes)、演算装置103は、構成変更メッセージ700を一時保持する(ステップS3010)。そして、演算装置103は、ステップS3001の処理に戻る。
一方で、直接構成に変更する構成変更メッセージ700ではない場合(ステップS3009:No)、演算装置103は、図31のステップS3101に移行する。
図31において、演算装置103は、バリアマーカを一時保持する(ステップS3101)。次に、演算装置103は、すべての上流タスクからバリアマーカが到着したか否かを判定する(ステップS3102)。ここで、すべての上流タスクからバリアマーカが到着している場合(ステップS3102:Yes)、演算装置103は、ステップS3103の処理に移行する。一方で、いずれかの上流タスクからバリアマーカが到着していない場合(ステップS3102:No)、演算装置103は、ステップS3001の処理に戻る。
ステップS3103では、演算装置103は、構成変更メッセージ700を一時保持中であるか否かを判定する(ステップS3103)。ここで、一時保持中である場合(ステップS3103:Yes)、演算装置103は、ステップS3104の処理に移行する。一方で、一時保持中ではない場合(ステップS3103:No)、演算装置103は、ステップS3105の処理に移行する。
ステップS3104では、演算装置103は、以降のメッセージの送信先を、元々の下流タスクに変更する(ステップS3104)。そして、演算装置103は、ステップS3105の処理に移行する。
ステップS3105では、演算装置103は、チェックポイント処理を実施し、一時保持したバリアマーカを破棄し、バリアマーカを下流に送信する(ステップS3105)。そして、演算装置103は、ステップS3001の処理に戻る。
(実施例1における再投入処理手順)
次に、図32を用いて、演算装置103が実行する、実施例1における再投入処理手順の一例について説明する。再投入処理は、例えば、図11に示したCPU1101と、メモリ1102や記録媒体1105などの記憶領域と、ネットワークI/F1103とによって実現される。
図32は、実施例1における再投入処理手順の一例を示すフローチャートである。図32において、演算装置103は、メッセージを受信するまで待機する(ステップS3201)。
次に、演算装置103は、メッセージの種別が、自装置宛ての構成変更メッセージ700であるか否かを判定する(ステップS3202)。ここで、自装置宛ての構成変更メッセージ700である場合(ステップS3202:Yes)、演算装置103は、ステップS3203の処理に移行する。一方で、自装置宛ての構成変更メッセージ700ではない場合(ステップS3202:No)、演算装置103は、ステップS3208の処理に移行する。
ステップS3203では、演算装置103は、構成変更中フラグが、onであるか否かを判定する(ステップS3203)。ここで、onである場合(ステップS3203:Yes)、演算装置103は、ステップS3204の処理に移行する。一方で、onではなくoffである場合(ステップS3203:No)、演算装置103は、ステップS3207の処理に移行する。
ステップS3204では、演算装置103は、蓄積したメッセージを下流に送信する(ステップS3204)。次に、演算装置103は、メッセージの転送先を、下流タスクに変更する(ステップS3205)。そして、演算装置103は、構成変更中フラグをoffに変更する(ステップS3206)。その後、演算装置103は、ステップS3201の処理に戻る。
ステップS3207では、演算装置103は、構成変更中フラグをonに変更する(ステップS3207)。そして、演算装置103は、ステップS3201の処理に戻る。
ステップS3208では、演算装置103は、構成変更中フラグが、onであるか否かを判定する(ステップS3208)。ここで、onである場合(ステップS3208:Yes)、演算装置103は、ステップS3209の処理に移行する。一方で、onではなくoffである場合(ステップS3208:No)、演算装置103は、ステップS3210の処理に移行する。
ステップS3209では、演算装置103は、メッセージを内部に蓄積する(ステップS3209)。そして、演算装置103は、ステップS3201の処理に戻る。
ステップS3210では、演算装置103は、メッセージを転送する(ステップS3210)。そして、演算装置103は、ステップS3201の処理に戻る。
(実施例1における受信処理手順)
次に、図33を用いて、演算装置103が実行する、実施例1における受信処理手順の一例について説明する。受信処理は、例えば、図11に示したCPU1101と、メモリ1102や記録媒体1105などの記憶領域と、ネットワークI/F1103とによって実現される。
図33は、実施例1における受信処理手順の一例を示すフローチャートである。図33において、演算装置103は、メッセージを受信するまで待機する(ステップS3301)。
次に、演算装置103は、メッセージの種別が、自分宛ての構成変更メッセージ700であるか否かを判定する(ステップS3302)。ここで、自装置宛ての構成変更メッセージ700である場合(ステップS3302:Yes)、演算装置103は、ステップS3303の処理に移行する。一方で、自装置宛ての構成変更メッセージ700ではない場合(ステップS3302:No)、演算装置103は、ステップS3304の処理に移行する。
ステップS3303では、演算装置103は、上流タスクと、再投入送信タスクとに構成変更メッセージ700を送信する(ステップS3303)。そして、演算装置103は、ステップS3301の処理に戻る。
ステップS3304では、演算装置103は、メッセージを転送する(ステップS3304)。そして、演算装置103は、ステップS3301の処理に戻る。
(情報処理システム100の実施例2)
次に、図34~図43を用いて、情報処理システム100の実施例2について説明する。実施例2は、演算装置103において、タスクのダンプ出力と、処理内容の動的変更が可能であり、演算装置103間でタスクの移動が可能である場合の実施例である。まず、図34および図35を用いて、実施例2において、ストリーム処理基盤200の接続構成を、直接構成から再投入構成に変更する一例について説明する。
図34および図35は、実施例2において、ストリーム処理基盤200の接続構成を、直接構成から再投入構成に変更する一例を示す説明図である。図34および図35の例では、データストア3401~3403と、演算装置3411~3417が存在する。
演算装置3411は、動作が比較的遅いタスクT1を実行する。演算装置3415は、動作が比較的速いタスクT2を実行する。演算装置3414は、タスクT1の処理結果のデータと、タスクT2の処理結果のデータとを受信する下流のタスクT3を実行する。演算装置3417は、時間計測タスクT4を実行する。
図15において、ストリーム処理基盤200の接続構成は、直接構成である。例えば、データストア3401から演算装置3411への接続が存在する。また、データストア3402から演算装置3415への接続が存在する。また、演算装置3411から、演算装置3412と、演算装置3414と、演算装置3417とへの接続が存在する。また、演算装置3412からデータストア3403への接続が存在する。
また、演算装置3415から、演算装置3416と、演算装置3414と、演算装置3417とへの接続が存在する。また、演算装置3416からデータストア3403への接続が存在する。また、データストア3403から演算装置3413への接続が存在する。また、演算装置3413から、演算装置3411と、演算装置3412と、演算装置3414と、演算装置3415と、演算装置3416とへの接続が存在する。
演算装置3411は、タスクT1の処理結果のデータを、演算装置3411から演算装置3414への接続を介して、タスクT3を実行する演算装置3414に送信する。また、例えば、演算装置3415は、タスクT2の処理結果のデータを、演算装置3415から演算装置3414への接続を介して、タスクT3を実行する演算装置3414に送信する。
制御装置101は、タスクT3におけるバリアマーカの待ち時間を取得する。ここで、タスクT3におけるバリアマーカの待ち時間が第1の閾値以上であり、制御装置101が、ストリーム処理基盤200の接続構成を、再投入構成に変更すると決定したとする。次に、図35の説明に移行する。
図35において、制御装置101は、タスクT1を、演算装置3412に移動させる。演算装置3411は、タスクT1を移動後、入力されたデータをそのまま演算装置3412に転送するように動作する。演算装置3412は、タスクT1の処理結果のデータを、演算装置3412からデータストア3403への接続を介して、データストア3403に送信する。その後、タスクT1の処理結果のデータは、データストア3403から再投入され、演算装置3413を介して、演算装置3414に送信される。
これにより、制御装置101は、タスクT3におけるバリアマーカの待ち時間の低減化を図ることができる。制御装置101は、例えば、データストア3402,3403から出力されたバリアマーカが、タスクT3に辿り着きやすいため、タスクT3におけるバリアマーカの待ち時間の低減化を図ることができる。
次に、図36~図39を用いて、実施例2において、ストリーム処理基盤200の接続構成を、再投入構成から直接構成に変更する一例について説明する。図36~図39の例では、図35に示したストリーム処理基盤200の接続構成を、再投入構成から直接構成に変更する。
図36~図39は、実施例2において、ストリーム処理基盤200の接続構成を、再投入構成から直接構成に変更する一例を示す説明図である。図36において、制御装置101は、直接構成時のタスクT3におけるバリアマーカの待ち時間を、時間計測タスクT4を実行する演算装置3417(不図示)から取得する。時間計測タスクT4は、実施例1の図16に示した場合と同様に、待ち時間を計測可能である。
制御装置101は、直接構成時のタスクT3におけるバリアマーカの待ち時間が第2の閾値未満であるため、ストリーム処理基盤200の接続構成を、再投入構成から、直接構成に変更すると判定する。ここで、制御装置101は、データストア3401から構成変更メッセージ700を出力させる。演算装置3411は、構成変更メッセージ700を受信すると、構成変更メッセージ700を演算装置3412に送信すると共に、構成変更メッセージ700以降のデータを蓄積するようにする。次に、図37の説明に移行する。
図37において、演算装置3412は、構成変更メッセージ700を受信すると、タスクT1の処理内容を構成変更メッセージ700に書き込む。また、演算装置3412は、構成変更メッセージ700を、構成変更メッセージ700以前のデータを追い越させずに、データストア3403に送信する。次に、図38の説明に移行する。
図38において、データストア3403は、構成変更メッセージ700を演算装置3413に送信し、演算装置3413は、構成変更メッセージ700を演算装置3411に送信する。演算装置3411は、構成変更メッセージ700を受信し、構成変更メッセージ700に書き込まれたタスクT1の処理内容に基づいて、タスクT1を復旧する。次に、図39の説明に移行する。
図39において、演算装置3411は、タスクT1により、蓄積したデータについて、所定のデータ処理を実施し、タスクT1の処理結果のデータを、タスクT3を実行する演算装置3414に送信する。
このように、演算装置3412は、構成変更メッセージ700を、構成変更メッセージ700以前のデータを追い越さないように、構成変更メッセージ700を、データストア3403に送信した。このため、演算装置3411に、構成変更メッセージ700が戻った際、構成変更メッセージ700以前のデータは、演算装置3414に送信済みである。従って、演算装置3411が、タスクT1の処理結果のデータを、演算装置3414に送信しても、データ順序は担保される。
これにより、制御装置101は、データ順序を担保しつつ、ストリーム処理基盤200の接続構成を、再投入構成から直接構成に変更することができる。このため、制御装置101は、直接構成時のタスクT3におけるバリアマーカの待ち時間が比較的小さいと判断されれば、演算装置3412からデータを、データストア3403に再投入することによる処理遅延を防止することができる。
また、制御装置101は、演算装置103間の接続関係が、情報処理システム100の起動時以外に変更することができない状況であっても、ストリーム処理基盤200の接続状態を、直接構成と再投入構成とで切り替えることができる。このため、制御装置101は、情報処理システム100の利便性の向上を図ることができる。
(実施例2における全体処理手順)
制御装置101が実行する、実施例2における全体処理手順の一例は、図28に示した、実施例1における全体処理手順の一例と同様であるため、説明を省略する。
(実施例2におけるタスク処理手順)
次に、図40および図41を用いて、演算装置103が実行する、実施例2におけるタスク処理手順の一例について説明する。タスク処理は、例えば、図11に示したCPU1101と、メモリ1102や記録媒体1105などの記憶領域と、ネットワークI/F1103とによって実現される。
図40および図41は、実施例2におけるタスク処理手順の一例を示すフローチャートである。図40において、演算装置103は、メッセージを受信するまで待機する(ステップS4001)。
次に、演算装置103は、メッセージの種別が、データメッセージ600であるか否かを判定する(ステップS4002)。ここで、データメッセージ600である場合(ステップS4002:Yes)、演算装置103は、ステップS4003の処理に移行する。一方で、データメッセージ600ではない場合(ステップS4002:No)、演算装置103は、図41のステップS4101の処理に移行する。
ステップS4003では、演算装置103は、自装置に上流タスクがあるか否かを判定する(ステップS4003)。ここで、上流タスクがある場合(ステップS4003:Yes)、演算装置103は、ステップS4004の処理に移行する。一方で、上流タスクがない場合(ステップS4003:No)、演算装置103は、ステップS4005の処理に移行する。
ステップS4004では、演算装置103は、通常処理を実行し、通常処理に従って、データメッセージ600を送信する(ステップS4004)。そして、演算装置103は、ステップS4001の処理に戻る。
ステップS4005では、演算装置103は、構成変更中フラグが、onであるか否かを判定する(ステップS4005)。ここで、onである場合(ステップS4005:Yes)、演算装置103は、ステップS4006の処理に移行する。一方で、onではなくoffである場合(ステップS4005:No)、演算装置103は、ステップS4007の処理に移行する。
ステップS4006では、演算装置103は、メッセージをタスク内部に蓄積する(ステップS4006)。そして、演算装置103は、ステップS4001の処理に戻る。
ステップS4007では、演算装置103は、メッセージを再投入送信タスクに送信する(ステップS4007)。そして、演算装置103は、ステップS4001の処理に戻る。ここで、図41の説明に移行する。
図41において、演算装置103は、メッセージの種別が、再投入構成に変更する構成変更メッセージ700であるか否かを判定する(ステップS4101)。ここで、再投入構成に変更する構成変更メッセージ700である場合(ステップS4101:Yes)、演算装置103は、ステップS4102の処理に移行する。一方で、再投入構成に変更する構成変更メッセージ700ではない場合(ステップS4101:No)、演算装置103は、ステップS4103の処理に移行する。
ステップS4102では、演算装置103は、上流タスクを、再投入送信タスクに送信する(ステップS4102)。そして、演算装置103は、ステップS4101の処理に戻る。
ステップS4103では、演算装置103は、構成変更中フラグが、onであるか否かを判定する(ステップS4103)。ここで、onである場合(ステップS4103:Yes)、演算装置103は、ステップS4104の処理に移行する。一方で、onではなくoffである場合(ステップS4103:No)、演算装置103は、ステップS4107の処理に移行する。
ステップS4104では、演算装置103は、上流タスクを復旧する(ステップS4104)。次に、演算装置103は、構成変更中フラグをoffに変更する(ステップS4105)。そして、演算装置103は、蓄積したメッセージに対し、通常処理を実行し、処理結果のメッセージを下流に送信する(ステップS4106)。その後、演算装置103は、ステップS4101の処理に戻る。
ステップS4107では、演算装置103は、構成変更メッセージ700を、再投入送信タスクに送信する(ステップS4107)。次に、演算装置103は、構成変更中フラグをonに変更する(ステップS4108)。そして、演算装置103は、ステップS4101の処理に戻る。
(実施例2における再投入処理手順)
次に、図42を用いて、演算装置103が実行する、実施例2における再投入処理手順の一例について説明する。再投入処理は、例えば、図11に示したCPU1101と、メモリ1102や記録媒体1105などの記憶領域と、ネットワークI/F1103とによって実現される。
図42は、実施例2における再投入処理手順の一例を示すフローチャートである。図42において、演算装置103は、メッセージを受信するまで待機する(ステップS4201)。
次に、演算装置103は、メッセージの種別が、構成変更メッセージ700であるか否かを判定する(ステップS4202)。ここで、構成変更メッセージ700である場合(ステップS4202:Yes)、演算装置103は、ステップS4203の処理に移行する。一方で、構成変更メッセージ700ではない場合(ステップS4202:No)、演算装置103は、ステップS4204の処理に移行する。
ステップS4203では、演算装置103は、メッセージに対し、通常処理を実行し、処理結果のメッセージを下流に送信する(ステップS4203)。そして、演算装置103は、ステップS4201の処理に戻る。
ステップS4204では、演算装置103は、メッセージの種別が、再投入構成に変更する構成変更メッセージ700であるか否かを判定する(ステップS4204)。ここで、再投入構成に変更する構成変更メッセージ700である場合(ステップS4204:Yes)、演算装置103は、ステップS4205の処理に移行する。一方で、再投入構成に変更する構成変更メッセージ700ではない場合(ステップS4204:No)、演算装置103は、ステップS4206の処理に移行する。
ステップS4205では、演算装置103は、自装置に、上流タスクを実装する(ステップS4205)。そして、演算装置103は、ステップS4201の処理に戻る。
ステップS4206では、演算装置103は、構成変更中フラグが、onであるか否かを判定する(ステップS4206)。ここで、onである場合(ステップS4206:Yes)、演算装置103は、ステップS4207の処理に移行する。一方で、onではなくoffである場合(ステップS4206:No)、演算装置103は、ステップS4209の処理に移行する。
ステップS4207では、演算装置103は、自装置の上流タスクを削除する(ステップS4207)。次に、演算装置103は、構成変更中フラグをoffに変更する(ステップS4208)。そして、演算装置103は、ステップS4201の処理に戻る。
ステップS4209では、演算装置103は、構成変更メッセージ700を再投入する(ステップS4209)。次に、演算装置103は、構成変更中フラグをonに変更する(ステップS4210)。そして、演算装置103は、ステップS4201の処理に戻る。
(実施例2における受信処理手順)
次に、図43を用いて、演算装置103が実行する、実施例2における受信処理手順の一例について説明する。受信処理は、例えば、図11に示したCPU1101と、メモリ1102や記録媒体1105などの記憶領域と、ネットワークI/F1103とによって実現される。
図43は、実施例2における受信処理手順の一例を示すフローチャートである。図43において、演算装置103は、メッセージを受信するまで待機する(ステップS4301)。
次に、演算装置103は、メッセージの種別が、構成変更メッセージ700であるか否かを判定する(ステップS4302)。ここで、構成変更メッセージ700である場合(ステップS4302:Yes)、演算装置103は、ステップS4303の処理に移行する。一方で、構成変更メッセージ700ではない場合(ステップS4302:No)、演算装置103は、ステップS4304の処理に移行する。
ステップS4303では、演算装置103は、上流タスクと、再投入送信タスクとに構成変更メッセージ700を送信する(ステップS4303)。そして、演算装置103は、ステップS4301の処理に戻る。
ステップS4304では、演算装置103は、メッセージを下流タスクに送信する(ステップS4304)。そして、演算装置103は、ステップS4301の処理に戻る。
以上説明したように、制御装置101によれば、内部状態のバックアップを指示するメッセージを、それぞれのデータストア201から出力させることができる。制御装置101によれば、第2の処理部412が、メッセージを、第2の処理部412へとデータが入力される経路の数分だけ受信するまでの待ち時間に関する情報を取得することができる。制御装置101によれば、取得した情報に基づいて、待ち時間が第1の閾値以上であるか否かを判定することができる。制御装置101によれば、第1の閾値以上であると判定した場合、第1の構成から、第2の構成へと切り替えることができる。第1の構成は、第1の処理部411から第2の処理部412までの経路上に第3のデータストア403を含まない構成である。第2の構成は、第1の処理部411から第2の処理部412までの経路上に第3のデータストア403を含む構成である。これにより、制御装置101は、第2の処理部412におけるメッセージの待ち時間の低減化を図ることができる。
制御装置101によれば、取得した情報に基づいて、待ち時間が第2の閾値未満であるか否かを判定することができる。制御装置101によれば、第2の閾値未満であると判定した場合、第2の構成から、第1の構成へと切り替えることができる。これにより、制御装置101は、第1の処理部411から第2の処理部412までの経路上の送信遅延の低減化を図ることができる。
制御装置101によれば、第1の閾値以上であると判定した場合、第1の処理部411の出力先を、第2の処理部412から、第1の中継部へと切り替えることができる。これにより、制御装置101は、処理部の接続関係を変更する手法で、第2の処理部412におけるメッセージの待ち時間の低減化を図ることができる。
制御装置101によれば、第2の閾値未満であると判定した場合、第1の処理部411の出力先を、第1の中継部から、第2の処理部412へと切り替えることができる。これにより、制御装置101は、処理部の接続関係を変更する手法で、第1の処理部411から第2の処理部412までの経路上の送信遅延の低減化を図ることができる。
制御装置101によれば、第2の閾値未満であると判定した場合、第1の処理部411の出力先を、第2の処理部412に切り替える要求を、第1のデータストア201から出力させることができる。これにより、制御装置101は、データ順序を担保しつつ、第1の処理部411から第2の処理部412までの経路上の送信遅延の低減化を図ることができる。
制御装置101によれば、第1の閾値以上であると判定した場合、第1のタスク202を、第1の演算装置103から、第1のタスク202を実行可能な第3の演算装置103に移動させることができる。これにより、制御装置101は、演算装置103間でタスク202を移動する手法で、第2の処理部412におけるメッセージの待ち時間の低減化を図ることができる。
制御装置101によれば、第2の閾値未満であると判定した場合、第1のタスク202を、第3の演算装置103から、第1の演算装置103に移動させることができる。これにより、制御装置101は、演算装置103間でタスク202を移動する手法で、第1の処理部411から第2の処理部412までの経路上の送信遅延の低減化を図ることができる。
制御装置101によれば、第2の閾値未満であると判定した場合、第1のタスク202を、第3の演算装置103から、第1の演算装置103に移動させる要求を、第1のデータストア201から出力させることができる。これにより、制御装置101は、データ順序を担保しつつ、第1の処理部411から第2の処理部412までの経路上の送信遅延の低減化を図ることができる。
制御装置101によれば、第1の構成に、第3のデータストア403を含まない第1の処理部411から第2の処理部412までの経路を採用することができる。制御装置101によれば、第2の構成に、第1の構成に採用した経路と第2の処理部412で合流する、第3のデータストア403を含む第1の処理部411から第2の処理部412までの経路を採用することができる。これにより、制御装置101は、第2の処理部412に、メッセージの待ち合わせが発生する処理部を採用することができる。
制御装置101によれば、第1の閾値以上であると判定した場合、第3のデータストア403を生成し、第1の構成から、第2の構成へと切り替えることができる。これにより、制御装置101は、第3のデータストア403を実現するリソースを、第3のデータストア403を用いない状況では別用途に利用可能にすることができる。
制御装置101によれば、メッセージが、複数のデータストア201のいずれかのデータストア201から出力された後、いずれかのデータストア201とは異なる他のデータストア201へは入力されずに破棄されるように制御することができる。これにより、制御装置101は、第2の処理部412に、辿り着かなくてよいメッセージが、誤って辿り着くことを防止することができる。
情報処理システム100によれば、制御装置101と、複数のデータストア201と、複数の処理部とを含み、ストリーム処理形式でデータを処理することができる。それぞれの処理部によれば、内部状態のバックアップを指示するメッセージを受信することができる。それぞれの処理部によれば、メッセージを、処理部へとデータが入力される経路の数分だけ受信したことに応じて、処理部の内部状態のバックアップを実施すると共に、処理部からデータが出力されるそれぞれの経路にメッセージを出力することができる。第1のデータストア201によれば、第1の処理部411へと接続される経路にデータを出力することができる。第2のデータストア201によれば、第2の処理部412へと接続される経路にデータを出力することができる。第1の処理部411によれば、複数のデータストア201のうち第3のデータストア403を含む、第1の処理部411から第2の処理部412への経路に、第1の処理部411の処理結果のデータを出力することができる。制御装置101によれば、メッセージを、それぞれのデータストア201から出力させることができる。これにより、情報処理システム100は、第2の処理部412におけるメッセージの待ち時間の低減化を図ることができる。
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO、DVD(Digital Versatile Disk)などである。また、本実施の形態で説明した情報処理プログラムは、インターネットなどのネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)制御装置と、複数のデータストアと、複数の処理部とを含み、ストリーム処理形式でデータが処理される情報処理システムであって、
前記複数の処理部のそれぞれの処理部は、
内部状態のバックアップを指示するメッセージを、前記処理部へとデータが入力される経路の数分だけ受信したことに応じて、前記処理部の内部状態のバックアップを実施すると共に、前記処理部からデータが出力されるそれぞれの経路に前記メッセージを出力し、
前記複数のデータストアのうち第1のデータストアは、
前記複数の処理部のうち第1の処理部へと接続される経路にデータを出力し、
前記複数のデータストアのうち第2のデータストアは、
前記複数の処理部のうち第2の処理部へと接続される経路にデータを出力し、
前記制御装置は、
前記メッセージを前記複数のデータストアのそれぞれのデータストアから出力させ、
前記第2の処理部が、前記第2の処理部へとデータが入力される経路の数分だけ前記メッセージを受信するまでの待ち時間に関する情報を取得し、
取得した前記情報に基づいて、前記待ち時間が第1の閾値以上であるか否かを判定し、
前記第1の閾値以上であると判定した場合、前記第1の処理部から前記第2の処理部までの経路上に第3のデータストアを含まない第1の構成から、前記第1の処理部から前記第2の処理部までの経路上に前記第3のデータストアを含む第2の構成へと切り替える、
ことを特徴とする情報処理システム。
(付記2)前記制御装置は、
取得した前記情報に基づいて、前記待ち時間が第2の閾値未満であるか否かを判定し、
前記第2の閾値未満であると判定した場合、前記第2の構成から、前記第1の構成へと切り替える、ことを特徴とする付記1に記載の情報処理システム。
(付記3)さらに、前記第1の処理部から前記第3のデータストアまでの経路上に、入力されたデータを出力する第1の中継部が含まれ、
前記制御装置は、
前記第1の閾値以上であると判定した場合、前記第1の処理部の出力先を、前記第2の処理部から、前記第1の中継部へと切り替える、ことを特徴とする付記1または2に記載の情報処理システム。
(付記4)前記制御装置は、
前記第2の閾値未満であると判定した場合、前記第1の処理部の出力先を、前記第1の中継部から、前記第2の処理部へと切り替える、ことを特徴とする付記3に記載の情報処理システム。
(付記5)さらに、前記第3のデータストアから前記第2の処理部までの経路上に、入力されたデータを出力する第2の中継部が含まれ、
前記制御装置は、
前記第2の閾値未満であると判定した場合、前記第1の処理部の出力先を、前記第2の処理部に切り替える要求を、前記第1のデータストアから出力させ、
前記第2の中継部は、
入力された前記要求を前記第1の処理部と前記第1の中継部とに出力し、
前記第1の中継部は、
前記要求以降に、前記第1の中継部に入力されたデータを蓄積し、前記第2の中継部から前記要求が入力された場合、蓄積した前記データを前記第2の処理部に出力し、
前記第1の処理部は、
前記第2の中継部から前記要求が入力された後に、前記第1の処理部の出力先を、前記第1の中継部から、前記第2の処理部へと切り替える、ことを特徴とする付記4に記載の情報処理システム。
(付記6)前記第1の処理部は、
第1の演算装置で実行され、所定のデータ処理を実施する第1のタスクであり、
前記第2の処理部は、
第2の演算装置で実行され、所定のデータ処理を実施する第2のタスクであり、
前記第1の演算装置は、
前記第2の演算装置への経路に接続し、前記第1のタスクを実行する場合、前記第1のタスクの処理結果のデータを、前記第2の演算装置への経路に送信し、
前記制御装置は、
前記第1の閾値以上であると判定した場合、前記第1のタスクを、前記第1の演算装置から、前記第1のタスクを実行可能な第3の演算装置に移動させ、
前記第1の演算装置は、
前記第3の演算装置への経路に接続し、前記第1のタスクを実行しない場合、受信したデータを、前記第3の演算装置への経路に送信し、
前記第3の演算装置は、
前記第3のデータストアへの経路に接続し、前記第1のタスクを実行する場合、前記第1のタスクの処理結果のデータを、前記第3のデータストアへの経路に送信し、
前記第3のデータストアは、
第4の演算装置への経路に接続し、受信したデータを、前記第4の演算装置への経路に送信し、
前記第4の演算装置は、
前記第2の演算装置への経路に接続し、受信したデータを、前記第2の演算装置への経路に送信する、ことを特徴とする付記1または2に記載の情報処理システム。
(付記7)前記制御装置は、
前記第2の閾値未満であると判定した場合、前記第1のタスクを、前記第3の演算装置から、前記第1の演算装置に移動させる、ことを特徴とする付記6に記載の情報処理システム。
(付記8)前記制御装置は、
前記第2の閾値未満であると判定した場合、前記第1のタスクを、前記第3の演算装置から、前記第1の演算装置に移動させる要求を、前記第1のデータストアから出力させ、
前記第1の演算装置は、
前記要求を受信した場合、受信した前記要求を、前記第3の演算装置への経路に送信し、前記要求以降に受信したデータを蓄積し、
前記第3の演算装置は、
前記要求を受信した場合、前記第1のタスクを終了し、前記第1のタスクの処理内容を規定した処理情報を、前記第3のデータストアへの経路に送信し、
前記第3のデータストアは、
受信した前記処理情報を、前記第4の演算装置への経路に送信し、
前記第4の演算装置は、
前記第1の演算装置への送信経路に接続し、受信した前記処理情報を、前記第1の演算装置への経路に送信し、
前記第1の演算装置は、
前記処理情報を受信した場合、受信した前記処理情報に基づいて、前記第1のタスクを実行し、前記要求以降に受信したデータに基づいて、前記第1のタスクの処理結果のデータを、第2の演算装置への経路に送信する、ことを特徴とする付記7に記載の情報処理システム。
(付記9)前記第1の構成における、前記第3のデータストアを含まない前記第1の処理部から前記第2の処理部までの経路と、前記第2の構成における、前記第3のデータストアを含む前記第1の処理部から前記第2の処理部までの経路とは、前記第2の処理部で合流する、ことを特徴とする付記1~8のいずれか一つに記載の情報処理システム。
(付記10)前記制御装置は、
前記第1の閾値以上であると判定した場合、前記第3のデータストアを生成し、前記第1の構成から、前記第2の構成へと切り替える、ことを特徴とする付記1~9のいずれか一つに記載の情報処理システム。
(付記11)前記メッセージは、前記複数のデータストアのいずれかのデータストアから出力された後、前記いずれかのデータストアとは異なる他のデータストアへは入力されずに破棄される、ことを特徴とする付記1~10のいずれか一つに記載の情報処理システム。
(付記12)制御装置と、複数のデータストアと、複数の処理部とを含み、ストリーム処理形式でデータが処理される情報処理システムにおいて、
前記複数の処理部のそれぞれの処理部が、
内部状態のバックアップを指示するメッセージを、前記処理部へとデータが入力される経路の数分だけ受信したことに応じて、前記処理部の内部状態のバックアップを実施すると共に、前記処理部からデータが出力されるそれぞれの経路に前記メッセージを出力し、
前記複数のデータストアのうち第1のデータストアが、
前記複数の処理部のうち第1の処理部へと接続される経路にデータを出力し、
前記複数のデータストアのうち第2のデータストアが、
前記複数の処理部のうち第2の処理部へと接続される経路にデータを出力し、
前記制御装置が、
前記メッセージを前記複数のデータストアのそれぞれのデータストアから出力させ、
前記第2の処理部が、前記第2の処理部へとデータが入力される経路の数分だけ前記メッセージを受信するまでの待ち時間に関する情報を取得し、
取得した前記情報に基づいて、前記待ち時間が第1の閾値以上であるか否かを判定し、
前記第1の閾値以上であると判定した場合、前記第1の処理部から前記第2の処理部までの経路上に第3のデータストアを含まない第1の構成から、前記第1の処理部から前記第2の処理部までの経路上に前記第3のデータストアを含む第2の構成へと切り替える、
処理を実行することを特徴とする情報処理方法。
(付記13)制御装置と、複数のデータストアと、複数の処理部とを含み、
前記複数の処理部のそれぞれの処理部が、内部状態のバックアップを指示するメッセージを、前記処理部へとデータが入力される経路の数分だけ受信したことに応じて、前記処理部の内部状態のバックアップを実施すると共に、前記処理部からデータが出力されるそれぞれの経路に前記メッセージを出力し、
前記複数のデータストアのうち第1のデータストアが、前記複数の処理部のうち第1の処理部へと接続される経路にデータを出力し、
前記複数のデータストアのうち第2のデータストアが、前記複数の処理部のうち第2の処理部へと接続される経路にデータを出力する、ストリーム処理形式でデータが処理される情報処理システムにおいて、
前記制御装置に、
前記メッセージを前記複数のデータストアのそれぞれのデータストアから出力させ、
前記第2の処理部が、前記第2の処理部へとデータが入力される経路の数分だけ前記メッセージを受信するまでの待ち時間に関する情報を取得し、
取得した前記情報に基づいて、前記待ち時間が第1の閾値以上であるか否かを判定し、
前記第1の閾値以上であると判定した場合、前記第1の処理部から前記第2の処理部までの経路上に第3のデータストアを含まない第1の構成から、前記第1の処理部から前記第2の処理部までの経路上に前記第3のデータストアを含む第2の構成へと切り替える、
処理を実行させることを特徴とする情報処理プログラム。
(付記14)制御装置と、複数のデータストアと、複数の処理部とを含み、ストリーム処理形式でデータが処理される情報処理システムであって、
前記複数の処理部のそれぞれの処理部は、
内部状態のバックアップを指示するメッセージを、前記処理部へとデータが入力される経路の数分だけ受信したことに応じて、前記処理部の内部状態のバックアップを実施すると共に、前記処理部からデータが出力されるそれぞれの経路に前記メッセージを出力し、
前記複数のデータストアのうち第1のデータストアは、
前記複数の処理部のうち第1の処理部へと接続される経路にデータを出力し、
前記複数のデータストアのうち第2のデータストアは、
前記複数の処理部のうち第2の処理部へと接続される経路にデータを出力し、
前記第1の処理部は、
前記複数のデータストアのうち第3のデータストアを含む、前記第1の処理部から前記第2の処理部への経路に、前記第1の処理部の処理結果のデータを出力し、
前記制御装置は、
前記メッセージを前記複数のデータストアのそれぞれのデータストアから出力させる、
ことを特徴とする情報処理システム。
(付記15)制御装置と、複数のデータストアと、複数の処理部とを含み、ストリーム処理形式でデータが処理される情報処理システムにおいて、
前記複数の処理部のそれぞれの処理部が、
内部状態のバックアップを指示するメッセージを、前記処理部へとデータが入力される経路の数分だけ受信したことに応じて、前記処理部の内部状態のバックアップを実施すると共に、前記処理部からデータが出力されるそれぞれの経路に前記メッセージを出力し、
前記複数のデータストアのうち第1のデータストアが、
前記複数の処理部のうち第1の処理部へと接続される経路にデータを出力し、
前記複数のデータストアのうち第2のデータストアが、
前記複数の処理部のうち第2の処理部へと接続される経路にデータを出力し、
前記第1の処理部が、
前記複数のデータストアのうち第3のデータストアを含む、前記第1の処理部から前記第2の処理部への経路に、前記第1の処理部の処理結果のデータを出力し、
前記制御装置が、
前記メッセージを前記複数のデータストアのそれぞれのデータストアから出力させる、
処理を実行することを特徴とする情報処理方法。
(付記16)制御装置と、複数のデータストアと、複数の処理部とを含み、
前記複数の処理部のそれぞれの処理部が、内部状態のバックアップを指示するメッセージを、前記処理部へとデータが入力される経路の数分だけ受信したことに応じて、前記処理部の内部状態のバックアップを実施すると共に、前記処理部からデータが出力されるそれぞれの経路に前記メッセージを出力し、
前記複数のデータストアのうち第1のデータストアが、前記複数の処理部のうち第1の処理部へと接続される経路にデータを出力し、
前記複数のデータストアのうち第2のデータストアが、前記複数の処理部のうち第2の処理部へと接続される経路にデータを出力し、
前記第1の処理部が、前記複数のデータストアのうち第3のデータストアを含む、前記第1の処理部から前記第2の処理部への経路に、前記第1の処理部の処理結果のデータを出力する、ストリーム処理形式でデータが処理される情報処理システムにおいて、
前記制御装置に、
前記メッセージを前記複数のデータストアのそれぞれのデータストアから出力させる、
処理を実行させることを特徴とする情報処理プログラム。