(57)【要約】処理負荷の変動が頻繁な場合でもタスク割当先を正しく判定する分散処理システムを提供する。分散処理システムは、入力情報を解析する解析ノードと、解析ノードにネットワークを介して接続され、解析ノードの性能を表す性能情報を保持する管理ノードと、を含む。管理ノードは、当該管理ノードに接続されている解析ノードに関する性能情報を統合する性能情報統合部を有する。解析ノードは、当該解析ノードに関する性能情報に基づいて算出した、当該解析ノードにおいてタスクを実行する第１のコストと、性能情報統合部により統合された当該解析ノードとは異なる他の解析ノードに関する性能情報に基づいて算出した、他の解析ノードへタスクを分散して実行する負荷分散のコストを表す第２のコストと、に基づいて、タスクを当該解析ノードにおいて実行するか、又は他の解析ノードへタスクを分散して実行するかを決定するタスク決定部を有する。
2018061825.tif 000002
【特許請求の範囲】
【請求項１】
入力情報を解析する解析ノードと、
前記解析ノードにネットワークを介して接続され、前記解析ノードの性能を表す性能情報を保持する管理ノードと、を含み、
前記管理ノードは、当該管理ノードに接続されている前記解析ノードに関する前記性能情報を統合する性能情報統合手段を有し、
前記解析ノードは、
当該解析ノードに関する前記性能情報に基づいて算出した、当該解析ノードにおいてタスクを実行する第１のコストと、
前記性能情報統合手段により統合された当該解析ノードとは異なる他の前記解析ノードに関する前記性能情報に基づいて算出した、他の前記解析ノードへ前記タスクを分散して実行する負荷分散のコストを表す第２のコストと、に基づいて、
前記タスクを当該解析ノードにおいて実行するか、又は他の前記解析ノードへ前記タスクを分散して実行するかを決定するタスク決定手段を有する
分散処理システム。
【請求項２】
前記解析ノードにおける前記タスク決定手段は、
前記タスクが、前記入力情報から対象物を検出する処理である１次処理と、前記対象物について分析する処理である２次処理とを含む場合、前記１次処理を実行した後に、当該解析ノードにおいて前記２次処理を実行するか、又は、他の前記解析ノードへ前記２次処理を分散して実行するかを決定する
請求項１記載の分散処理システム。
【請求項３】
前記管理ノードは、前記解析ノードにより負荷分散される前記タスクを格納するタスク格納手段を更に有し、
前記解析ノードは、自身の資源に余剰がある場合に、前記タスク格納手段に格納されている前記タスクを実行するタスク実行手段を更に有する
請求項１又は２に記載の分散処理システム。
【請求項４】
前記性能情報統合手段は、前記性能情報を統計演算することにより、前記性能情報を統合する
請求項１乃至３のうちいずれか１項に記載の分散処理システム。
【請求項５】
前記性能情報統合手段は、
前記性能情報と、
前記タスク格納手段に格納されるタスク数、入力量、及び、出力量のいずれか又はその組み合わせと、を用いて、前記性能情報を統合する
請求項３に記載の分散処理システム。
【請求項６】
前記タスク決定手段は、
前記性能情報に含まれる、前記タスクを実行する場合の通信遅延時間と、処理遅延時間と、を用いて前記第１のコストを算出し、
統合された前記性能情報に含まれる、他の前記解析ノードへ前記タスクを分散して実行する場合の通信遅延時間と、処理遅延時間と、を用いて前記第２のコストを算出する
請求項１乃至５のうちいずれか１項に記載の分散処理システム。
【請求項７】
前記タスク決定手段は、
ある時点より過去のある期間における前記第１のコストの推移を表す前記第１のコストの履歴を用いて、ある時点における前記第１のコストを算出し、
ある時点より過去のある期間における前記第２のコストの推移を表す前記第２のコストの履歴を用いて、ある時点における前記第２のコストを算出する
請求項１乃至６のうちいずれか１項に記載の分散処理システム。
【請求項８】
前記性能情報は、前記解析ノードのスループットとネットワーク遅延とを含む
請求項１乃至７のうちいずれか１項に記載の分散処理システム。
【請求項９】
解析ノードが、
入力情報を解析し、
当該解析ノード自身の性能を表す性能情報に基づいて当該解析ノード自身がタスクを実行する第１のコストを算出し、
ネットワークを介して自身に接続されている１以上の前記解析ノードに関する性能情報を保持する管理ノードにより統合された、他の前記解析ノードに関する性能情報に基づいて、他の前記解析ノードへ前記タスクを分散して実行する負荷分散のコストを表す第２のコストを算出し、
算出した前記第１のコスト及び第２のコストに基づいて、当該解析ノード自身が前記タスクを実行するか、又は、他の前記解析ノードへ前記タスクの負荷分散を実行するかを決定する
分散解析方法。
【請求項１０】
解析ノードとして機能するコンピュータに、
入力情報を解析する処理と、
当該コンピュータ自身の性能を表す性能情報に基づいて、当該コンピュータ自身がタスクを実行する第１のコストを算出する処理と、
ネットワークを介して自身に接続されている１以上の前記解析ノードに関する性能情報を保持する管理ノードにより統合された、他の前記解析ノードに関する性能情報に基づいて、他の前記解析ノードへ前記タスクを分散して実行する負荷分散のコストを表す第２のコストを算出する処理と、
算出した前記第１のコスト及び前記第２のコストに基づいて、当該コンピュータ自身が前記タスクを実行するか、又は、他の前記解析ノードへ前記タスクの負荷分散を実行するかを決定する処理と、を実行させるプログラムが記録された
記録媒体。
【請求項１１】
入力情報からタスクを生成するタスク生成手段と、
自装置の性能情報と、他の分散処理装置の性能情報が統合された統合性能情報と、を取得する性能情報取得手段と、
自装置の前記性能情報に基づいて算出した、自装置において前記タスクを実行するコストを表す第１のコストと、前記統合性能情報に基づいて算出した、他の前記分散処理装置へ前記タスクを分散して実行するコストを表す第２のコストと、に基づいて、前記タスクを自装置において実行するか、又は他の前記分散処理装置へ前記タスクを負荷して実行するかを決定するタスク決定手段と、を備える
分散処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像ストリームの分散処理環境に用いる分散処理システム、分散処理方法、及びプログラム等に関する。
【背景技術】
【０００２】
ネットワーク構成を複雑化することなく、タスクを効率的に分散処理する技術が、特許文献１に開示されている。特許文献１には、ある情報処理装置の処理能力と処理負荷とを含む処理関連情報を周辺の情報処理装置へ配信し、周辺の装置からの処理関連情報を収集することで、ある情報処理装置でタスクを処理するか、そのタスクを他の周辺装置へ送信するかを決定する技術が記載されている。特許文献１に開示の技術は、ある情報処理装置でタスクを処理する場合は、タスクをその情報処理装置のタスク処理部へ送り、タスクを他の周辺装置へ送信する場合は、他の周辺装置のタスク受付部へタスクを送信し、処理を依頼する構成を含む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１０２６９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示された技術は、周辺装置の処理関連情報を収集し、周辺装置の処理関連情報を取得し、タスクを該情報処理装置で処理するか、他の周辺装置へ送信するかを決定する。ここで、特許文献１に開示された技術における、タスクの割当を決定する処理は、周辺装置における処理関連情報の変動周期よりも高頻度に、周辺装置の処理関連情報の収集を行うことが前提となっている。【０００５】
しかしながら、例えば、映像ストリームの分散処理環境においては、各装置の処理負荷の周期や変動幅が大きく、処理負荷が頻繁に変動する場合がある。このような場合、特許文献１に開示された技術は、処理関連情報の変動周期よりも早く、周辺装置の処理関連情報を収集することができないことがある。したがって、特許文献１に開示された技術は、各装置の処理負荷が頻繁に変動する場合、処理関連情報の収集が間に合わず、タスクの割当先を正しく判定できないという課題がある。【０００６】
本発明の目的の一例は、上述した課題を解決し、処理負荷が頻繁に変動する場合であってもタスクの割当先を正しく判定可能な分散処理システム、分散処理方法、及びプログラム等を提供することである。
【課題を解決するための手段】
【０００７】
本発明の一態様における分散処理システムは、以下のように構成される。即ち、本開示の一態様における分散処理システムは、入力情報を解析する解析ノードと、上記解析ノードにネットワークを介して接続され、上記解析ノードの性能を表す性能情報を保持する管理ノードと、を含む。上記管理ノードは、当該管理ノードに接続されている上記解析ノードに関する上記性能情報を統合する性能情報統合部を有する。上記解析ノードは、当該解析ノードに関する上記性能情報に基づいて算出した、当該解析ノードにおいてタスクを実行する第１のコストと、上記性能情報統合部により統合された当該解析ノードとは異なる他の上記解析ノードに関する上記性能情報に基づいて算出した、他の上記解析ノードへ上記タスクを分散して実行する負荷分散のコストを表す第２のコストと、に基づいて、上記タスクを当該解析ノードにおいて実行するか、又は他の上記解析ノードへ上記タスクを分散して実行するかを決定するタスク決定部を有する。【０００８】
本発明の一態様における分散処理方法は、解析ノードが、入力情報を解析すること、当該解析ノード自身の性能を表す性能情報に基づいて当該解析ノード自身がタスクを実行する第１のコストを算出すること、ネットワークを介して自身に接続されている１以上の上記解析ノードに関する性能情報を保持する管理ノードにより統合された、他の上記解析ノードに関する性能情報に基づいて、他の上記解析ノードへ上記タスクを分散して実行する負荷分散のコストを表す第２のコストを算出すること、及び、算出した上記第１のコスト及び第２のコストに基づいて、当該解析ノード自身が上記タスクを実行するか、又は、他の上記解析ノードへ上記タスクの負荷分散を実行するかを決定すること、を含む。【０００９】
本発明の一態様におけるプログラムは、解析ノードとして機能するコンピュータに、
入力情報を解析する処理と、当該コンピュータ自身の性能を表す性能情報に基づいて、当該コンピュータ自身がタスクを実行する第１のコストを算出する処理と、ネットワークを介して自身に接続されている１以上の上記解析ノードに関する性能情報を保持する管理ノードにより統合された、他の上記解析ノードに関する性能情報に基づいて、他の上記解析ノードへ上記タスクを分散して実行する負荷分散のコストを表す第２のコストを算出する処理と、算出した上記第１のコスト及び上記第２のコストに基づいて、当該コンピュータ自身が上記タスクを実行するか、又は、他の上記解析ノードへ上記タスクの負荷分散を実行するかを決定する処理と、を実行させる。【００１０】
なお、上記した本発明の目的は、上記コンピュータプログラムが記録された記録媒体により達成されてもよい。【００１１】
また、本発明の一態様における、解析ノードを実現可能な分散処理装置は、入力情報からタスクを生成するタスク生成部と、自装置の性能情報と、他の分散処理装置の性能情報が統合された統合性能情報と、を取得する性能情報取得部と、自装置の上記性能情報に基づいて算出した、自装置において上記タスクを実行するコストを表す第１のコストと、上記統合性能情報に基づいて算出した、他の上記分散処理装置へ上記タスクを分散して実行するコストを表す第２のコストと、に基づいて、上記タスクを自装置において実行するか、又は他の上記分散処理装置へ上記タスクを負荷して実行するかを決定するタスク決定部と、を備える。
【発明の効果】
【００１２】
本発明によれば、処理負荷の変動が頻繁な場合でもタスクの割当先を正しく判定できる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の第１の実施形態における分散処理システムの運用形態の例を示す図である。
【図２】図２は、本実施形態における解析ノード等を実現するコンピュータ装置のハードウェア構成を示すブロック図である。
【図３】図３は、本発明の第１の実施形態における分散処理システムの機能構成を示すブロック図である。
【図４】図４は、本発明の第１の実施形態における解析ノードの性能情報の一例を示す図である。
【図５】図５は、本発明の第１の実施形態における統合性能情報の一例を示す図である。
【図６】図６は、本発明の第１の実施形態における余剰タスクの一例を示す図である。
【図７】図７は、本発明の第１の実施形態における分散処理システムの動作例を示すフローチャートである。
【図８】図８は、本発明の第１の実施形態における統合性能情報生成処理の動作例を示すフローチャートである。
【図９】図９は、本発明の第１の実施形態におけるタスク割当決定処理の動作例を示すフローチャートである。
【図１０】図１０は、本発明の第１の実施形態における余剰処理能力判定処理の動作例を示すフローチャートである。
【図１１】図１１は、本発明の第２の実施形態における分散処理システムの機能構成を示すブロック図である。
【図１２】図１２は、本発明の第２の実施形態における統合性能情報の一例を示す図である。
【図１３】図１３は、本発明の第２の実施形態における統合性能情報生成処理の動作例を示すフローチャートである。
【図１４】図１４は、本発明の第３の実施形態における分散処理システムの機能構成を示すブロック図である。
【図１５】図１５は、本発明の第３の実施形態におけるタスク割当決定処理の動作例を示すフローチャートである。
【図１６】図１６は、本発明の第３の実施形態における余剰処理能力判定処理の動作例を示すフローチャートである。
【図１７】図１７は、本発明の実施形態における分散処理システムの概略構成図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、本発明の実施形態を説明するが、本発明は本実施形態に限定されるものではない。なお、以下で説明する図面で、同機能を有する要素には同一符号を付し、重複する説明は省略することもある。
【００１５】
本実施形態においては、具体例として、以下のような構成を有する解析ノード100及び管理ノード２００を有する分散処理システム１０を説明する。即ち、ある解析ノード１００が、管理ノード２００に接続される他の解析ノード１００（以降、「近傍の解析ノード１００」と記載）の性能情報に基づいてタスクを実行するコストを算出するよう構成される。また、係る解析ノード１００は、管理ノード２００により統合される性能情報に基づいて、近傍の解析ノード１００へタスクを分散（負荷分散）するコストを算出するよう構成される。係る解析ノード１００は、算出した第１及び第２のコストに基づいて、タスクを自解析ノード１００で実行するか、又は、近傍の解析ノード１００へタスクの負荷を分散するかを決定する。
【００１６】
図１は、本発明の第１の実施形態における分散処理システム１０の運用形態の例を示す図である。図１に示すように、本実施形態における分散処理システム１０は、解析ノード１００と管理ノード２００とが、インターネットやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワーク（以降、ネットワーク３００と記載）を介して接続されている。分散処理システム１０には、複数の解析ノード１００及び管理ノード２００が含まれてよい。各解析ノード１００は１つ以上の管理ノード２００と接続される。なお、近傍の解析ノード１００は、ある特定の解析ノード１００（以降、「対象の解析ノード１００」と記載することがある）に接続される管理ノード２００（以降、「対象の管理ノード２００」と記載することがある）と接続された、他の解析ノード１００である。例えば、近傍の解析ノード１００は、対象の管理ノード２００と接続する１以上の他の解析ノード１００である。図１に示す分散処理システム１０の具体例において、対象の解析ノード１００が解析ノードＡである場合、管理ノードＡが対象の管理ノード２００であり、解析ノードＢ、解析ノードＤ及び解析ノードＥが近傍の解析ノード１００である。
【００１７】
解析ノード１００は、プログラム制御により入力情報を解析するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置である。
【００１８】
管理ノード２００は、解析ノード１００にネットワークを介して接続されており、解析ノード１００の性能情報を管理するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置である。
【００１９】
次に、本実施形態における分散処理システム１０に含まれる解析ノード１００、管理ノード２００などの各装置を構成するハードウェアについて説明する。図２は、本実施形態における解析ノード１００、管理ノード２００などの各装置を実現するコンピュータ装置５００のハードウェア構成を示すブロック図である。
【００２０】
図２に示すように、コンピュータ装置５００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３と、記憶装置５０４と、ドライブ装置５０５と、通信インタフェース５０６と、入出力インタフェース５０７とを備える。
【００２１】
ＣＰＵ５０１は、ＲＡＭ５０３を用いてプログラム５０８を実行する。プログラム５０８は、ＲＯＭ５０２に記憶されていてもよい。また、プログラム５０８は、記録媒体５０９に記録され、ドライブ装置５０５によって読み出されてもよく、外部装置からネットワーク５１０を介して送信されてもよい。通信インタフェース５０６は、ネットワーク５１０を介して外部装置とデータを送受信する。入出力インタフェース５０７は、周辺機器（キーボード、マウス、表示装置など）とデータをやり取りする。通信インタフェース５０６及び入出力インタフェース５０７は、データを取得又は出力する手段として機能することができる。出力情報などのデータは、記憶装置５０４に記憶されていてもよいし、プログラム５０８に含まれていてもよい。
【００２２】
なお、以下の実施形態の機能を実現するように該実施形態の構成を動作させるプログラム（より具体的には、図７、図８、図９、図１０、図１３、図１５、図１６等に示す処理をコンピュータに実行させるプログラム）を記録媒体に記録させ、該記録媒体に記録されたプログラムをコードとして読み出し、コンピュータにおいて実行する処理方法も各実施形態の範疇に含まれる。すなわち、コンピュータ読取可能な記録媒体も各実施形態の範囲に含まれる。また、上述のプログラムが記録された記録媒体はもちろん、そのプログラム自体も各実施形態に含まれる。
【００２３】
該記録媒体としては例えばフロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性メモリカード、ＲＯＭを用いることができる。また該記録媒体に記録されたプログラム単体で処理を実行する形態に限らず、他のソフトウェア、拡張ボードの機能と共同して、ＯＳ上で動作して処理を実行する形態も各実施形態の範疇に含まれる。
【００２４】
＜第１の実施形態＞
次に、本実施形態における分散処理システム１０の機能について説明する。図３は、本実施形態における分散処理システム１０の機能構成を示すブロック図である。図３に示すブロックは単一の装置内に実装されてよく、あるいは複数の装置に別れて実装されてよい。ブロック間のデータの授受は、データバス、ネットワーク、可搬記憶媒体等、任意の方法を用いて行われてよい。
【００２５】
図３に示すように、本実施形態における分散処理システム１０は、解析ノード１００と管理ノード２００とを備える。解析ノード１００と管理ノード２００とは、ネットワーク３００を介して接続される。
【００２６】
本実施形態における解析ノード１００は、タスク生成部１０１と、タスク決定部１０２と、性能情報管理部１０３と、タスク実行部１０４と、余剰判定部１０５と、タスク送受信部１０６と、性能情報送受信部１０７とを含む。本実施形態における管理ノード２００は、性能情報送受信部２０１と、性能情報記憶部２０２と、性能情報統合部２０３と、タスク送受信部２０４と、タスク記憶部２０５とを含む。
【００２７】
タスク生成部１０１は、解析ノード１００が処理するタスクを生成する。タスクは、解析ノード１００で行われる処理（解析処理）である。具体的には、タスクは、例えば、画像に含まれる人間の顔認識処理、顔認識した人物の性別判別処理、等を含んでよい。タスク生成部１０１は、例えば、外部装置から入力される入力情報を受け付け、入力情報に基づくタスクを生成する。外部装置は、例えば、監視カメラやセンサである。入力情報は、例えば、監視カメラからの映像データやセンサからのデータである。
【００２８】
タスク決定部１０２（タスク決定手段）は、タスク生成部１０１により生成されたタスクまたはタスク送受信部１０６により受信されたタスクと、性能情報管理部１０３の性能情報とを用いて、対象の解析ノード１００でタスクを実行するか、又は近傍の解析ノード１００（近傍サーバ群）へタスクの実行を委譲するか（タスクの分散処理を実行するか）を決定する。対象の解析ノード１００におけるタスク決定部１０２により、対象の解析ノード１００において実行すると決定されたタスクは、対象の解析ノード１００におけるタスク実行部１０４により実行される。タスク決定部１０２により、近傍の解析ノード１００へタスクの分散処理を実行すると決定されたタスクは、タスク送受信部１０６により管理ノード２００へ送信される。
【００２９】
性能情報管理部１０３は、対象の解析ノード１００の性能情報を取得し、性能情報送受信部１０７により管理ノード２００へ送信する。また、性能情報管理部１０３は、管理ノード２００により送信される統合性能情報を保管する。統合性能情報の詳細は後述する。
【００３０】
タスク実行部１０４（タスク実行手段）は、タスク決定部１０２が、あるタスクを対象の解析ノード１００で実行すると判定した場合、そのタスクを実行する。
【００３１】
余剰判定部１０５は、性能情報管理部１０３により取得された対象の解析ノード１００の性能情報に基づき、対象の解析ノード１００に余剰処理能力があるか（対象の解析ノード１００の資源に余剰があるか）を判定する。余剰処理能力は、対象の解析ノード１００がタスクを実行する場合に、対象の解析ノード１００において余っている処理能力（計算資源）である。余剰判定部１０５は、余剰処理能力がある場合、タスク記憶部２０５に格納されている余剰タスクに応じて、タスク実行部１０４でタスクを実行するように要求する。余剰タスクの詳細は後述する。
【００３２】
なお、余剰判定部１０５は、性能情報管理部１０３により取得された対象の解析ノード１００の性能情報、及び、タスク記憶部２０５に格納される余剰タスクを、管理ノード２００から取得してもよい。また、余剰判定部１０５は、それらの情報が管理ノード２００から送信されるように管理ノード２００へ要求してもよい。これにより、余剰の資源を活用でき、かつ、負荷分散効果が得られる。
【００３３】
タスク送受信部１０６は、解析ノード１００のタスク、及び、タスク記憶部２０５に格納される余剰タスクを送受信する。例えば、タスク送受信部１０６は、管理ノード２００のタスク送受信部２０４により送信されるタスクを受信する。また、タスク送受信部１０６は、例えば、タスク決定部１０２により近傍の解析ノード１００へ負荷分散すると判定されたタスクを、管理ノード２００へ送信する。
【００３４】
性能情報送受信部１０７は、解析ノード１００及び近傍の解析ノード１００の性能情報並びに統合性能情報を送受信する。例えば、性能情報送受信部１０７は、性能情報管理部１０３により取得された性能情報を管理ノード２００へ送信する。また、例えば、性能情報送受信部１０７は、管理ノード２００の性能情報送受信部２０１により送信された統合性能情報を受信する。
【００３５】
性能情報送受信部２０１は、解析ノード１００に関する性能情報、及び、統合性能情報を送受信する。例えば、性能情報送受信部２０１は、解析ノード１００の性能情報送受信部１０７により送信される性能情報を受信し、性能情報記憶部２０２へ格納する。また、例えば、性能情報送受信部２０１は、統合性能情報を各解析ノード１００へ送信する。
【００３６】
性能情報記憶部２０２は、各解析ノード１００の性能情報を格納（保持）する。図４は、性能情報記憶部２０２に格納される解析ノード１００の性能情報の一例を示す図である。図４に示すように、例えば、解析ノード１００の性能情報は、各解析ノード１００の識別子（解析ノードＩＤ（Ｉｄｅｎｔｉｆｉｅｒ））と、スループットと、処理待ちタスク数と、ＮＷ遅延情報（ネットワーク遅延情報）と、それぞれの情報が更新された日時とを含む。なお、解析ノード１００の性能情報は、図４に示すスループット、処理待ちタスク数、及び、ネットワーク遅延に限定されず、例えば、メモリ消費量などの解析ノード１００の性能を示す情報を含んでもよい。
【００３７】
また、性能情報記憶部２０２は、性能情報統合部２０３が各解析ノード１００の性能情報を統合した情報を表す統合性能情報を格納する。図５は、性能情報記憶部２０２に格納される統合性能情報の一例を示す図である。統合性能情報は、近傍の解析ノード１００全体としての性能情報である。図５に示すように、例えば、統合性能情報は、単位時間当たりのタスクのスループットと、処理待ちタスク数と、ネットワーク遅延（ＮＷ遅延）の統合値と、統合性能情報の対象となる近傍の解析ノード１００の数と、統合した日時とを含む。図５に示す例において、ネットワーク遅延は、タスクを対象の解析ノード１００から対象の管理ノード２００まで送信する際のネットワークの遅延時間である。なお、ネットワーク遅延は遅延時間に限定されず、例えば、解析ノード１００と管理ノード２００間のルーターのホップ数を表してもよい。
【００３８】
性能情報統合部２０３（性能情報統合手段）は、性能情報記憶部２０２に格納される各解析ノード１００の性能情報を統合し、性能情報記憶部２０２へ格納する。
【００３９】
タスク送受信部２０４は、解析ノード１００のタスク、及び、タスク記憶部２０５に格納される余剰タスクを送受信する。例えば、タスク送受信部２０４は、タスク送受信部１０６から送信されるタスクを受信し、余剰タスクとしてタスク記憶部２０５へ格納する。
【００４０】
タスク記憶部２０５は、余剰タスクを格納する。図６は、タスク記憶部２０５に格納される余剰タスクの一例を示す図である。図６に示すように、例えば、余剰タスクは、タスクの識別子（タスクＩＤ）と、タスクを送信した解析ノード１００の識別子（送信ノードＩＤ）と、タスクのデータと、タスクのデータを受信した日付を含む。解析ノード１００の識別子は、ＩＰアドレスのように、対象の解析ノード１００を対象の管理ノード２００（管理サーバ）において一意に特定できる識別情報である。解析ノード１００の識別子は、ＩＰアドレスに限定されない。管理ノード２００におけるタスク記憶部２０５は、解析ノード１００により負荷分散されるタスクを格納するタスク格納部（タスク格納手段）として機能する。
【００４１】
次に、本実施形態における分散処理システム１０の動作について説明する。図７は、本実施形態における分散処理システム１０の動作例を示すフローチャートである。分散処理システム１０は、統合性能情報を生成する（ステップＳ１０１）。分散処理システム１０は、タスクの割当を決定する（ステップＳ１０２）。分散処理システム１０は、余剰処理能力の有無を判定する（ステップＳ１０３）。
【００４２】
以下、ステップＳ１０１における処理（統合性能情報生成処理）の詳細を説明する。図８は、本実施形態における分散処理システム１０による統合性能情報生成処理の動作例を示すフローチャートである。性能情報送受信部２０１は、近傍の解析ノード１００の各々から性能情報を取得し、性能情報記憶部２０２へ格納する（ステップＳ２０１）。図１に示す具体例のように、分散処理システム１０において、例えば、解析ノードＡが対象の解析ノード１００であり、管理ノードＡが対象の管理ノード２００であり、解析ノードＢ、解析ノードＤ及び解析ノードＥが近傍の解析ノード１００であることを想定する。この場合において、管理ノードＡの性能情報送受信部２０１は、解析ノードＢ、解析ノードＤ及び解析ノードＥの性能情報を取得し、図４に示す性能情報を管理ノードＡの性能情報記憶部２０２へ格納する。
【００４３】
性能情報統合部２０３は、近傍の解析ノード１００の性能情報を統合する（ステップＳ２０２）。例えば、管理ノードＡの性能情報統合部２０３は、管理ノードＡの性能情報記憶部２０２に格納される解析ノードＢ、解析ノードＤ及び解析ノードＥの性能情報を統計演算することで統合性能情報を生成する。そのような統計演算には、例えば、平均を算出する処理（平均処理）が含まれてもよい。具体的には、例えば、図５に示すように、性能情報統合部２０３は、図４に示す近傍の解析ノード１００のスループットにおいて、”２タスク毎秒”、”５タスク毎秒”、及び、”３タスク毎秒”から、平均値”３．３タスク毎秒”を統合性能情報として算出する。同様に、性能情報統合部２０３は、処理待ちタスク数において、”０”、”５”、及び”７”から、平均値”４”を、統合性能情報として算出する。同様に、性能情報統合部２０３は、ネットワーク遅延において、”３．３”、”０．６”、及び”１．１”から、平均値”１．６７”を統合性能情報として算出する。
【００４４】
性能情報統合部２０３は、ステップＳ２０２で生成した統合性能情報を性能情報記憶部２０２へ格納する（ステップＳ２０３）。例えば、管理ノードＡの性能情報統合部２０３は、解析ノードＢ、解析ノードＤ及び解析ノードＥの性能情報を統計演算することで生成した統合性能情報を、管理ノードＡの性能情報記憶部２０２に格納する。
【００４５】
分散処理システム１０（性能情報統合部２０３）は、このような処理により、統合性能情報を生成する。すなわち、管理ノード２００は、接続されている解析ノード１００の性能情報を統合する性能情報統合部２０３を有する。
【００４６】
以下、ステップＳ１０２における処理（タスク割当決定処理）の詳細を説明する。図９は、本実施形態における分散処理システム１０によるタスク割当決定処理の動作例を示すフローチャートである。タスク生成部１０１により、タスクが生成されることで、タスクが発生する（ステップＳ３０１）。例えば、解析ノードＡのタスク生成部１０１は、外部装置からの入力情報に基づきタスクを生成する。
【００４７】
タスク決定部１０２は、性能情報管理部１０３から対象の解析ノード１００に関する現在の性能情報を取得し、対象の解析ノード１００にて処理の溢れが発生するか否かを判定する（ステップＳ３０２）。例えば、解析ノードＡのタスク決定部１０２は、解析ノードＡのタスク生成部１０１により生成されたタスクと、解析ノードＡの性能情報管理部１０３が有する現在の性能情報とを比較し、処理が溢れるか否かを判定する。
【００４８】
対象の解析ノード１００で処理が溢れない場合（ステップＳ３０２でＮｏ）、対象の解析ノード１００のタスク実行部１０４は、当該タスクを実行する（ステップＳ３０３）。
【００４９】
対象の解析ノード１００で処理が溢れる場合（ステップＳ３０２でＹｅｓ）、タスク決定部１０２は、対象の解析ノード１００の性能情報から、対象の解析ノード１００でタスクを実行する場合の遅延コストを算出する（ステップＳ３０４）。例えば、解析ノードＡのタスク決定部１０２は、解析ノードＡの性能情報管理部１０３より、自身の性能情報を取得する。具体的には、例えば、タスク決定部１０２は、計算負荷として、平均処理スループットの”２タスク毎秒”と、処理待ちのタスク数の”１０”とを取得する。解析ノードＡのタスク決定部１０２は、例えば、平均処理スループット”２タスク毎秒”と、処理待ちタスク数”１０”とから、”処理待ちタスク数÷平均スループット”を計算することにより、解析ノードＡでタスクを実行する場合の遅延コスト（以降、「第１のコスト」と記載）を”５”と推定する。
【００５０】
タスク決定部１０２は、性能情報記憶部２０２に格納される統合性能情報から、近傍の解析ノード１００でタスクを実行する場合の遅延コストを算出する（ステップＳ３０５）。解析ノードＡのタスク決定部１０２は、例えば、管理ノードＡの性能情報記憶部２０２に格納される統合性能情報を取得する。具体的には、例えば、タスク決定部１０２は、統合性能情報として、平均処理スループットの”３．３タスク毎秒”と、実行待ちのタスク数の”４”と、ネットワーク遅延の”１．６７”とを取得する。解析ノードＡのタスク決定部１０２は、平均処理スループット”３．３タスク毎秒”と、実行待ちのタスク数”４”と、ネットワーク遅延”１．６７”とから、解析ノードＢ、解析ノードＤ及び解析ノードＥへタスクの分散処理を実行する場合の遅延コスト（以降、第２のコストと記載）を、例えば以下のように計算する。即ち、タスク決定部１０２は、上記各数値を用いて、”実行待ちタスク数÷平均スループット＋ネットワーク遅延”を計算することで、第２のコストを”２．８８”と推定する。
【００５１】
タスク決定部１０２は、第１のコストと、第２のコストとを比較し、対象の解析ノード１００でタスクを実行するか、又は近傍の解析ノード１００へタスクの分散処理を実行するかを決定する（ステップＳ３０６）。第２のコストが第１のコストより低い場合（ステップＳ３０６でＹｅｓ）、タスク送受信部１０６は、タスクを管理ノード２００へ送信する（ステップＳ３０７）。第１のコストが第２のコストより低い場合（ステップＳ３０６でＮｏ）、対象の解析ノード１００のタスク実行部１０４は、タスクを実行する（ステップＳ３０３）。例えば、解析ノードＡのタスク決定部１０２は、算出した第１のコストの値”５”と、第２のコストの値”２．８８”とを算術比較する。本例の場合、第２のコストが第１のコストより低いため、解析ノードＡのタスク送受信部１０６は、タスクを管理ノードＡへ送信する。管理ノードＡは、解析ノードＡから送信されたタスク（余剰タスク）をタスク記憶部２０５に格納する。
【００５２】
分散処理システム１０（タスク決定部１０２）は、このような処理により、タスクの割当を決定する。すなわち、解析ノード１００（タスク決定部１０２）は、ある解析ノード１００の性能情報に基づいて、その解析ノード１００においてタスクを実行する第１のコストを算出する。また、解析ノード１００は、性能情報統合部２０３により統合される性能情報に基づいて、近傍の解析ノード１００へタスクを負荷分散する第２のコストを算出する。解析ノード１００は、算出された第１のコストと、第２のコストとに基づいて、その解析ノード１００においてタスクを実行するか、又は近傍の解析ノード１００へタスクの負荷分散を実行するかを決定する。
【００５３】
なお、上記においては、本実施形態のタスク決定部１０２が、瞬間値（例えば、ある時点における性能情報）を用いた算術計算によりコストを推定する態様について説明した。本実施形態は、これに限定されない。タスク決定部１０２によるコストの推定方法は、例えば、過去一定時間でのコスト推移を一時的に記憶し、処理負荷が高い期間なのか、又は閑散期間なのかを推定することで、コスト計算へ反映する、等の方法を含んでもよい。
【００５４】
以下、具体例を用いて説明する。以下に説明する具体例においては、例えば、過去４サイクルでの対象の解析ノード１００のコストが、”１”、”２”、”１”、”５”と推移していることを想定する。また、過去４サイクルでの近傍の解析ノード１００のコストが、”５”、”８”、”７”、”２．８８”と推移していることを想定する。この場合において、タスク決定部１０２は、例えば、過去データを加味して各コスト計算を計算してもよい。具体的には、タスク決定部１０２は、例えば、過去のコストの推移を加味して、”（（（（（１＋２）÷２）＋１）÷２）＋５）／２”を計算することで、第１のコストを”３．１２５”と算出してもよい。また、タスク決定部１０２は、例えば、過去のコストの推移を加味して、”（（（（（５＋８）÷２）＋７）÷２．８８）＋５）／２”を計算することで、第２のコストを”４．８１５”と算出してもよい。タスク決定部１０２は、第１のコストと第２のコストとを比較した結果から、対象の解析ノード１００がタスクを実行すると決定する。
【００５５】
また、タスク決定部１０２によるコストの推定方法は、コストの推移の代わりに性能情報の推移に応じて、コストの計算方法を変える方式、コストへ重みを積算する方式、等を含んでもよい。すなわち、タスク決定部１０２は、第１のコストの履歴を用いて第１のコストを算出し、第２のコストの履歴を用いて第２のコストを算出する、適切な方式を採用可能である。
【００５６】
以下、ステップＳ１０３の余剰処理能力判定処理の詳細を説明する。図１０は、本実施形態における分散処理システム１０による余剰処理能力判定の動作例を示すフローチャートである。余剰判定部１０５は、対象の解析ノード１００の性能情報を取得し、対象の解析ノード１００に余剰処理能力があるか否かを判定する（ステップＳ４０１）。例えば、解析ノードＡの余剰判定部１０５は、解析ノードＡの性能情報管理部１０３より解析ノードＡの性能情報を取得し、あらかじめ設定された閾値などを用いて、性能情報から解析ノードＡに計算資源の余剰があるかを推定する。具体的には、余剰判定部１０５は、例えば、計算負荷として処理待ちのタスク数（例えば、”１”）を取得する。余剰判定部１０５は、閾値（例えば”２”）を参照する。この場合、余剰判定部１０５は、処理待ちタスク数（”１”）が、閾値（”２”）より低い値である場合、タスク取得が可能であると判定する。
【００５７】
対象の解析ノード１００に余剰処理能力がある場合（ステップＳ４０１でＹｅｓ）、タスク送受信部１０６は、タスク記憶部２０５に格納される余剰タスクを取得する（ステップＳ４０２）。例えば、解析ノードＡに余剰処理能力がある場合、タスク送受信部１０６は、管理ノードＡのタスク記憶部２０５に格納される余剰タスクを取得する。図６に示す具体例の場合、余剰判定部１０５は、例えば、タスク記憶部２０５に格納される余剰タスクの中で最初に登録されたタスクであるタスクＩＤが”１”の余剰タスクを取得する。
【００５８】
タスク実行部１０４は、余剰判定部１０５により取得された余剰タスクを実行する（ステップＳ４０３）。例えば、解析ノードＡのタスク実行部１０４は、タスクＩＤが”１”の余剰タスクを実行する。対象の解析ノード１００に余剰処理能力がない場合（ステップＳ４０１でＮｏ）、分散処理システム１０は処理を終了する。
【００５９】
なお、上記においては、本実施形態の余剰判定部１０５が、タスク記憶部２０５から余剰タスクをＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式で取得する態様を説明したが、本実施形態は、これに限定されない。余剰判定部１０５による余剰タスク取得方法は、例えば、タスクのデータサイズなどの複合的な指標からタスクの実行優先度を決定し、当該タスクの実行優先度に基づいて取得する方式を含んでもよい。
【００６０】
分散処理システム１０（余剰判定部１０５）は、このような処理により、余剰処理能力の有無を判定する。
【００６１】
以上説明したように、本実施形態における分散処理システム１０は、統合性能情報を生成し、タスクの割当を決定し、余剰処理能力の有無を判定する。これにより、分散処理システム１０は、処理負荷が頻繁に変動する場合でも、タスクの割当先（以下「タスク割当先」と記載する）を正しく判定できる。特に、本実施形態の分散処理システム１０は、性能情報統合部２０３が、近傍の解析ノード１００全体の性能情報を統計処理することで統合性能情報を生成する。本実施形態の分散処理システム１０は、個々の解析ノード１００の性能情報よりも変動が少ない統合性能情報を用いてタスク決定部１０２がタスクを割当てる。これより、分散処理システム１０は、個々の性能情報を用いる場合に比べて、性能情報の収集間隔を広くすることができる。
【００６２】
ここで、特許文献１に開示された技術は、周辺にある全装置の収集処理関連情報を装置間で直接授受する。特許文献１に開示された技術においては、処理関連情報をニアリアルタイムで収集する場合、全装置が相互に接続されることから、装置間での接続の組合せが増加する。このため、ネットワーク負荷が高くなる。すなわち、特許文献１に開示された技術は、装置数が増加した際に処理関連情報の通信によるネットワーク負荷が高くなるという課題がある。これに対し、本実施形態の分散処理システム１０では、複数の解析ノード１００が直接性能情報をやり取りするのではなく、管理ノード２００の性能情報記憶部２０２を介して性能情報を取得するように構成されている。このため、性能情報の通信によるネットワーク負荷の増加を抑制することができる。
【００６３】
また、特許文献１に開示された技術は、各装置が、他の装置の処理関連情報を参照して、処理を分散する宛先装置を割り当てる。これより、ある宛先装置が処理を受け取った時点では、その宛先装置の負荷が既に高くなっており処理待ちが発生する可能性がある。すなわち、特許文献１に開示された技術は、分散した処理の処理待ち時間にばらつきが発生するという課題がある。これに対し、本実施形態の分散処理システム１０は、タスク決定部１０２が、性能情報統合部２０３が生成した統合性能情報を参照して、入力された処理タスクを対象の解析ノード１００で処理した場合のコストと、周辺の解析ノード１００へ分散した場合のコストとを算出する。本実施形態の分散処理システム１０は、タスク決定部１０２が、算出したこれらのコストとを比較して、処理対象（送信先）を決定する。このため、本実施形態の分散処理システム１０によれば、分散した処理の処理待ち時間のばらつきを低減することが可能であり、適切な分散処理が実現される。
【００６４】
＜第２の実施形態＞
次に、第２の実施形態における分散処理システム１０の機能について説明する。図１１は、本実施形態における分散処理システム１０の機能構成を示すブロック図である。本実施形態における分散処理システム１０は、第１の実施形態における分散処理システム１０に加えて、管理ノード２００において、性能情報統合部２０３とタスク記憶部２０５とが接続されている。
【００６５】
本実施形態における性能情報統合部２０３は、性能情報記憶部２０２に格納される解析ノード１００の性能情報と、タスク記憶部２０５に格納される余剰タスクとを統合し、性能情報記憶部２０２へ格納する。図１２は、性能情報記憶部２０２に格納される統合性能情報の一例を示す図である。本実施形態の統合性能情報は、管理ノード２００のタスク記憶部２０５に格納されている余剰タスク情報を加味した、当該管理ノード２００対する近傍の解析ノード１００全体としての性能情報である。図１２に示すように、本実施形態の統合性能情報は、例えば、単位時間当たりのタスク処理スループットや、処理待ちタスク数、ＮＷ遅延の統合値や、統合に使用した解析ノード１００の数（図１２の「ノード数」）、及び、統合した日時を含む。本例では、ネットワーク遅延は、タスクを対象の解析ノード１００から対象の管理ノード２００に送信するのに要するネットワーク遅延時間を表す。
【００６６】
なお、本実施形態のネットワーク遅延は、遅延時間に限定されるものではなく、例えば、解析ノード１００と管理ノード２００間のルーターのホップ数などを表してもよい。さらに、本実施形態の性能情報は、処理負荷やネットワーク遅延に限定されるものではなく、例えば、メモリ消費量などの情報を含んでもよい。
【００６７】
以下、本実施形態の分散処理システム１０による統合性能情報生成処理の詳細を説明する。図１３は、本実施形態における分散処理システム１０による統合性能情報生成処理の動作例を示すフローチャートである。性能情報送受信部２０１は、解析ノード１００から性能情報を取得し、各解析ノード１００の性能情報として性能情報記憶部２０２に格納する（ステップＳ５０１）。図１に示す具体例の場合、例えば、管理ノードＡの性能情報送受信部２０１は、解析ノードＢ、解析ノードＤ及び解析ノードＥの性能情報を取得し、管理ノードＡの性能情報記憶部２０２へ格納する。
【００６８】
性能情報統合部２０３は、タスク記憶部２０５に格納される余剰タスクを取得する（ステップＳ５０２）。例えば、管理ノードＡの性能情報統合部２０３は、管理ノードＡのタスク記憶部２０５に格納される解析ノードＡの余剰タスクを取得する。
【００６９】
性能情報統合部２０３は、取得した解析ノード１００の性能情報と、余剰タスクとに基づいて、近傍の解析ノード１００の統合性能情報を生成する（ステップＳ５０３）。例えば、性能情報統合部２０３は、取得した解析ノードＢ、解析ノードＤ及び解析ノードＥの性能情報と、解析ノードＢ及び解析ノードＤの余剰タスクと、を統計演算することで、統合性能情報を生成する。係る統計演算には、例えば、平均処理が含まれてもよい。図４に示す具体例の場合、性能情報統合部２０３は、例えば、近傍の解析ノード１００のスループットとして、”２タスク毎秒”、”５タスク毎秒”、及び、”３タスク毎秒”の平均値から”３．３タスク毎秒”を算出する。同様に、性能情報統合部２０３は、ネットワーク遅延として、”３．３”、”０．６”、及び、”１．１”の平均値である”１．６７”を算出する。性能情報統合部２０３は、図４に示す処理待ちタスク数である”０”、”５”、及び”７”と、図６に示す余剰タスクのタスク数である”２”とを加算し、その結果をノード数である”３”により除算することで、平均を算出する。即ち、性能情報統合部２０３は、”（１２＋２）÷３”を計算することで、値”４．６”を、統合性能情報（処理待ちタスク数）として算出する。
【００７０】
性能情報統合部２０３は、ステップＳ５０３で生成した統合性能情報を性能情報記憶部２０２へ格納する（ステップＳ５０４）。例えば、管理ノードＡの性能情報統合部２０３は、解析ノードＢ、解析ノードＤ及び解析ノードＥの性能情報と、解析ノードＢ及び解析ノードＤの余剰タスクと、を統計演算することで生成した統合性能情報を、管理ノードＡの性能情報記憶部２０２に格納する。
【００７１】
分散処理システム１０（性能情報統合部２０３）は、このような処理により、性能情報と余剰タスクとに基づく統合性能情報を生成する。
【００７２】
以上説明したように、本実施形態における分散処理システム１０は、性能情報と余剰タスクとに基づく統合性能情報を生成し、タスクの割当を決定し、余剰処理能力の有無を判定する。これにより、分散処理システム１０は、処理負荷が頻繁に変動する場合であってもタスク割当先を正しく判定できる。
【００７３】
本実施形態における分散処理システム１０では、性能情報統合部２０３が統合性能情報を生成する際、性能情報記憶部２０２の各解析ノード１００の性能情報に加えて、タスク記憶部２０５に格納された、近傍にある複数の解析ノード１００全体での実行待ちタスクを考慮して統合性能情報を生成する。これにより、分散処理システム１０は、個々の性能情報のみから統合性能情報を生成する場合に比べて、性能情報の収集間隔を広くすることができる。
【００７４】
＜第３の実施形態＞
次に、第３の実施形態における分散処理システム１０の機能について説明する。図１４は、本実施形態における分散処理システム１０の機能構成を示すブロック図である。本実施形態における分散処理システム１０は、第１の実施形態における分散処理システム１０に加えて、カメラ４００をさらに備える。カメラ４００は、解析ノード１００（タスク生成部１０１）と接続されている。本実施形態における解析ノード１００は、タスク実行部１０４が１次処理実行部１０８と、２次処理実行部１０９とをさらに含む。
【００７５】
本実施形態におけるタスク生成部１０１は、カメラ４００により入力される映像や画像、音声などの入力情報を受け取り、解析ノード１００が処理する１次処理タスクを生成する。
【００７６】
タスク決定部１０２は、タスク生成部１０１により生成される１次処理タスクと、１次処理実行部１０８により生成される２次処理タスクとについて、それぞれのタスクの実行先（それぞれのタスク実行する解析ノード１００）を決定する。例えば、タスク決定部１０２は、タスク実行部１０４による２次処理タスク、又はタスク送受信部１０６が受信した２次処理タスクと、性能情報管理部１０３の性能情報とを用いて、対象の解析ノード１００でタスクを実行するか、近傍の解析ノード１００へタスクの分散処理を実行するか決定する。スク決定部１０２は、例えば、タスクが、入力情報からの対象物を検出する１次処理と、対象物について分析する２次処理とで構成される場合に、１次処理を実行した後に、２次処理を実行するか、又は近傍の解析ノード１００へ２次処理の負荷分散を実行するかを決定する。
【００７７】
タスク実行部１０４は、１次処理実行部１０８において、タスク生成部１０１により生成される１次処理タスクを実行する。タスク実行部１０４は、１次処理の結果である２次処理タスクを受け取り、当該２次処理タスクをタスク決定部１０２へ送る。
【００７８】
余剰判定部１０５は、性能情報管理部１０３により取得された対象の解析ノード１００の性能情報に基づき、対象の解析ノード１００に２次処理タスクの余剰処理能力があるかを判定する。余剰判定部１０５は、余剰処理能力がある場合、タスク記憶部２０５に格納される余剰２次処理タスクに基づきタスク実行部１０４（２次処理実行部１０９）でタスクを実行するように要求する。余剰処理能力がある場合は、分散処理システム１０は、タスク送受信部１０６がタスク送受信部２０４を介して、タスク記憶部２０５に格納されるタスクを取得し、タスク実行部１０４がタスクを実行する。分散処理システム１０は、このように動作することで、負荷分散効果を得る。
【００７９】
１次処理実行部１０８は、タスク生成部１０１により生成される１次処理タスクを実行する。１次処理タスクは、例えば、入力情報からの複数の対象物を検出する処理（タスク）である。１次処理実行部１０８は、１次処理タスクの実行結果である２次処理タスクを生成する。
【００８０】
２次処理実行部１０９は、タスク決定部１０２により実行すると決定された２次処理タスクを実行する。２次処理タスクは、例えば、１次処理により検出された各対象物について分析する処理（タスク）である。
【００８１】
カメラ４００は、映像データや画像データ、音声データなどの情報を取得し、取得した情報を入力情報として解析ノード１００（タスク生成部１０１）に送る。
【００８２】
以下、本実施形態の分散処理システム１０によるタスク割当決定処理の詳細を説明する。図１５は、本実施形態における分散処理システム１０によるタスク割当決定処理の動作例を示すフローチャートである。カメラ４００により取得された入力情報に基づき、タスク生成部１０１が、１次処理タスクを生成することで、タスクが発生する（ステップＳ６０１）。例えば、解析ノードＡのタスク生成部１０１は、外部装置からの入力情報に基づきタスクを生成する。
【００８３】
１次処理実行部１０８は、タスク生成部１０１により生成される１次処理タスクを実行し、２次処理タスクを生成する（ステップＳ６０２）。
【００８４】
タスク決定部１０２は、１次処理実行部１０８により生成される２次処理タスクがすべて処理されたかを判定する（ステップＳ６０３）。本実施形態の分散処理システム１０によるタスク割当決定処理は、ステップＳ６０２で２次処理タスクが生成された際、タスク決定部１０２が処理すべき２次処理タスクがあると判定し（ステップＳ６０３でＮｏ）、ステップＳ６０４へ進む。
【００８５】
タスク決定部１０２は、性能情報管理部１０３から対象の解析ノード１００の現在の性能情報を取得し、対象の解析ノード１００にて処理の溢れが発生するかを判定する（ステップＳ６０４）。
【００８６】
対象の解析ノード１００で処理が溢れない場合（ステップＳ６０４でＮｏ）、対象の解析ノード１００の２次処理実行部１０９は、当該２次処理タスクを実行する（ステップＳ６０５）。
【００８７】
対象の解析ノード１００で処理が溢れる場合（ステップＳ６０４でＹｅｓ）、タスク決定部１０２は、対象の解析ノード１００の性能情報から、対象の解析ノード１００で２次処理タスクを実行する場合の遅延コスト（第１のコスト）を算出する（ステップＳ６０６）。
【００８８】
タスク決定部１０２は、性能情報記憶部２０２に格納される統合性能情報から、近傍の解析ノード１００で２次処理タスクを実行する場合の遅延コスト（第２のコスト）を算出する（ステップＳ６０７）。
【００８９】
タスク決定部１０２は、２次処理タスクを実行する場合の第１のコスト及び第２のコストを比較し、対象の解析ノード１００で２次処理タスクを実行するか、又は近傍の解析ノード１００へ２次処理タスクの分散処理を実行するかを決定する（ステップＳ６０８）。例えば、第２のコストが第１のコストより低い場合（ステップＳ６０８でＹｅｓ）、タスク送受信部１０６は、２次処理タスクを管理ノード２００へ送信する（ステップＳ６０９）。例えば、第１のコストが第２のコスト以下の場合（ステップＳ６０８でＮｏ）、対象の解析ノード１００の２次処理実行部１０９は、２次処理タスクを実行する（ステップＳ６０５）。
【００９０】
なお、本実施形態の分散処理システム１０は、すべての２次処理タスクが実施されるまでステップＳ６０４乃至ステップＳ６０９の処理（タスク割当決定処理）を繰り返し実行してよい。本実施形態の分散処理システム１０によるタスク割当決定処理は、すべての２次処理タスクが完了した場合（ステップＳ６０３でＹｅｓ）、実行が終了される。
【００９１】
分散処理システム１０（タスク決定部１０２）は、このような処理により、２次処理タスクの割当を決定する。
【００９２】
以下、本実施形態の分散処理システム１０による余剰処理能力判定処理の詳細を説明する。図１６は、本実施形態における分散処理システム１０による余剰処理能力判定処理の動作例を示すフローチャートである。
【００９３】
余剰判定部１０５は、対象の解析ノード１００の性能情報を取得し、対象の解析ノード１００に余剰処理能力があるかを判定する（ステップＳ７０１）。
【００９４】
対象の解析ノード１００に余剰処理能力がある場合（ステップＳ７０１でＹｅｓ）、タスク送受信部１０６は、タスク記憶部２０５に格納される余剰タスク（２次処理タスク）を取得する（ステップＳ７０２）。
【００９５】
２次処理実行部１０９は、余剰判定部１０５により取得された２次処理タスクを実行する（ステップＳ７０３）。対象の解析ノード１００に余剰処理能力がない場合（ステップＳ７０１でＮｏ）、分散処理システム１０は処理を終了する。
【００９６】
分散処理システム１０（余剰判定部１０５）は、このような処理により、余剰処理能力の有無を判定する。
【００９７】
以上説明したように、本実施形態における分散処理システム１０は、統合性能情報を生成し、２次処理タスクの割当を決定し、余剰処理能力の有無を判定する。これにより、分散処理システム１０は、処理負荷の変動が頻繁な場合でもタスク割当先を正しく判定できる。
【００９８】
本実施形態における分散処理システム１０では、タスク実行部１０４が１次処理実行部１０８と２次処理実行部１０９とに細分化される。解析ノード１００は、タスク生成部１０１が生成した１次処理タスクをタスク実行部１０４が実行した上で、余剰な２次処理タスクに関する処理を分散するように構成されている。これにより、分散処理システム１０は、個々の性能情報のみから統合性能情報を生成する場合に比べて、性能情報の収集間隔を広くすることができる。
【００９９】
＜その他の実施形態＞
図１７は、上述の実施形態における分散処理システム１０の概略構成図である。図１７に例示する分散処理システム１０においては、ある解析ノード１００が、入力情報を解析し、その解析ノード１００自身の性能を表す性能情報に基づいて、その解析ノード１００自身があるタスクを実行する際のコスト（第１のコスト）を算出する。
【０１００】
また、その解析ノード１００は、他の解析ノード１００の性能情報を管理（保持）する管理ノード２００により統合された、他の解析ノード１００に関する性能情報に基づいて、あるタスクを他の解析ノード１００に分散して実行する場合のコスト（第２のコスト）を算出する。その解析ノード１００は、算出した第１のコスト及び第２のコストに基づいて、あるタスクをその解析ノード１００自身が実行するか、又は近傍の他の解析ノード１００へタスクを分散して実行するかを決定する。即ち、図１７に例示する分散処理システム１０は、解析ノード１００において算出された第1のコスト及び第２のコストに応じて、あるタスクの実行に要する負荷を近傍の解析ノード１００に分散する、負荷分散の機能を実現することができる。
【０１０１】
図１７に例示するように、分散処理システム１０は、入力情報を解析する解析ノード１００と、管理ノード２００と、を含む。管理ノード２００は、解析ノード１００にネットワークを介して接続され、解析ノード１００の性能情報を管理する。管理ノード２００は、ネットワークを介して接続された解析ノード１００に関する性能情報を保持するよう構成されてよい。
【０１０２】
管理ノード２００は、接続されている解析ノード１００の性能情報を統合する性能情報統合部２０３を有する。解析ノード１００は、タスク決定部１０２を有する。解析ノード１００におけるタスク決定部１０２は、自解析ノード１００自身の性能を表す性能情報に基づいてタスクを実行する第１のコストを算出するよう構成されてよい。また、解析ノード１００におけるタスク決定部１０２は、性能情報統合部２０３により統合される性能情報に基づいて、近傍の解析ノード１００へタスクを分散する第２のコストを算出するよう構成されてよい。解析ノード１００におけるタスク決定部１０２は、算出した第１のコストと、第２のコストとに基づいて、自解析ノード１００自身においてタスクを実行するか、又は近傍の解析ノード１００へタスクの負荷を分散するかを決定する。
【０１０３】
本発明は、上述の実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲において適宜変更可能である。
【０１０４】
上述の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１０５】
［付記１］
入力情報を解析する解析ノードと、
前記解析ノードにネットワークを介して接続されており、前記解析ノードの性能情報を管理する管理ノードと、を含み、
前記管理ノードは、接続されている前記解析ノードの性能情報を統合する性能情報統合部を有し、
前記解析ノードは、性能情報に基づいてタスクを実行する第１のコストと、前記性能情報統合部により統合される性能情報に基づいて、近傍の解析ノードへ前記タスクを負荷分散する第２のコストとに基づいて、前記タスクを実行するか、又は前記近傍の解析ノードへ前記タスクの負荷分散を実行するかを決定するタスク決定部を有する分散処理システム。
【０１０６】
［付記２］
前記タスク決定部は、前記タスクが、前記入力情報からの対象物を検出する１次処理と、前記対象物について分析する２次処理とで構成される場合に、前記１次処理を実行した後に、前記２次処理を実行するか、又は前記近傍の解析ノードへ前記２次処理の負荷分散を実行するかを決定する付記１に記載の分散処理システム。
【０１０７】
［付記３］
前記管理ノードは、前記解析ノードにより負荷分散されるタスクを格納するタスク格納部を有し、
前記解析ノードは、自身の資源に余剰がある場合に、前記タスク格納部に格納されているタスクを実行するタスク実行部を有する付記１又は２に記載の分散処理システム。
【０１０８】
［付記４］
前記性能情報統合部は、前記性能情報を統計演算することにより、前記性能情報を統合する付記１乃至３のうちいずれか１つに記載の分散処理システム。
【０１０９】
［付記５］
前記性能情報統合部は、前記性能情報に加えて、前記タスク格納部に格納されるタスク数、入力量、出力量のいずれかまたはその組み合わせを用いて、前記性能情報を統合する付記３又は４に記載の分散処理システム。
【０１１０】
［付記６］
前記タスク決定部は、前記性能情報から前記タスクを実行する場合の通信遅延時間と処理遅延時間とを用いて前記第１のコストを算出し、統合された前記性能情報を用いて前記近傍の解析ノードへ前記タスクを負荷分散する場合の通信遅延時間と処理遅延時間とを用いて前記第２のコストを算出する付記１乃至５のうちいずれか１つに記載の分散処理システム。
【０１１１】
［付記７］
前記タスク決定部は、前記第１のコストの履歴を用いて前記第１のコストを算出し、前記第２のコストの履歴を用いて前記第２のコストを算出する付記１乃至６のうちいずれか１つに記載の分散処理システム。
【０１１２】
［付記８］
前記性能情報は、前記解析ノードのスループットとネットワーク遅延である付記１乃至７のうちいずれか１つに記載の分散処理システム。
【０１１３】
［付記９］
入力情報を解析し、
解析ノードの性能情報を管理し、
管理ノードにネットワークを介して接続されている前記解析ノードの性能情報を統合し、
性能情報に基づいてタスクを実行する第１のコストと、統合される性能情報に基づいて、近傍の解析ノードへ前記タスクを負荷分散する第２のコストとに基づいて、前記タスクを実行するか、又は前記近傍の解析ノードへ前記タスクの負荷分散を実行するかを決定する分散解析方法。
【０１１４】
［付記１０］
コンピュータに、
入力情報を解析する処理と、
解析ノードの性能情報を管理する処理と、
管理ノードにネットワークを介して接続されている前記解析ノードの性能情報を統合する性能情報統合処理と、
性能情報に基づいてタスクを実行する第１のコストと、前記性能情報統合処理により統合される性能情報に基づいて、近傍の解析ノードへ前記タスクを負荷分散する第２のコストとに基づいて、前記タスクを実行するか、又は前記近傍の解析ノードへ前記タスクの負荷分散を実行するかを決定するタスク決定処理と、を実行させるプログラム。
【０１１５】
［付記１１］
入力情報からタスクを生成するタスク生成部と、
性能情報と、近傍の分散処理装置の性能情報が統合される統合性能情報とを取得する性能情報取得部と、
前記性能情報に基づいて前記タスクを実行する第１のコストと、前記統合性能情報に基づいて、前記近傍の分散処理装置へ前記タスクを負荷分散する第２のコストとに基づいて、前記タスクを実行するか、又は前記近傍の分散処理装置へ前記タスクの負荷分散を実行するかを決定するタスク決定部と、を備える分散処理装置。
［付記１２］
入力情報を解析する解析ノードと、
前記解析ノードにネットワークを介して接続され、前記解析ノードの性能を表す性能情報を保持する管理ノードと、を含み、
前記管理ノードは、当該管理ノードに接続されている前記解析ノードに関する前記性能情報を統合する性能情報統合手段を有し、
前記解析ノードは、
当該解析ノードに関する前記性能情報に基づいて算出した、当該解析ノードにおいてタスクを実行する第１のコストと、
前記性能情報統合手段により統合された当該解析ノードとは異なる他の前記解析ノードに関する前記性能情報に基づいて算出した、他の前記解析ノードへ前記タスクを分散して実行する負荷分散のコストを表す第２のコストと、に基づいて、
前記タスクを当該解析ノードにおいて実行するか、又は他の前記解析ノードへ前記タスクを分散して実行するかを決定するタスク決定手段を有する
分散処理システム。
［付記１３］
前記解析ノードにおける前記タスク決定手段は、
前記タスクが、前記入力情報から対象物を検出する処理である１次処理と、前記対象物について分析する処理である２次処理とを含む場合、前記１次処理を実行した後に、当該解析ノードにおいて前記２次処理を実行するか、又は、他の前記解析ノードへ前記２次処理を分散して実行するかを決定する
付記１２記載の分散処理システム。
［付記１４］
前記管理ノードは、前記解析ノードにより負荷分散される前記タスクを格納するタスク格納手段を更に有し、
前記解析ノードは、自身の資源に余剰がある場合に、前記タスク格納手段に格納されている前記タスクを実行するタスク実行手段を更に有する
付記１２又は１３に記載の分散処理システム。
［付記１５］
前記性能情報統合手段は、前記性能情報を統計演算することにより、前記性能情報を統合する
付記１２乃至１４のうちいずれか１項に記載の分散処理システム。
［付記１６］
前記性能情報統合手段は、
前記性能情報と、
前記タスク格納手段に格納されるタスク数、入力量、及び、出力量のいずれか又はその組み合わせと、を用いて、前記性能情報を統合する
付記１４に記載の分散処理システム。
［付記１７］
前記タスク決定手段は、
前記性能情報に含まれる、前記タスクを実行する場合の通信遅延時間と、処理遅延時間と、を用いて前記第１のコストを算出し、
統合された前記性能情報に含まれる、他の前記解析ノードへ前記タスクを分散して実行する場合の通信遅延時間と、処理遅延時間と、を用いて前記第２のコストを算出する
付記１２乃至１６のうちいずれか１項に記載の分散処理システム。
［付記１８］
前記タスク決定手段は、
ある時点より過去のある期間における前記第１のコストの推移を表す前記第１のコストの履歴を用いて、ある時点における前記第１のコストを算出し、
ある時点より過去のある期間における前記第２のコストの推移を表す前記第２のコストの履歴を用いて、ある時点における前記第２のコストを算出する
付記１２乃至１７のうちいずれか１項に記載の分散処理システム。
［付記１９］
前記性能情報は、前記解析ノードのスループットとネットワーク遅延とを含む
付記１２乃至１８のうちいずれか１項に記載の分散処理システム。
［付記２０］
解析ノードが、
入力情報を解析すること、
当該解析ノード自身の性能を表す性能情報に基づいて当該解析ノード自身がタスクを実行する第１のコストを算出すること、
ネットワークを介して自身に接続されている１以上の前記解析ノードに関する性能情報を保持する管理ノードにより統合された、他の前記解析ノードに関する性能情報に基づいて、他の前記解析ノードへ前記タスクを分散して実行する負荷分散のコストを表す第２のコストを算出すること、及び、
算出した前記第１のコスト及び第２のコストに基づいて、当該解析ノード自身が前記タスクを実行するか、又は、他の前記解析ノードへ前記タスクの負荷分散を実行するかを決定すること、を含む
分散解析方法。
［付記２１］
解析ノードとして機能するコンピュータに、
入力情報を解析する処理と、
当該コンピュータ自身の性能を表す性能情報に基づいて、当該コンピュータ自身がタスクを実行する第１のコストを算出する処理と、
ネットワークを介して自身に接続されている１以上の前記解析ノードに関する性能情報を保持する管理ノードにより統合された、他の前記解析ノードに関する性能情報に基づいて、他の前記解析ノードへ前記タスクを分散して実行する負荷分散のコストを表す第２のコストを算出する処理と、
算出した前記第１のコスト及び前記第２のコストに基づいて、当該コンピュータ自身が前記タスクを実行するか、又は、他の前記解析ノードへ前記タスクの負荷分散を実行するかを決定する処理と、を実行させるプログラムが記録された
記録媒体。
［付記２２］
入力情報からタスクを生成するタスク生成部と、
自装置の性能情報と、他の分散処理装置の性能情報が統合された統合性能情報と、を取得する性能情報取得部と、
自装置の上記性能情報に基づいて算出した、自装置において上記タスクを実行するコストを表す第１のコストと、上記統合性能情報に基づいて算出した、他の上記分散処理装置へ上記タスクを分散して実行するコストを表す第２のコストと、に基づいて、上記タスクを自装置において実行するか、又は他の上記分散処理装置へ上記タスクを負荷して実行するかを決定するタスク決定部と、を備える
分散処理装置。
【０１１６】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【０１１７】
この出願は、２０１６年９月２９日に出願された日本出願特願２０１６−１９０４７３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１１８】
１０    分散処理システム
１００    解析ノード
１０１    タスク生成部
１０２    タスク決定部
１０３    性能情報管理部
１０４    タスク実行部
１０５    余剰判定部
１０６    タスク送受信部
１０７    性能情報送受信部
１０８    １次処理実行部
１０９    ２次処理実行部
２００    管理ノード
２０１    性能情報送受信部
２０２    性能情報記憶部
２０３    性能情報統合部
２０４    タスク送受信部
２０５    タスク記憶部
３００    ネットワーク
４００    カメラ
５００    コンピュータ装置
５０１    ＣＰＵ
５０２    ＲＯＭ
５０３    ＲＡＭ
５０４    記憶装置
５０５    ドライブ装置
５０６    通信インタフェース
５０７    入出力インタフェース
５０８    プログラム
５０９    記録媒体
５１０    ネットワーク
【図１】
2018061825.tif 000003
【図２】
2018061825.tif 000004
【図３】
2018061825.tif 000005
【図４】
2018061825.tif 000006
【図５】
2018061825.tif 000007
【図６】
2018061825.tif 000008
【図７】
2018061825.tif 000009
【図８】
2018061825.tif 000010
【図９】
2018061825.tif 000011
【図１０】
2018061825.tif 000012
【図１１】
2018061825.tif 000013
【図１２】
2018061825.tif 000014
【図１３】
2018061825.tif 000015
【図１４】
2018061825.tif 000016
【図１５】
2018061825.tif 000017
【図１６】
2018061825.tif 000018
【図１７】
2018061825.tif 000019
【国際調査報告】
2018061825.tif 000020
2018061825.tif 000021
2018061825.tif 000022
2018061825.tif 000023