(57)【要約】【課題】処理を分散実行する際に処理の結果が得られるまでの所要時間の低減化を図ること。【解決手段】タスク配置決定時間ｆ（Ｘ）の低減化と、タスク実行時間ｇ（Ｘ）の低減化との間には、トレードオフ関係が存在する。情報処理装置１００は、トレードオフ関係を考慮し、タスク配置決定に先立って、タスク配置決定対象の絞り込みを行うことにより、タスク配置決定時間ｆ（Ｘ）とタスク実行時間ｇ（Ｘ）とをバランスよく低減する。【選択図】図８
2020126377.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理のそれぞれの処理を、複数のノードのいずれかのノードに割り振った場合の、前記複数のノードのそれぞれのノードにおける処理実行時間を算出し、
前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に１以上のノードと、前記複数のノードから前記１以上のノードを除いた残余のノードのうち前記１以上のノードの処理を移動する１以上の移動先となるノードとを選択した、複数の組み合わせのそれぞれの組み合わせについて、処理の割り振りの調整を行う場合の、前記組み合わせにおける処理実行時間と、前記調整にかかる所要時間との合計値を算出し、
前記それぞれの組み合わせについて算出した合計値に基づいて、前記複数の組み合わせのいずれかの組み合わせを、前記調整の対象に決定する、
制御部を有することを特徴とする情報処理装置。
【請求項２】
前記制御部は、
前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に１以上のノードを選択し、前記残余のノードのうち前記１以上のノードの処理を移動する１以上の移動先となるノードを、選択した前記１以上のノードのそれぞれのノードの処理実行時間が閾値を超えた分から換算したデータ量が、前記１以上の移動先となるノードのそれぞれの移動先となるノードにおける処理実行時間が前記閾値を下回った分から換算したデータ量より小さくなるように選択した、複数の組み合わせのそれぞれの組み合わせについて、処理の割り振りの調整を行う場合の前記合計値を算出する、ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記組み合わせは、前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に１以上のノードと、前記残余のノードのうち算出した前記処理実行時間が最も小さいノードから順に前記１以上のノードの処理を移動する１以上の移動先となるノードとを選択したノード群である、ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御部は、
前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に所定数のノードと、前記複数のノードから前記所定数のノードを除いた残余のノードのうち前記所定数のノードの処理を移動する１以上の移動先となるノードとを選択した組み合わせについて、処理の割り振りの調整を行う場合の前記合計値を算出した後、
前記所定数を増加させ、前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に前記所定数のノードと、前記複数のノードから前記所定数のノードを除いた残余のノードのうち前記所定数のノードの処理を移動する１以上の移動先となるノードとを選択した組み合わせについて、処理の割り振りの調整を行う場合の前記合計値を算出することを、前記調整の対象が決定されるまで繰り返し、
算出済みの前記合計値のうち、所定の条件を満たす合計値がある場合、所定の条件を満たす合計値が算出された組み合わせを、前記調整の対象に決定する、ことを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
前記制御部は、
算出した前記処理実行時間のうち、最も大きい処理実行時間の標準偏差と、最も小さい処理実行時間の標準偏差とを算出し、
算出した前記最も大きい処理実行時間の標準偏差と、算出した前記最も小さい処理実行時間の標準偏差とを比較した結果に基づいて、前記所定数を設定し、前記所定数を増加させる増加幅を設定する、ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記制御部は、
複数の処理のそれぞれの処理を、複数のノードのうち前記処理が用いるデータを有するノードに割り振った場合の、前記複数のノードのそれぞれのノードにおける処理実行時間を算出する、ことを特徴とする請求項１〜５のいずれか一つに記載の情報処理装置。
【請求項７】
複数のノードと、前記複数のノードに処理を割り振る情報処理装置とを含む分散処理システムであって、
前記情報処理装置は、
複数の処理のそれぞれの処理を、前記複数のノードのいずれかのノードに割り振った場合の、前記複数のノードのそれぞれのノードにおける処理実行時間を算出し、
前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に１以上のノードと、前記複数のノードから前記１以上のノードを除いた残余のノードのうち前記１以上のノードの処理を移動する１以上の移動先となるノードとを選択した、複数の組み合わせのそれぞれの組み合わせについて、処理の割り振りの調整を行う場合の、前記組み合わせにおける処理実行時間と、前記調整にかかる所要時間との合計値を算出し、
前記それぞれの組み合わせについて算出した合計値に基づいて、前記複数の組み合わせのいずれかの組み合わせを、前記調整の対象に決定する、
ことを特徴とする分散処理システム。
【請求項８】
複数の処理のそれぞれの処理を、複数のノードのいずれかのノードに割り振った場合の、前記複数のノードのそれぞれのノードにおける処理実行時間を算出し、
前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に１以上のノードと、前記複数のノードから前記１以上のノードを除いた残余のノードのうち前記１以上のノードの処理を移動する１以上の移動先となるノードとを選択した、複数の組み合わせのそれぞれの組み合わせについて、処理の割り振りの調整を行う場合の、前記組み合わせにおける処理実行時間と、前記調整にかかる所要時間との合計値を算出し、
前記それぞれの組み合わせについて算出した合計値に基づいて、前記複数の組み合わせのいずれかの組み合わせを、前記調整の対象に決定する、
処理をコンピュータに実行させることを特徴とする分散処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、分散処理システム、および分散処理プログラムに関する。
【背景技術】
【０００２】
従来、複数のノードを含み、それぞれのノードが蓄積するデータを用いる分析処理を、複数のノードで分散実行させ、分析処理の結果をユーザの端末装置に送信する分散処理システムがある。ノードは、例えば、サーバやデータセンタなどである。
【０００３】
先行技術としては、例えば、自ノードの処理負荷の上限値および現在値を参照して、処理を受け入れることの可否を応答するものがある。また、例えば、自コンピュータの負荷情報と他のコンピュータ群の負荷情報とを基にして負荷に余裕のあるコンピュータを特定する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−４６７６号公報
【特許文献２】特開平１０−７８９３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、処理を複数のノードで分散実行させる際に、処理の結果が得られるまでの所要時間を低減することが難しい。例えば、分析処理を分割した複数の処理の、複数のノードへの割り振りの調整を行うことにより、分析処理の実行時間の低減化を図る手法が考えられる。この手法では、分析処理の実行時間が低減される一方で、ノードの数が増加するほど調整にかかる所要時間が増大してしまい、分析処理の結果が得られるまでの所要時間は低減されない場合がある。
【０００６】
１つの側面では、本発明は、処理を分散実行する際に処理の結果が得られるまでの所要時間の低減化を図ることを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様によれば、複数の処理のそれぞれの処理を、複数のノードのいずれかのノードに割り振った場合の、前記複数のノードのそれぞれのノードにおける処理実行時間を算出し、前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に１以上のノードと、前記複数のノードから前記１以上のノードを除いた残余のノードのうち前記１以上のノードの処理を移動する１以上の移動先となるノードとを選択した、複数の組み合わせのそれぞれの組み合わせについて、処理の割り振りの調整を行う場合の、前記組み合わせにおける処理実行時間と、前記調整にかかる所要時間との合計値を算出し、前記それぞれの組み合わせについて算出した合計値に基づいて、前記複数の組み合わせのいずれかの組み合わせを、前記調整の対象に決定する情報処理装置、分散処理システム、および分散処理プログラムが提案される。
【発明の効果】
【０００８】
一態様によれば、処理を分散実行する際に処理の結果が得られるまでの所要時間の低減化を図ることが可能になる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかる分散処理方法の一実施例を示す説明図である。
【図２】図２は、分散処理システム２００の一例を示す説明図である。
【図３】図３は、分散処理システム２００の利用例を示す説明図である。
【図４】図４は、情報処理装置１００のハードウェア構成例を示すブロック図である。
【図５】図５は、エッジサーバ２０１のハードウェア構成例を示すブロック図である。
【図６】図６は、情報処理装置１００の機能的構成例を示すブロック図である。
【図７】図７は、情報処理装置１００の動作例１を示す説明図（その１）である。
【図８】図８は、情報処理装置１００の動作例１を示す説明図（その２）である。
【図９】図９は、情報処理装置１００の動作例１を示す説明図（その３）である。
【図１０】図１０は、情報処理装置１００の動作例１を示す説明図（その４）である。
【図１１】図１１は、情報処理装置１００の動作例１を示す説明図（その５）である。
【図１２】図１２は、動作例１における全体処理手順の一例を示すフローチャート（その１）である。
【図１３】図１３は、動作例１における全体処理手順の一例を示すフローチャート（その２）である。
【図１４】図１４は、情報処理装置１００の動作例２を示す説明図（その１）である。
【図１５】図１５は、情報処理装置１００の動作例２を示す説明図（その２）である。
【図１６】図１６は、情報処理装置１００の動作例２を示す説明図（その３）である。
【図１７】図１７は、情報処理装置１００の動作例２を示す説明図（その４）である。
【図１８】図１８は、情報処理装置１００の動作例２を示す説明図（その５）である。
【図１９】図１９は、動作例２における全体処理手順の一例を示すフローチャート（その１）である。
【図２０】図２０は、動作例２における全体処理手順の一例を示すフローチャート（その２）である。
【図２１】図２１は、動作例２における全体処理手順の一例を示すフローチャート（その３）である。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかる情報処理装置、分散処理システム、および分散処理プログラムの実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかる分散処理方法の一実施例）
図１は、実施の形態にかかる分散処理方法の一実施例を示す説明図である。情報処理装置１００は、分散処理システムを制御するコンピュータである。
【００１２】
分散処理システムは、複数のノードを含み、それぞれのノードが蓄積するデータを用いる所定の処理を形成する複数の処理を、複数のノードで分散実行させ、所定の処理の結果をユーザの端末装置に送信する。ノードは、例えば、サーバやデータセンタなどである。複数の処理のそれぞれの処理は、例えば、タスクである。
【００１３】
ここで、例えば、複数の処理を複数のノードで分散実行させる手法として、複数の処理のそれぞれの処理を、複数のノードのうち処理が用いるデータを有するノードに割り振って、複数の処理を複数のノードで分散実行させることが考えられる。
【００１４】
しかしながら、この手法では、所定の処理を形成する複数の処理を、複数のノードで分散実行させる際に、所定の処理の結果が得られるまでの所要時間を低減することは難しい。例えば、複数のノードは、それぞれ、有する計算資源の量、帯域、および、有するデータ量などが異なる。このため、複数のノードのそれぞれのノードで、割り振られた処理を実行完了するまでの処理実行時間は、ノード間で偏りが生じる傾向がある。従って、最も処理実行時間が大きいノードがボトルネックとなり、所定の処理を実行完了するまでの処理実行時間を低減することが難しくなる。結果として、所定の処理の結果が得られるまでの所要時間を低減することが難しい。
【００１５】
これに対し、所定の処理を形成する複数の処理の、複数のノードへの割り振りの調整を行うことにより、所定の処理を実行完了するまでの処理実行時間の低減化を図る手法が考えられる。調整は、例えば、割り振りパターンを総当たりして、所定の処理を実行完了するまでの処理実行時間を最小化する割り振りパターンを探索することにより行われる。調整は、具体的には、Ｍｅｓｏｓなどが利用される。
【００１６】
この手法でも、所定の処理を形成する複数の処理を、複数のノードで分散実行させる際に、所定の処理の結果が得られるまでの所要時間を低減することは難しい。例えば、この手法では、所定の処理を実行完了するまでの処理実行時間が低減される一方で、分散処理システムに含まれるノードの数が増加するほど、調整にかかる所要時間が増大してしまう。この際、調整にかかる所要時間が、所定の処理を実行完了するまでの処理実行時間を低減した分を超えることもある。結果として、所定の処理の結果が得られるまでの所要時間を低減することが難しい。
【００１７】
そこで、本実施の形態では、所定の処理を実行完了するまでの処理実行時間と、所定の処理を形成する複数の処理の複数のノードへの割り振りの調整にかかる所要時間とのバランスを考慮することができる分散処理方法について説明する。この分散処理方法によれば、所定の処理を形成する複数の処理を複数のノードで分散実行する際に、所定の処理の結果が得られるまでの所要時間の低減化を図ることができる。
【００１８】
図１において、（１−１）情報処理装置１００は、所定の処理を形成する複数の処理のそれぞれの処理を、複数のノードのいずれかのノードに割り振った場合の、複数のノードのそれぞれのノードにおける処理実行時間を算出する。図１の例では、情報処理装置１００は、複数の処理のそれぞれの処理を、ノード＃１，ノード＃２，ノード＃３，・・・，ノード＃Ｎに割り振った場合の、ノード＃１，ノード＃２，ノード＃３，・・・，ノード＃Ｎにおける処理実行時間を算出する。ここでは、説明の簡略化のため、ノード＃１から順に、算出された処理実行時間が大きい場合を一例として説明する。
【００１９】
（１−２）情報処理装置１００は、処理の割り振りの調整を行う候補となる、ノードを選択して形成した、複数の組み合わせを特定する。組み合わせは、複数のノードのうち算出した処理実行時間が最も大きいノードから順に１以上のノードと、複数のノードから１以上のノードを除いた残余のノードのうち１以上のノードの処理を移動する１以上の移動先となるノードとを選択したノード群である。情報処理装置１００は、特定した複数の組み合わせのそれぞれの組み合わせについて、処理の割り振りの調整を行う場合の、組み合わせにおける処理実行時間と、調整にかかる所要時間との合計値を算出する。
【００２０】
図１の例では、情報処理装置１００は、処理実行時間が最も大きいノードから順にノード＃１と、残余のノードのうち移動先となるノード＃Ｎとを選択した組み合わせｇ１を特定する。情報処理装置１００は、組み合わせｇ１について、処理の割り振りの調整を行う場合の、組み合わせｇ１における処理実行時間と、調整にかかる所要時間との合計値を算出する。また、情報処理装置１００は、処理実行時間が最も大きいノードから順にノード＃１，ノード＃２と、残余のノードのうち移動先となるノード＃Ｎ−２，ノード＃Ｎ−１，ノード＃Ｎとを選択した組み合わせｇ２を特定する。情報処理装置１００は、組み合わせｇ２について、処理の割り振りの調整を行う場合の、組み合わせｇ２における処理実行時間と、調整にかかる所要時間との合計値を算出する。
【００２１】
ここで、組み合わせに含まれるノードの数が減少するほど、処理の割り振りの調整を行う範囲が狭くなるため、組み合わせにおける処理実行時間が増加する傾向がある。組み合わせに含まれるノードの数と、組み合わせにおける処理実行時間の関係は、グラフ１１０の特性曲線１１１になる。一方で、組み合わせに含まれるノードの数が増加するほど、調整において総当たりする割り振りパターンの数が増加するため、調整にかかる所要時間が増加する傾向がある。組み合わせに含まれるノードの数と、調整にかかる所要時間との関係は、グラフ１１０の特性曲線１１２になる。
【００２２】
ここで、特性曲線１１１，１１２を考慮すれば、組み合わせにおける処理実行時間と、調整にかかる所要時間とをバランスよく低減し、所定の処理の結果が得られるまでの所要時間の低減化への寄与度が大きい組み合わせほど、合計値が小さくなる。組み合わせに含まれるノードの数と、組み合わせにおける処理実行時間と調整にかかる所要時間との合計値との関係は、グラフ１１０の特性曲線１１３になる。
【００２３】
（１−３）情報処理装置１００は、それぞれの組み合わせについて算出した合計値に基づいて、複数の組み合わせのいずれかの組み合わせを、調整の対象に決定する。図１の例では、情報処理装置１００は、組み合わせｇ１と組み合わせｇ２とのうち、合計値が小さい組み合わせｇ２を、調整の対象に決定する。これにより、情報処理装置１００は、所定の処理を形成する複数の処理を複数のノードで分散実行する際に、所定の処理の結果が得られるまでの所要時間の低減化を図ることができる。
【００２４】
ここでは、情報処理装置１００が、複数の組み合わせを一度に特定し、調整の対象を決定する場合について説明したが、これに限らない。例えば、情報処理装置１００が、組み合わせを増やしながら、調整の対象に決定する組み合わせを探索する場合があってもよい。この場合の情報処理装置１００の動作例は、具体的には、図７〜図１１を用いて後述する動作例１、または、図１４〜図１８を用いて後述する動作例２などに対応する。
【００２５】
（分散処理システム２００の一例）
次に、図２を用いて、図１に示した情報処理装置１００を適用した、分散処理システム２００の一例について説明する。
【００２６】
図２は、分散処理システム２００の一例を示す説明図である。図２において、分散処理システム２００は、情報処理装置１００と、複数のエッジサーバ２０１と、ユーザ端末装置２０２とを含む。以下の説明では、複数のエッジサーバ２０１のそれぞれのエッジサーバ２０１を区別する場合、エッジサーバ２０１のＩＤ「＃ｉ（ｉは自然数）」を用いて「エッジサーバ２０１＃ｉ」と表記する場合がある。
【００２７】
分散処理システム２００において、情報処理装置１００とエッジサーバ２０１とは、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、インターネット２１１、および、Ｅｄｇｅ  ＮＷ（ＮｅｔＷｏｒｋ）２１２などである。また、情報処理装置１００とユーザ端末装置２０２とは、有線または無線により接続される。情報処理装置１００とユーザ端末装置２０２とは、ネットワーク２１０を介して接続されてもよい。
【００２８】
情報処理装置１００は、例えば、ユーザ端末装置２０２からクエリを受け付け、クエリにより実行を要求された所定の処理を形成する複数のタスクを複数のエッジサーバ２０１に割り振るコンピュータである。所定の処理は、例えば、エッジサーバ２０１が有するデータを用いた分析処理である。分析処理は、例えば、セッションログ解析処理やサーバヘルス解析処理などである。情報処理装置１００は、例えば、複数のタスクの処理結果に基づき、所定の処理の結果をユーザ端末装置２０２に送信する。
【００２９】
ここで、情報処理装置１００は、例えば、複数のタスクを複数のエッジサーバ２０１に割り振る際、タスクの割り振りの調整を行い、所定の処理自体にかかる所要時間の低減化を図る。以下の説明では、タスクの割り振りの調整を、「タスク配置決定」と表記する場合がある。また、情報処理装置１００は、タスク配置決定において、タスク配置決定対象の絞り込みを行い、タスク配置決定にかかる所要時間の低減化も図る。情報処理装置１００は、所定の処理自体にかかる所要時間の低減化、および、タスク配置決定にかかる所要時間の低減化により、所定の処理の結果が得られるまでの所要時間の低減化を図る。情報処理装置１００は、例えば、サーバやＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などである。
【００３０】
エッジサーバ２０１は、例えば、図１に示したノードとして動作するコンピュータである。エッジサーバ２０１は、例えば、データを記憶する。データは、例えば、ＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）機器などから収集される。データは、例えば、エッジサーバ２０１で検出されてもよい。エッジサーバ２０１は、例えば、１以上の計算資源を有する。計算資源は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００３１】
エッジサーバ２０１は、例えば、自サーバの計算資源により、自サーバのデータを用いて、自サーバに割り振られたタスクを実行する。エッジサーバ２０１は、タスクの処理結果を記憶する。エッジサーバ２０１間で、データ量は異なることがある。エッジサーバ２０１間で、計算資源の量は異なることがある。エッジサーバ２０１間で、帯域が異なることがある。
【００３２】
ユーザ端末装置２０２は、分散処理システム２００を利用するユーザによって使用されるコンピュータである。ユーザ端末装置２０２は、例えば、ユーザの操作入力に基づき、所定の処理の実行を要求するクエリを情報処理装置１００に送信する。また、ユーザ端末装置２０２は、例えば、所定の処理の結果を情報処理装置１００から受信する。ユーザ端末装置２０２は、例えば、受信した所定の処理の結果を表示する。ユーザ端末装置２０２は、例えば、ＰＣ、タブレット端末、スマートフォンなどである。
【００３３】
ここでは、情報処理装置１００が、ユーザ端末装置２０２とは異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置１００が、ユーザ端末装置２０２としても動作する場合があってもよい。この場合、分散処理システム２００は、ユーザ端末装置２０２を含まなくてもよい。
【００３４】
また、ここでは、タスクの割当先が、エッジサーバ２０１であり、１つの装置である場合について説明したが、これに限らない。例えば、タスクの割当先が、データセンタなどの複数の装置の集合である場合があってもよい。分散処理システム２００は、エッジサーバ２０１と、データセンタとを両方含んでもよい。
【００３５】
（分散処理システム２００の利用例）
次に、図３を用いて、図２に示した分散処理システム２００の利用例について説明する。
【００３６】
図３は、分散処理システム２００の利用例を示す説明図である。図３において、ユーザは、ユーザ端末装置２０２を用いて、分析処理を要求するクエリを、情報処理装置１００に送信することにより、分散処理システム２００を利用する。クエリは、ＤＡＧ（Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）を定義する情報を含む。
【００３７】
ＤＡＧは、タスクを節として、データの流れを枝として示すグラフである。ＤＡＧは、例えば、Ｍａｐ−Ｒｅｄｕｃｅのプログラミングモデルに基づき、複数の前段タスクと、複数の後段タスクと、データの流れとを示すグラフである。これによれば、ユーザは、分散処理システム２００に、ＤＡＧ生成と、タスク配置決定と、タスク配置起動と、タスク実行と、処理結果格納とを行わせることができる。
【００３８】
ユーザは、例えば、分散処理システム２００に、ＤＡＧ生成を行わせることができる。ユーザは、例えば、分散処理システム２００に、ＤＡＧを参照し、複数の前段タスクについて、タスク配置決定と、タスク配置起動と、タスク実行と、処理結果格納とを行わせることができる。ユーザは、例えば、分散処理システム２００に、ＤＡＧを参照し、複数の前段タスクの処理結果に基づき、複数の後段タスクについて、タスク配置決定と、タスク配置起動と、タスク実行と、処理結果格納とを行わせることができる。
【００３９】
タスク配置決定は、所定の処理を形成する複数のタスクの、タスク配置決定対象とする複数のエッジサーバに対する配置を決定する作業である。タスク配置決定は、例えば、タスク配置決定対象とする複数のエッジサーバにおけるタスク実行時間を最小化するように、タスク配置決定対象とする複数のエッジサーバに対してタスクを配置する配置パターンを総当たりで探索する作業である。
【００４０】
タスク配置起動は、複数のタスクを、分散処理システム２００に含まれる複数のエッジサーバに配置する作業である。タスク実行は、実際に、複数のタスクを、分散処理システム２００に含まれる複数のエッジサーバで分散実行する作業である。処理結果格納は、複数のタスクを、分散処理システム２００に含まれる複数のエッジサーバで分散実行して得られた処理結果を、記憶領域に格納する作業である。
【００４１】
（情報処理装置１００のハードウェア構成例）
次に、図４を用いて、情報処理装置１００のハードウェア構成例について説明する。
【００４２】
図４は、情報処理装置１００のハードウェア構成例を示すブロック図である。図４において、情報処理装置１００は、ＣＰＵ４０１と、メモリ４０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０３と、記録媒体Ｉ／Ｆ４０４と、記録媒体４０５とを有する。また、各構成部は、バス４００によってそれぞれ接続される。
【００４３】
ここで、ＣＰＵ４０１は、情報処理装置１００の全体の制御を司る。メモリ４０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ４０１のワークエリアとして使用される。メモリ４０２に記憶されるプログラムは、ＣＰＵ４０１にロードされることで、コーディングされている処理をＣＰＵ４０１に実行させる。
【００４４】
ネットワークＩ／Ｆ４０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ４０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ４０３は、例えば、モデムやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）アダプタなどである。
【００４５】
記録媒体Ｉ／Ｆ４０４は、ＣＰＵ４０１の制御に従って記録媒体４０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ４０４は、例えば、ディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどである。記録媒体４０５は、記録媒体Ｉ／Ｆ４０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体４０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体４０５は、情報処理装置１００から着脱可能であってもよい。
【００４６】
情報処理装置１００は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置１００は、記録媒体Ｉ／Ｆ４０４や記録媒体４０５を複数有していてもよい。また、情報処理装置１００は、記録媒体Ｉ／Ｆ４０４や記録媒体４０５を有していなくてもよい。
【００４７】
（エッジサーバ２０１のハードウェア構成例）
次に、図５を用いて、エッジサーバ２０１のハードウェア構成例について説明する。
【００４８】
図５は、エッジサーバ２０１のハードウェア構成例を示すブロック図である。図５において、エッジサーバ２０１は、１以上のＣＰＵ５０１と、メモリ５０２と、ネットワークＩ／Ｆ５０３と、記録媒体Ｉ／Ｆ５０４と、記録媒体５０５とを有する。また、各構成部は、バス５００によってそれぞれ接続される。
【００４９】
ここで、ＣＰＵ５０１は、エッジサーバ２０１の全体の制御を司る。メモリ５０２は、例えば、ＲＯＭ、ＲＡＭおよびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ５０１のワークエリアとして使用される。メモリ５０２に記憶されるプログラムは、ＣＰＵ５０１にロードされることで、コーディングされている処理をＣＰＵ５０１に実行させる。
【００５０】
ネットワークＩ／Ｆ５０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ５０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ５０３は、例えば、モデムやＬＡＮアダプタなどである。
【００５１】
記録媒体Ｉ／Ｆ５０４は、ＣＰＵ５０１の制御に従って記録媒体５０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ５０４は、例えば、ディスクドライブ、ＳＳＤ、ＵＳＢポートなどである。記録媒体５０５は、記録媒体Ｉ／Ｆ５０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体５０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体５０５は、エッジサーバ２０１から着脱可能であってもよい。
【００５２】
エッジサーバ２０１は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、エッジサーバ２０１は、記録媒体Ｉ／Ｆ５０４や記録媒体５０５を複数有していてもよい。また、エッジサーバ２０１は、記録媒体Ｉ／Ｆ５０４や記録媒体５０５を有していなくてもよい。
【００５３】
（情報処理装置１００の機能的構成例）
次に、図６を用いて、情報処理装置１００の機能的構成例について説明する。
【００５４】
図６は、情報処理装置１００の機能的構成例を示すブロック図である。情報処理装置１００は、記憶部６００と、取得部６０１と、第１算出部６０２と、選択部６０３と、第２算出部６０４と、決定部６０５と、出力部６０６とを含む。
【００５５】
記憶部６００は、例えば、図４に示したメモリ４０２や記録媒体４０５などの記憶領域によって実現される。以下では、記憶部６００が、情報処理装置１００に含まれる場合について説明するが、これに限らない。例えば、記憶部６００が、情報処理装置１００とは異なる装置に含まれ、記憶部６００の記憶内容が情報処理装置１００から参照可能である場合があってもよい。
【００５６】
取得部６０１〜出力部６０６は、制御部の一例として機能する。取得部６０１〜出力部６０６は、具体的には、例えば、図４に示したメモリ４０２や記録媒体４０５などの記憶領域に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、ネットワークＩ／Ｆ４０３により、その機能を実現する。各機能部の処理結果は、例えば、図４に示したメモリ４０２や記録媒体４０５などの記憶領域に記憶される。
【００５７】
記憶部６００は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部６００は、例えば、複数のノードのそれぞれのノードのパラメータを記憶する。ノードは、例えば、図２に示したエッジサーバ２０１である。パラメータは、例えば、ノードが有する使用可能な計算資源の量である。計算資源は、例えば、ＣＰＵ５０１である。パラメータは、例えば、ノードの帯域の大きさである。記憶部６００は、例えば、複数のノードのそれぞれのノードが記憶するデータの種別や量を記憶する。
【００５８】
記憶部６００は、例えば、処理の割り振りの調整を行う対象となるノードの数ごとに、処理の割り振りの調整にかかる所要時間の実測値を記憶する。処理は、例えば、タスクである。記憶部６００は、例えば、１つの処理にかかる処理実行時間、および、１つの処理が用いるデータ量を記憶する。記憶部６００は、具体的には、１つのタスクのタスク実行時間、および、１つのタスクが用いるデータ量を記憶する。以下、取得部６０１〜出力部６０６に関する説明では、処理が「タスク」である場合を一例として説明する。
【００５９】
取得部６０１は、各機能部の処理に用いられる各種情報を取得する。取得部６０１は、取得した各種情報を、記憶部６００に記憶し、または、各機能部に出力する。また、取得部６０１は、記憶部６００に記憶しておいた各種情報を、各機能部に出力してもよい。取得部６０１は、例えば、ユーザの操作入力に基づき、各種情報を取得する。取得部６０１は、例えば、情報処理装置１００とは異なる装置から、各種情報を受信してもよい。
【００６０】
第１算出部６０２は、複数のタスクのそれぞれのタスクを、複数のノードのいずれかのノードに割り振った場合の、複数のノードのそれぞれのノードにおけるタスク実行時間を算出する。ノードにおけるタスク実行時間は、ノードに割り振った１以上のタスクをすべて実行完了するまでの所要時間である。タスクを割り振っていないノードにおけるタスク実行時間は、０としてもよい。
【００６１】
第１算出部６０２は、例えば、それぞれのタスクを、タスクが用いるデータを有するノードに割り振った場合の、それぞれのノードにおけるタスク実行時間を算出する。第１算出部６０２は、具体的には、それぞれのノードが有する計算資源の量に基づいて、それぞれのタスクを、タスクが用いるデータを有するノードに割り振った場合の、それぞれのノードにおけるタスク実行時間を算出する。
【００６２】
第１算出部６０２は、より具体的には、ノードに割り振ったタスクの数を、ノードが有する計算資源の量で除算した結果に基づいて、ノードにおけるタスク実行時間を算出する。これにより、第１算出部６０２は、タスクの割り振りの調整を行う対象を決定するための指標を得ることができる。また、第１算出部６０２は、タスクの割り振りの調整を行う前の基準となる、タスクの割り振りパターンを特定することができる。
【００６３】
ここでは、第１算出部６０２が、それぞれのタスクを、タスクが用いるデータを有するノードに割り振った場合の、それぞれのノードにおけるタスク実行時間を算出する場合について説明したが、これに限らない。例えば、第１算出部６０２が、それぞれのタスクを、ランダムなノードに割り振った場合の、それぞれのノードにおけるタスク実行時間を算出する場合があってもよい。また、例えば、第１算出部６０２が、所定数のタスクずつノードに割り振った場合の、それぞれのノードにおけるタスク実行時間を算出する場合があってもよい。
【００６４】
第１算出部６０２は、算出したタスク実行時間のうち、最も大きいタスク実行時間の標準偏差と、最も小さいタスク実行時間の標準偏差とを算出してもよい。これにより、第１算出部６０２は、タスク実行時間のばらつきを示し、選択部６０３が用いるパラメータを決定するための指標を得ることができる。
【００６５】
選択部６０３は、タスクの割り振りの調整を行う候補となる、ノードの組み合わせを複数特定する。選択部６０３は、例えば、複数のノードのうち、算出したタスク実行時間が最も大きいノードから順に１以上の移動元となるノードを選択する。移動元となるノードは、タスクを移動することが望まれるノードである。次に、選択部６０３は、残余のノードのうち、１以上の移動元となるノードのタスクを移動する１以上の移動先となるノードを選択する。残余のノードは、複数のノードから、１以上の移動元となるノードを除いたノード群である。移動先となるノードは、タスクを移動することが可能なノードである。そして、選択部６０３は、選択したノード群を組み合わせとして特定する。これにより、選択部６０３は、第２算出部６０４の処理対象である、タスクの割り振りの調整を行う候補を特定することができる。
【００６６】
選択部６０３は、例えば、複数のノードのうち、算出したタスク実行時間が最も大きいノードから順に、１以上の移動元となるノードを選択する。この際、選択部６０３は、１以上の移動元となるノードのそれぞれのノードのタスク実行時間が閾値を超えた分を、第１データ量に換算する。閾値は、例えば、残余のノードのそれぞれのノードにおけるタスク実行時間のうち、最も大きいタスク実行時間である。次に、選択部６０３は、第１データ量が、１以上の移動先となるノードのそれぞれのノードにおけるタスク実行時間が閾値を下回った分から換算される第２データ量より小さくなるように、１以上の移動先となるノードを選択する。そして、選択部６０３は、選択したノード群を組み合わせとして特定する。これにより、選択部６０３は、第２算出部６０４の処理対象である、タスクの割り振りの調整を行う候補を特定することができる。また、選択部６０３は、組み合わせにおけるタスク実行時間を閾値以下にすることができる。組み合わせにおけるタスク実行時間は、組み合わせに含まれる各ノードにおけるタスク実行時間のうち、ボトルネックになる最も大きいタスク実行時間である。
【００６７】
選択部６０３は、例えば、複数のノードのうち、算出したタスク実行時間が最も大きいノードから順に１以上の移動元となるノードを選択する。次に、選択部６０３は、残余のノードのうち、算出したタスク実行時間が最も小さいノードから順に１以上の移動先となるノードを選択する。そして、選択部６０３は、選択したノード群を組み合わせとして特定する。これにより、選択部６０３は、第２算出部６０４の処理対象である、タスクの割り振りの調整を行う候補を特定することができる。また、選択部６０３は、組み合わせに含まれる移動先となるノードの数が最小になるようにすることができる。このため、選択部６０３は、調整にかかる所要時間の低減化を図ることができる。
【００６８】
選択部６０３は、具体的には、タスク実行時間が最も大きいノードから順に、所定数の移動元となるノードを選択する。所定数は、例えば、初期値が１である。次に、選択部６０３は、残余のノードのうち、所定数の移動元となるノードのタスクを移動する１以上の移動先となるノードを選択する。残余のノードは、例えば、複数のノードから所定数の移動元となるノードを除いたノード群である。そして、選択部６０３は、選択したノード群を組み合わせとして特定する。
【００６９】
その後、選択部６０３は、調整の対象が決定されるまで、所定数を増加させることを繰り返す。増加幅は、例えば、１である。ここで、選択部６０３は、所定数が増加する都度、タスク実行時間が最も大きいノードから順に所定数の移動元となるノードと、残余のノードのうち１以上の移動先となるノードとを選択した組み合わせを特定する。これにより、選択部６０３は、第２算出部６０４の処理対象である、タスクの割り振りの調整を行う候補を、１つずつ増加させることができる。
【００７０】
ここでは、選択部６０３が、所定数の初期値に１を設定し、増加幅に１を設定する場合について説明したが、これに限らない。例えば、選択部６０３は、最も大きいタスク実行時間の標準偏差と、最も小さいタスク実行時間の標準偏差とを比較した結果に基づいて、所定数を設定し、所定数を増加させる増加幅を設定する場合があってもよい。
【００７１】
選択部６０３は、具体的には、最も大きいタスク実行時間の標準偏差が、最も小さいタスク実行時間の標準偏差以上である場合、所定数の初期値に１を設定し、増加幅に第１数を設定する。第１数は、例えば、１である。一方で、選択部６０３は、具体的には、最も大きいタスク実行時間の標準偏差が、最も小さいタスク実行時間の標準偏差未満である場合、所定数の初期値に１を設定し、増加幅に第２数を設定する。第２数は、第１数より大きい。これにより、選択部６０３は、効率よく組み合わせを特定することができる。
【００７２】
第２算出部６０４は、選択部６０３が特定した組み合わせについてタスクの割り振りの調整を行う場合の、組み合わせにおけるタスク実行時間と調整にかかる所要時間との合計値を算出する。第２算出部６０４は、例えば、新たな組み合わせが特定される都度、新たな組み合わせについてタスクの割り振りの調整を行う場合の、新たな組み合わせにおけるタスク実行時間と調整にかかる所要時間との合計値を算出する。これにより、第２算出部６０４は、調整の対象を決定するための指標を得ることができる。
【００７３】
決定部６０５は、複数の組み合わせのそれぞれの組み合わせについて算出した合計値に基づいて、複数の組み合わせのいずれかの組み合わせを、調整の対象に決定する。決定部６０５は、例えば、複数の組み合わせのうち、算出した合計値が最も小さい組み合わせを、調整の対象に決定する。これにより、決定部６０５は、所定の処理の結果が得られるまでのトータルの所要時間の低減化が可能なように、調整の対象を決定することができる。
【００７４】
決定部６０５は、例えば、新たな合計値が算出される都度、算出済みの合計値のうち、所定の条件を満たす合計値がある場合、所定の条件を満たす合計値が算出された組み合わせを、調整の対象に決定する。決定部６０５は、具体的には、直前に算出した合計値より、新たな合計値が大きい場合、直前に算出した合計値に対応する組み合わせを、調整の対象に決定する。これにより、決定部６０５は、所定の処理の結果が得られるまでのトータルの所要時間の低減化が可能なように、調整の対象を決定することができる。
【００７５】
出力部６０６は、決定部６０５が決定した対象を、実際にタスクの割り振りの調整を行う機能部（不図示）に出力する。これにより、出力部６０６は、タスクの割り振りの調整を行わせることができ、所定の処理の結果が得られるまでのトータルの所要時間の低減化を図ることができる。出力部６０６は、タスクの割り振りの調整の結果に従って、タスクの実行要求を複数のノードのそれぞれのノードに出力する。これにより、出力部６０６は、タスクを実行させることができる。
【００７６】
出力部６０６は、いずれかの機能部の処理結果を出力してもよい。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークＩ／Ｆ４０３による外部装置への送信、または、メモリ４０２や記録媒体４０５などの記憶領域への記憶である。出力部６０６は、例えば、決定部６０５が決定した調整の対象を出力する。これにより、出力部６０６は、いずれかの機能部の処理結果をユーザに通知可能にすることができる。
【００７７】
（情報処理装置１００の動作例１）
次に、図７〜図１１を用いて、図２に示した分散処理システム２００を一例として、図２に示した分散処理システム２００における情報処理装置１００の動作例１について説明する。
【００７８】
図７〜図１１は、情報処理装置１００の動作例１を示す説明図である。図７は、例えば、タスク配置決定の性質を示す。タスク配置決定は、例えば、タスク配置決定対象とする複数のエッジサーバ２０１におけるタスク実行時間を最小化するように、タスク配置決定対象とする複数のエッジサーバ２０１に対してタスクを配置する配置パターンを総当たりで探索する作業である。タスク実行時間は、ネットワーク転送時間とタスク処理時間の和である。
【００７９】
ここで、ネットワーク転送時間は、タスクの配置先にタスクが用いるデータを転送する際にかかる時間であり、転送するデータ量／帯域である。タスク配置決定では、タスク配置決定対象とする複数のエッジサーバ２０１全体におけるネットワーク転送時間のボトルネックの最小化を図る。また、タスク処理時間は、タスクの数／計算資源の量に基づき算出される。タスク配置決定では、タスク配置決定対象とする複数のエッジサーバ２０１全体におけるタスク処理時間のボトルネックの最小化を図る。
【００８０】
また、タスク配置決定対象とする複数のエッジサーバ２０１に対してタスクを配置する配置パターンは、どのエッジサーバ２０１間でタスクが用いるデータを転送するかの転送パターンに対応する。転送パターンは、アップロードとダウンロードとを合わせて、タスク配置決定対象とするエッジサーバ２０１の数の二乗オーダとなる。
【００８１】
このため、タスク配置決定対象とするエッジサーバ２０１の数を減少させないと、総当たりする配置パターンの数の膨大化を招き、タスク配置決定にかかる所要時間の増大化を招くという性質がある。以下の説明では、タスク配置決定にかかる所要時間を「タスク配置決定時間」と表記する場合がある。例えば、タスク配置決定対象とするエッジサーバ２０１の数Ｘと、タスク配置決定時間ｆ（Ｘ）との関係は、グラフ７１０の特性曲線７１１になる。
【００８２】
一方で、タスク配置決定対象とするエッジサーバ２０１の数を減少させすぎると、タスク実行時間のボトルネックが大きくなるという性質がある。例えば、タスク配置決定対象ではないエッジサーバ２０１の計算資源に空きがあっても、タスク実行時間の平準化に利用されないため、タスク実行時間のボトルネックが大きくなりやすい。また、例えば、タスク配置決定対象ではないエッジサーバ２０１におけるタスク実行時間がボトルネックとなりうる。例えば、タスク配置決定対象とするエッジサーバ２０１の数Ｘと、タスク実行時間ｇ（Ｘ）との関係は、グラフ７２０の特性曲線７２１になる。
【００８３】
このように、タスク配置決定時間ｆ（Ｘ）の低減化と、タスク実行時間ｇ（Ｘ）の低減化との間には、トレードオフ関係が存在する。従って、所定の処理の結果が得られるまでの所要時間の低減化を図るために、タスク配置決定時間ｆ（Ｘ）とタスク実行時間ｇ（Ｘ）とをバランスよく低減することが望まれる。以下の説明では、所定の処理の結果が得られるまでの所要時間を「トータルの所要時間」と表記する場合がある。ここで、図８の説明に移行する。
【００８４】
図８において、情報処理装置１００は、トレードオフ関係を考慮し、タスク配置決定に先立って、タスク配置決定対象の絞り込みを行うことにより、タスク配置決定時間ｆ（Ｘ）とタスク実行時間ｇ（Ｘ）とをバランスよく低減する。タスク配置決定対象とするエッジサーバ２０１の数Ｘと、合計値ｆ（Ｘ）＋ｇ（Ｘ）との関係は、グラフ８００の特性曲線８０１になる。
【００８５】
図３に示した分散処理システム２００の利用例であれば、情報処理装置１００は、複数の前段タスクについての前段タスク配置決定に先立って、タスク配置決定対象の絞り込みを行うことになる。また、情報処理装置１００は、複数の後段タスクについての後段タスク配置決定に先立って、タスク配置決定対象の絞り込みを行うことになる。ここで、図９の説明に移行し、タスク配置決定対象の絞り込みの内容について説明する。
【００８６】
図９において、情報処理装置１００は、複数のタスクのそれぞれのタスクを、タスクが用いるデータがあるエッジサーバ２０１に割り振る。ここで、エッジサーバ２０１の計算資源の量に対してデータ量が多い場合、エッジサーバ２０１の計算資源の量に対して比較的多くのタスクが割り振られ、タスク実行時間が大きくなる傾向がある。例えば、エッジサーバ２０１＃１は、１つの計算資源で、３つのタスクを実行することになり、タスク実行時間が大きくなる。
【００８７】
一方で、エッジサーバ２０１の計算資源の量に対してデータ量が少ない場合、エッジサーバ２０１の計算資源の量に対して比較的少ないタスクが割り振られ、タスク実行時間が小さくなる傾向がある。例えば、エッジサーバ２０１＃４は、３つの計算資源で、１つのタスクを実行すればよく、タスク実行時間が小さくなる。また、帯域が広いエッジサーバ２０１は、データ転送速度が速く、データを移動させることが比較的容易になる傾向がある。
【００８８】
ここで、情報処理装置１００は、タスク配置決定対象の絞り込みを行う。情報処理装置１００は、例えば、タスク配置決定対象を、タスクを移動することが好ましいエッジサーバ２０１と、タスクを移動される余裕があるエッジサーバ２０１とに絞り込む。エッジサーバ２０１は、タスク実行時間が大きいほど、タスクを他のエッジサーバ２０１に移動して負荷分散することが好ましい。タスクを移動される余裕とは、タスクを移動されても、エッジサーバ２０１におけるタスク実行時間が一定以下に抑制可能であることである。
【００８９】
情報処理装置１００は、具体的には、最もタスク実行時間が大きいエッジサーバ２０１から順に、タスクを移動することが好ましい移動元となるエッジサーバ２０１を１つずつ増やしていく。情報処理装置１００は、移動元となるエッジサーバ２０１を増やす都度、最もタスク実行時間が小さいエッジサーバ２０１から順に、移動先となるエッジサーバ２０１を選択し、タスク配置決定時間ｆ（Ｘ）とタスク実行時間ｇ（Ｘ）とを算出する。情報処理装置１００は、タスク配置決定時間ｆ（Ｘ）とタスク実行時間ｇ（Ｘ）との合計値ｆ（Ｘ）＋ｇ（Ｘ）を算出する。
【００９０】
そして、情報処理装置１００は、タスク配置決定時間ｆ（Ｘ）とタスク実行時間ｇ（Ｘ）との合計値ｆ（Ｘ）＋ｇ（Ｘ）が最も小さくなるエッジサーバ２０１の組み合わせを特定し、タスク配置決定対象に決定する。これにより、情報処理装置１００は、複数のタスクを複数のエッジサーバ２０１で分散実行する際に、トータルの所要時間の低減化を図ることができる。
【００９１】
従来では、例えば、エッジサーバ２０１が数百台の場合、分析要求のクエリの受付から分析処理の結果の出力までに数分かかることがある。一方で、情報処理装置１００は、例えば、エッジサーバ２０１が数百台の場合でも、タスク配置決定対象の絞り込みを含む、分析要求のクエリの受付から分析処理の結果の出力までの期間８１０を、数十秒に抑制することができる。ここで、図１０および図１１の説明に移行し、タスク配置決定対象の絞り込みの内容について具体的に説明する。
【００９２】
図１０において、情報処理装置１００は、変数ｘを用意し、変数ｘを１ずつインクリメントする。情報処理装置１００は、インクリメントの都度、ｘ個の移動元となるエッジサーバ２０１を選択し、ｘ個の移動元のエッジサーバ２０１からタスクを移動するｙ個の移動先となるエッジサーバ２０１を選択する。
【００９３】
情報処理装置１００は、ｘ個の移動元となるエッジサーバ２０１とｙ個の移動先となるエッジサーバ２０１とを含むエッジサーバ２０１群を選択する都度、エッジサーバ２０１群をタスク配置決定対象の候補とする。情報処理装置１００は、タスク配置決定対象の候補について、タスク配置決定時間ｆ（ｘ＋ｙ）とタスク実行時間ｇ（ｘ＋ｙ）との合計値ｓ（ｘ）＝ｆ（ｘ＋ｙ）＋ｇ（ｘ＋ｙ）を算出する。ｘ＋ｙは、上述したＸに対応する。
【００９４】
そして、情報処理装置１００は、合計値ｓ（ｘ）を算出する都度、今回算出した合計値ｓ（ｘ）が前回算出した合計値ｓ（ｘ−１）より大きいか否かを判定する。情報処理装置１００は、合計値ｓ（ｘ）の特性曲線８０１は凹型であるため、今回算出した合計値ｓ（ｘ−１）が前回算出した合計値ｓ（ｘ）より大きい場合、前回算出した合計値ｓ（ｘ−１）が最小値であると判断する。このため、情報処理装置１００は、前回のタスク配置決定対象の候補を、タスク配置決定対象に確定する。
【００９５】
ここで、ｘ＝２の場合を一例として、エッジサーバ２０１ごとのタスク実行時間の一例を示すグラフ１０００を参照して、情報処理装置１００が、ｙ個の移動先となるエッジサーバ２０１を選択する具体例について説明する。
【００９６】
まず、情報処理装置１００は、ｘ＝２個の移動元となるエッジサーバ２０１のそれぞれのエッジサーバ２０１におけるタスク実行時間の、タスク実行上限値からの超過分１０１０を、データ量に換算する。タスク実行上限値は、タスク配置決定対象とされる各エッジサーバ２０１におけるタスク実行時間に共通した上限値である。情報処理装置１００は、１つのタスクのタスク実行時間、および、１つのタスクが用いるデータ量が既知であれば、単位時間に扱うデータ量を特定可能であるため、計算資源の量を考慮して、超過分１０１０をデータ量に換算可能である。
【００９７】
情報処理装置１００は、換算したデータ量をｘ＝２個の移動元となるエッジサーバ２０１からダウンロードし、換算したデータ量を扱うタスクを実行しても、タスク実行時間がタスク実行上限値を超えないｙ個のエッジサーバ２０１を移動先として選択する。換言すれば、情報処理装置１００は、タスク実行間が、換算したデータ量のダウンロードにかかる時間１０２１と、換算したデータ量を扱うタスクの実行にかかる時間１０２２との合計分１０２０増えても、タスク実行上限値を超えない移動先を選択する。換算したデータ量を扱うタスクの実行にかかる時間１０２２は、例えば、計算資源の量を考慮して算出される。図１０の例では、情報処理装置１００は、タスク実行時間が最も小さいエッジサーバ２０１から順に、ｙ＝１個目までのエッジサーバ２０１を移動先として選択する。ここで、図１１の説明に移行し、タスク実行上限値について具体的に説明する。
【００９８】
図１１において、ｘ＝２である場合、タスク実行時間が最も大きいエッジサーバ２０１からｘ＝２個目までのエッジサーバ２０１におけるタスク実行時間が、全体としてのボトルネックであると扱い、移動元として選択している。
【００９９】
これに対し、ｘ＝２個の移動元となるエッジサーバ２０１のタスクをすべて移動したとしても、タスク実行時間が最も大きいエッジサーバ２０１からｘ＋１＝３個目にあるエッジサーバ２０１におけるタスク実行時間は低減されない。このため、ｘ＝２個の移動元となるエッジサーバ２０１のタスクをすべて移動したとしても、タスク実行時間が最も大きいエッジサーバ２０１からｘ＋１＝３個目にあるエッジサーバ２０１におけるタスク実行時間が、全体としてのボトルネックとなる。
【０１００】
従って、ｘ＝２個の移動元となるエッジサーバ２０１におけるタスク実行時間を、ｘ＋１＝３個目にあるエッジサーバ２０１におけるタスク実行時間よりも小さくしても、全体としてのボトルネックを小さくすることはできない。このため、情報処理装置１００は、例えば、タスク実行上限値に、ｘ＋１＝３個目にあるエッジサーバ２０１におけるタスク実行時間を設定する。
【０１０１】
これにより、ｘ＋ｙ＝３個のエッジサーバ２０１をタスク配置決定対象の候補とした場合の、タスク配置決定対象全体におけるタスク実行時間ｇ（ｘ＋ｙ）は、タスク実行上限値と一致する。このため、情報処理装置１００は、タスク配置決定時間ｆ（ｘ＋ｙ）とタスク実行時間ｇ（ｘ＋ｙ）との合計値ｓ（ｘ）を算出する際、タスク配置決定対象全体におけるタスク実行時間ｇ（ｘ＋ｙ）として、タスク実行上限値を用いればよい。
【０１０２】
（動作例１における全体処理手順）
次に、図１２および図１３を用いて、動作例１における情報処理装置１００が実行する、全体処理手順の一例について説明する。全体処理は、例えば、図４に示したＣＰＵ４０１と、メモリ４０２や記録媒体４０５などの記憶領域と、ネットワークＩ／Ｆ４０３とによって実現される。
【０１０３】
図１２および図１３は、動作例１における全体処理手順の一例を示すフローチャートである。図１２において、情報処理装置１００は、複数のタスクのそれぞれのタスクを、複数のノードのうちタスクが用いるデータを有するノードに配置した状況における、複数のノードのそれぞれのノードにおけるタスク実行時間を算出する（ステップＳ１２０１）。
【０１０４】
次に、情報処理装置１００は、複数のノードを、算出したタスク実行時間が大きい順にソートする（ステップＳ１２０２）。そして、情報処理装置１００は、図１３のステップＳ１３０１の処理に移行する。ここで、図１３の説明に移行する。
【０１０５】
図１３において、情報処理装置１００は、変数ｘをインクリメントする（ステップＳ１３０１）。次に、情報処理装置１００は、タスク実行時間が最も大きいノードから順にｘ個のノードを選択し、タスク実行時間が最も小さいノードから順に、ｘ個のノードからタスクを移動するｙ個の移動先となるノードを探索する（ステップＳ１３０２）。そして、情報処理装置１００は、タスク実行時間ｇ（ｘ＋ｙ）を決定する（ステップＳ１３０３）。
【０１０６】
次に、情報処理装置１００は、タスク配置決定時間ｆ（ｘ＋ｙ）の実測値を取得する（ステップＳ１３０４）。そして、情報処理装置１００は、タスク実行時間ｇ（ｘ＋ｙ）とタスク配置決定時間ｆ（ｘ＋ｙ）との合計値ｓ（ｘ）＝ｆ（ｘ＋ｙ）＋ｇ（ｘ＋ｙ）を算出する（ステップＳ１３０５）。
【０１０７】
次に、情報処理装置１００は、ｓ（ｘ−１）＞ｓ（ｘ）であるか否かを判定する（ステップＳ１３０６）。ここで、ｓ（ｘ−１）＞ｓ（ｘ）ではない場合（ステップＳ１３０６：Ｎｏ）、情報処理装置１００は、ステップＳ１３１１の処理に移行する。一方で、ｓ（ｘ−１）＞ｓ（ｘ）である場合（ステップＳ１３０６：Ｙｅｓ）、ステップＳ１３０７の処理に移行する。
【０１０８】
ステップＳ１３０７では、情報処理装置１００は、ｘ個のノードとｙ個のノードとを含むノード群Ｇ（ｘ）のそれぞれのノードのＩＤを記憶する（ステップＳ１３０７）。次に、情報処理装置１００は、ｘ＋ｙがノード数以上であるか否かを判定する（ステップＳ１３０８）。ここで、ｘ＋ｙがノード数以上ではない場合（ステップＳ１３０８：Ｎｏ）、情報処理装置１００は、ステップＳ１３０１の処理に戻る。一方で、ｘ＋ｙがノード数以上である場合（ステップＳ１３０８：Ｙｅｓ）、情報処理装置１００は、ステップＳ１３０９の処理に移行する。
【０１０９】
ステップＳ１３０９では、情報処理装置１００は、タスク配置決定対象を、ｓ（ｘ）を算出したノード群Ｇ（ｘ）に決定する（ステップＳ１３０９）。次に、情報処理装置１００は、ノード群Ｇ（ｘ）のそれぞれのノードのＩＤを読み出す（ステップＳ１３１０）。そして、情報処理装置１００は、全体処理を終了する。
【０１１０】
ステップＳ１３１１では、情報処理装置１００は、タスク配置決定対象を、ｓ（ｘ−１）を算出したノード群Ｇ（ｘ−１）に決定する（ステップＳ１３１１）。次に、情報処理装置１００は、ノード群Ｇ（ｘ−１）のそれぞれのノードのＩＤを読み出す（ステップＳ１３１２）。そして、情報処理装置１００は、全体処理を終了する。
【０１１１】
ここでは、説明の簡略化のため、情報処理装置１００が、ステップＳ１３０２で、ｙ個のノードを探索成功する場合について説明したが、これに限らない。例えば、ステップＳ１３０２で、ｙ個のノードを探索失敗する場合が考えられる。この場合、情報処理装置１００は、タスク配置決定対象を、ｓ（ｘ−１）を算出したノード群Ｇ（ｘ−１）に決定してもよい。
【０１１２】
（情報処理装置１００の動作例２）
次に、図１４〜図１８を用いて、図２に示した分散処理システム２００を一例として、図２に示した分散処理システム２００における情報処理装置１００の動作例２について説明する。
【０１１３】
図１４〜図１８は、情報処理装置１００の動作例２を示す説明図である。図１４に示すように、動作例２は、情報処理装置１００が、さらにタスク配置決定対象の絞り込みにかかる所要時間の低減化を図ることにより、トータルの所要時間の低減化を図るという一例である。
【０１１４】
例えば、エッジサーバ２０１間のデータ量および計算資源の量の偏りの度合いにより、タスク実行時間ｇ（ｘ＋ｙ）の減少幅は変化する性質がある。このため、情報処理装置１００は、当該性質に基づいて、合計値ｓ（ｘ＋ｙ）が最小値になるタスク配置決定対象が比較的早期に発見可能な状況であるか否かを推定し、タスク配置決定対象の絞り込みにかかる所要時間の低減化を図る。早期とは、ｘ＋ｙが比較的小さいことを示す。ここで、図１５の説明に移行し、合計値ｓ（ｘ＋ｙ）が最小値になるタスク配置決定対象が比較的早期に発見可能な状況について説明する。
【０１１５】
図１５の例では、グラフ１５００に示すように、エッジサーバ２０１間のデータ量および計算資源の量の偏りの度合いにより、タスク配置決定対象とするエッジサーバ２０１の数ｘ＋ｙの増加に伴うｇ（ｘ＋ｙ）の減少幅が大きい。このため、グラフ１５００に示すように、合計値ｓ（ｘ＋ｙ）が最小になるタスク配置決定対象とするエッジサーバ２０１の数ｘ＋ｙは、比較的小さくなる傾向がある。従って、情報処理装置１００は、図１５の状況では、合計値ｓ（ｘ＋ｙ）が最小値になるタスク配置決定対象が比較的早期に発見可能な状況であると判断する。
【０１１６】
このため、情報処理装置１００は、変数ｘを比較的小さく変化させながら、合計値ｓ（ｘ）が最小値になるタスク配置決定対象を探索しても、合計値ｓ（ｘ）が最小値になるタスク配置決定対象を早期に特定可能であると判断し、変数ｘを第１数に設定する。第１数は、比較的小さく、例えば、１である。そして、情報処理装置１００は、変数ｘを第１数ずつ変化させながら、合計値ｓ（ｘ）が最小値になるタスク配置決定対象を探索する。ここで、図１６の説明に移行し、合計値ｓ（ｘ＋ｙ）が最小値になるタスク配置決定対象が比較的早期に発見可能ではない状況について説明する。
【０１１７】
図１６の例では、グラフ１６００に示すように、エッジサーバ２０１間のデータ量および計算資源の量の偏りの度合いにより、タスク配置決定対象とするエッジサーバ２０１の数ｘ＋ｙの増加に伴うｇ（ｘ＋ｙ）の減少幅が小さい。このため、グラフ１６００に示すように、合計値ｓ（ｘ＋ｙ）が最小になるタスク配置決定対象とするエッジサーバ２０１の数ｘ＋ｙは、比較的大きくなる傾向がある。従って、情報処理装置１００は、図１６の状況では、合計値ｓ（ｘ）が最小値になるタスク配置決定対象が比較的早期に発見可能な状況ではないと判断する。
【０１１８】
このため、情報処理装置１００は、変数ｘを比較的大きく変化させなければ、合計値ｓ（ｘ）が最小値になるタスク配置決定対象を特定するまでにかかる所要時間の増大化を招くと判断し、変数ｘを第２数に設定する。第２数は、第１数より大きい数である。第２数は、増加の都度、可変であってもよい。そして、情報処理装置１００は、変数ｘを第２数ずつ変化させながら、合計値ｓ（ｘ）が最小値になるタスク配置決定対象を探索する。
【０１１９】
ここで、図１７および図１８の説明に移行し、情報処理装置１００が、合計値ｓ（ｘ）が最小値になるタスク配置決定対象が比較的早期に発見可能な状況であるか否かを判断し、タスク配置決定対象を決定する具体例について説明する。
【０１２０】
図１７は、図１５に対応する状況において、情報処理装置１００が、合計値ｓ（ｘ）が最小値になるタスク配置決定対象が比較的早期に発見可能な状況であると判断する場合の具体例を示す。図１７において、情報処理装置１００は、最も大きいタスク実行時間の標準偏差σａを算出し、最も小さいタスク実行時間の標準偏差σｂを算出する。
【０１２１】
ここで、情報処理装置１００は、σａ＞σｂである場合、図１５に対応する状況であると判断し、変数ｘを１つずつ増加させながら、合計値ｓ（ｘ）が最小値になるタスク配置決定対象を探索する。これにより、情報処理装置１００は、タスク配置決定対象の絞り込みにかかる所要時間を考慮しながら、トータルの所要時間の低減化を図ることができる。
【０１２２】
図１８は、図１６に対応する状況において、情報処理装置１００が、合計値ｓ（ｘ）が最小値になるタスク配置決定対象が比較的早期に発見可能な状況ではないと判断する場合の具体例を示す。図１８において、情報処理装置１００は、最も大きいタスク実行時間の標準偏差σａを算出し、最も小さいタスク実行時間の標準偏差σｂを算出する。
【０１２３】
ここで、情報処理装置１００は、σａ≦σｂである場合、図１６に対応する状況であると判断し、変数ｘを指数増加させながら、合計値ｓ（ｘ）が最小値になるタスク配置決定対象を探索する。これにより、情報処理装置１００は、タスク配置決定対象の絞り込みにかかる所要時間の低減化を図ることができ、トータルの所要時間の低減化を図ることができる。
【０１２４】
ここでは、情報処理装置１００が、最も大きいタスク実行時間の標準偏差σａと、最も小さいタスク実行時間の標準偏差σｂとを利用し、状況を判断する場合について説明したが、これに限らない。例えば、情報処理装置１００が、今回の合計値ｓ（ｘ）と直前の合計値ｓ（ｘ−１）との差分に基づき、次回の変数ｘを設定する場合があってもよい。
【０１２５】
（動作例２における全体処理手順）
次に、図１９〜図２１を用いて、動作例２における情報処理装置１００が実行する、全体処理手順の一例について説明する。全体処理は、例えば、図４に示したＣＰＵ４０１と、メモリ４０２や記録媒体４０５などの記憶領域と、ネットワークＩ／Ｆ４０３とによって実現される。
【０１２６】
図１９〜図２１は、動作例２における全体処理手順の一例を示すフローチャートである。図１９において、情報処理装置１００は、複数のタスクのそれぞれのタスクを、複数のノードのうちタスクが用いるデータを有するノードに配置した状況における、複数のノードのそれぞれのノードにおけるタスク実行時間を算出する（ステップＳ１９０１）。
【０１２７】
次に、情報処理装置１００は、複数のノードを、算出したタスク実行時間が大きい順にソートする（ステップＳ１９０２）。そして、情報処理装置１００は、最もタスク実行時間が大きいノードについて、タスク実行時間の標準偏差σａを算出する（ステップＳ１９０３）。
【０１２８】
次に、情報処理装置１００は、最もタスク実行時間が小さいノードについて、タスク実行時間の標準偏差σｂを算出する（ステップＳ１９０４）。そして、情報処理装置１００は、σａ＞σｂであるか否かを判定する（ステップＳ１９０５）。
【０１２９】
ここで、σａ＞σｂである場合（ステップＳ１９０５：Ｙｅｓ）、情報処理装置１００は、図２０のステップＳ２００１の処理に移行する。一方で、σａ＞σｂではない場合（ステップＳ１９０５：Ｎｏ）、情報処理装置１００は、図２１のステップＳ２１０１の処理に移行する。ここで、図２０の説明に移行する。
【０１３０】
図２０において、情報処理装置１００は、変数ｘを第１数だけインクリメントする（ステップＳ２００１）。次に、情報処理装置１００は、タスク実行時間が最も大きいノードから順にｘ個のノードを選択し、タスク実行時間が最も小さいノードから順に、ｘ個のノードからタスクを移動するｙ個の移動先となるノードを探索する（ステップＳ２００２）。そして、情報処理装置１００は、タスク実行時間ｇ（ｘ＋ｙ）を決定する（ステップＳ２００３）。
【０１３１】
次に、情報処理装置１００は、タスク配置決定時間ｆ（ｘ＋ｙ）の実測値を取得する（ステップＳ２００４）。そして、情報処理装置１００は、タスク実行時間ｇ（ｘ＋ｙ）とタスク配置決定時間ｆ（ｘ＋ｙ）との合計値ｓ（ｘ）＝ｆ（ｘ＋ｙ）＋ｇ（ｘ＋ｙ）を算出する（ステップＳ２００５）。
【０１３２】
次に、情報処理装置１００は、ｓ（ｘ−１）＞ｓ（ｘ）であるか否かを判定する（ステップＳ２００６）。ここで、ｓ（ｘ−１）＞ｓ（ｘ）ではない場合（ステップＳ２００６：Ｎｏ）、情報処理装置１００は、ステップＳ２０１１の処理に移行する。一方で、ｓ（ｘ−１）＞ｓ（ｘ）である場合（ステップＳ２００６：Ｙｅｓ）、ステップＳ２００７の処理に移行する。
【０１３３】
ステップＳ２００７では、情報処理装置１００は、ｘ個のノードとｙ個のノードとを含むノード群Ｇ（ｘ）のそれぞれのノードのＩＤを記憶する（ステップＳ２００７）。次に、情報処理装置１００は、ｘ＋ｙがノード数以上であるか否かを判定する（ステップＳ２００８）。ここで、ｘ＋ｙがノード数以上ではない場合（ステップＳ２００８：Ｎｏ）、情報処理装置１００は、ステップＳ２００１の処理に戻る。一方で、ｘ＋ｙがノード数以上である場合（ステップＳ２００８：Ｙｅｓ）、情報処理装置１００は、ステップＳ２００９の処理に移行する。
【０１３４】
ステップＳ２００９では、情報処理装置１００は、タスク配置決定対象を、ｓ（ｘ）を算出したノード群Ｇ（ｘ）に決定する（ステップＳ２００９）。次に、情報処理装置１００は、ノード群Ｇ（ｘ）のそれぞれのノードのＩＤを読み出す（ステップＳ２０１０）。そして、情報処理装置１００は、全体処理を終了する。
【０１３５】
ステップＳ２０１１では、情報処理装置１００は、タスク配置決定対象を、ｓ（ｘ−１）を算出したノード群Ｇ（ｘ−１）に決定する（ステップＳ２０１１）。次に、情報処理装置１００は、ノード群Ｇ（ｘ−１）のそれぞれのノードのＩＤを読み出す（ステップＳ２０１２）。そして、情報処理装置１００は、全体処理を終了する。ここで、図２１の説明に移行する。
【０１３６】
図２１において、情報処理装置１００は、変数ｘを第１数よりも大きい第２数だけインクリメントする（ステップＳ２１０１）。次に、情報処理装置１００は、タスク実行時間が最も大きいノードから順にｘ個のノードを選択し、タスク実行時間が最も小さいノードから順に、ｘ個のノードからタスクを移動するｙ個の移動先となるノードを探索する（ステップＳ２１０２）。そして、情報処理装置１００は、タスク実行時間ｇ（ｘ＋ｙ）を決定する（ステップＳ２１０３）。
【０１３７】
次に、情報処理装置１００は、タスク配置決定時間ｆ（ｘ＋ｙ）の実測値を取得する（ステップＳ２１０４）。そして、情報処理装置１００は、タスク実行時間ｇ（ｘ＋ｙ）とタスク配置決定時間ｆ（ｘ＋ｙ）との合計値ｓ（ｘ）＝ｆ（ｘ＋ｙ）＋ｇ（ｘ＋ｙ）を算出する（ステップＳ２１０５）。
【０１３８】
次に、情報処理装置１００は、ｓ（ｘ−１）＞ｓ（ｘ）であるか否かを判定する（ステップＳ２１０６）。ここで、ｓ（ｘ−１）＞ｓ（ｘ）ではない場合（ステップＳ２１０６：Ｎｏ）、情報処理装置１００は、ステップＳ２１１１の処理に移行する。一方で、ｓ（ｘ−１）＞ｓ（ｘ）である場合（ステップＳ２１０６：Ｙｅｓ）、ステップＳ２１０７の処理に移行する。
【０１３９】
ステップＳ２１０７では、情報処理装置１００は、ｘ個のノードとｙ個のノードとを含むノード群Ｇ（ｘ）のそれぞれのノードのＩＤを記憶する（ステップＳ２１０７）。次に、情報処理装置１００は、ｘ＋ｙがノード数以上であるか否かを判定する（ステップＳ２１０８）。ここで、ｘ＋ｙがノード数以上ではない場合（ステップＳ２１０８：Ｎｏ）、情報処理装置１００は、ステップＳ２１０１の処理に戻る。一方で、ｘ＋ｙがノード数以上である場合（ステップＳ２１０８：Ｙｅｓ）、情報処理装置１００は、ステップＳ２１０９の処理に移行する。
【０１４０】
ステップＳ２１０９では、情報処理装置１００は、タスク配置決定対象を、ｓ（ｘ）を算出したノード群Ｇ（ｘ）に決定する（ステップＳ２１０９）。次に、情報処理装置１００は、ノード群Ｇ（ｘ）のそれぞれのノードのＩＤを読み出す（ステップＳ２１１０）。そして、情報処理装置１００は、全体処理を終了する。
【０１４１】
ステップＳ２１１１では、情報処理装置１００は、タスク配置決定対象を、ｓ（ｘ−１）を算出したノード群Ｇ（ｘ−１）に決定する（ステップＳ２１１１）。次に、情報処理装置１００は、ノード群Ｇ（ｘ−１）のそれぞれのノードのＩＤを読み出す（ステップＳ２１１２）。そして、情報処理装置１００は、全体処理を終了する。
【０１４２】
ここでは、説明の簡略化のため、情報処理装置１００が、ステップＳ２００２で、ｙ個のノードを探索成功する場合について説明したが、これに限らない。例えば、ステップＳ２００２で、ｙ個のノードを探索失敗する場合が考えられる。この場合、情報処理装置１００は、タスク配置決定対象を、ｓ（ｘ−１）を算出したノード群Ｇ（ｘ−１）に決定してもよい。
【０１４３】
ここでは、説明の簡略化のため、情報処理装置１００が、ステップＳ２１０２で、ｙ個のノードを探索成功する場合について説明したが、これに限らない。例えば、ステップＳ２１０２で、ｙ個のノードを探索失敗する場合が考えられる。この場合、情報処理装置１００は、タスク配置決定対象を、ｓ（ｘ−１）を算出したノード群Ｇ（ｘ−１）に決定してもよい。
【０１４４】
以上説明したように、情報処理装置１００によれば、所定の処理を形成する複数の処理のそれぞれの処理を、複数のノードのいずれかのノードに割り振った場合の、複数のノードのそれぞれのノードにおける処理実行時間を算出することができる。情報処理装置１００によれば、処理実行時間が最も大きいノードから順に１以上の移動元となるノードと、残余のノードのうち１以上の移動元となるノードの処理を移動する１以上の移動先となるノードとを選択した、複数の組み合わせを特定することができる。情報処理装置１００によれば、複数の組み合わせのそれぞれの組み合わせについて、処理の割り振りの調整を行う場合の、組み合わせにおける処理実行時間と、調整にかかる所要時間との合計値を算出することができる。情報処理装置１００によれば、それぞれの組み合わせについて算出した合計値に基づいて、複数の組み合わせのいずれかの組み合わせを、調整の対象に決定することができる。これにより、情報処理装置１００は、所定の処理を形成する複数の処理を複数のノードで分散実行する際に、所定の処理の結果が得られるまでの所要時間の低減化を図ることができる。
【０１４５】
情報処理装置１００によれば、１以上の移動元となるノードのそれぞれのノードの処理実行時間が閾値を超えた分を第１データ量に換算することができる。情報処理装置１００によれば、第１データ量が、１以上の移動先となるノードのそれぞれのノードにおける処理実行時間が閾値を下回った分から換算した第２データ量より小さくなるように、１以上の移動先となるノードを選択することができる。これにより、情報処理装置１００は、データ量を介して、計算資源の量などが異なるノード間でタスクを移動した場合に、移動先で処理実行時間がどのくらい増加するかを考慮することができる。そして、情報処理装置１００は、移動元となるノードおよび移動先となるノードのいずれでも、処理実行時間を閾値以下に抑制することができる。このため、情報処理装置１００は、所定の処理全体にかかる所要時間を閾値以下に抑制することができる。
【０１４６】
情報処理装置１００によれば、処理実行時間が最も大きいノードから順に１以上の移動元となるノードと、処理実行時間が最も小さいノードから順に１以上の移動先となるノードとを選択した組み合わせを特定することができる。これにより、情報処理装置１００は、組み合わせに含まれるノードの数の低減化を図ることができる。このため、情報処理装置１００は、調整にかかる所要時間の低減化を図ることができる。
【０１４７】
情報処理装置１００によれば、調整の対象が決定されるまで、所定数を増加させることができる。情報処理装置１００によれば、所定数を増加する都度、処理実行時間が最も大きいノードから順に所定数のノードと、残余のノードのうち１以上の移動先となるノードとを選択した組み合わせを特定することができる。情報処理装置１００によれば、算出済みの合計値のうち、所定の条件を満たす合計値がある場合、所定の条件を満たす合計値が算出された組み合わせを、調整の対象に決定することができる。これにより、情報処理装置１００は、取りうるすべての組み合わせについて合計値を算出しなくても、適切な組み合わせを、調整の対象に決定することができる。また、情報処理装置１００は、取りうるすべての組み合わせについて合計値を算出せずに済み、処理負担の低減化を図ることができる。
【０１４８】
情報処理装置１００によれば、算出した処理実行時間のうち、最も大きい処理実行時間の標準偏差と、最も小さい処理実行時間の標準偏差とを算出することができる。情報処理装置１００によれば、算出した最も大きい処理実行時間の標準偏差と、算出した最も小さい処理実行時間の標準偏差とを比較した結果に基づいて、所定数を設定し、所定数を増加させる増加幅を設定することができる。これにより、情報処理装置１００は、所定の条件を満たす合計値が早期に算出可能な状況であるか否かを判断することができる。早期とは、所定数が比較的小さい時点を示す。そして、情報処理装置１００は、状況に応じて、所定数を増加させる増加幅を設定し、調整にかかる所要時間の低減化を図ることができる。
【０１４９】
情報処理装置１００によれば、複数の処理のそれぞれの処理を、複数のノードのうち処理が用いるデータを有するノードに割り振った場合の、複数のノードのそれぞれのノードにおける処理実行時間を算出することができる。これにより、情報処理装置１００は、処理の割り振りの調整を行う前の基準となる、処理の割り振りパターンを特定し、ノードごとの処理実行時間を算出することができる。
【０１５０】
情報処理装置１００によれば、それぞれのノードが有する計算資源の量に基づいて、それぞれのノードにおける処理実行時間を算出することができる。これにより、情報処理装置１００は、それぞれのノードが有する計算資源の量が異なる場合にも、それぞれのノードにおける処理実行時間を算出することができる。
【０１５１】
なお、本実施の形態で説明した分散処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明した分散処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明した分散処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１５２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１５３】
（付記１）複数の処理のそれぞれの処理を、複数のノードのいずれかのノードに割り振った場合の、前記複数のノードのそれぞれのノードにおける処理実行時間を算出し、
前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に１以上のノードと、前記複数のノードから前記１以上のノードを除いた残余のノードのうち前記１以上のノードの処理を移動する１以上の移動先となるノードとを選択した、複数の組み合わせのそれぞれの組み合わせについて、処理の割り振りの調整を行う場合の、前記組み合わせにおける処理実行時間と、前記調整にかかる所要時間との合計値を算出し、
前記それぞれの組み合わせについて算出した合計値に基づいて、前記複数の組み合わせのいずれかの組み合わせを、前記調整の対象に決定する、
制御部を有することを特徴とする情報処理装置。
【０１５４】
（付記２）前記制御部は、
前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に１以上のノードを選択し、前記残余のノードのうち前記１以上のノードの処理を移動する１以上の移動先となるノードを、選択した前記１以上のノードのそれぞれのノードの処理実行時間が閾値を超えた分から換算したデータ量が、前記１以上の移動先となるノードのそれぞれの移動先となるノードにおける処理実行時間が前記閾値を下回った分から換算したデータ量より小さくなるように選択した、複数の組み合わせのそれぞれの組み合わせについて、処理の割り振りの調整を行う場合の前記合計値を算出する、ことを特徴とする付記１に記載の情報処理装置。
【０１５５】
（付記３）前記組み合わせは、前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に１以上のノードと、前記残余のノードのうち算出した前記処理実行時間が最も小さいノードから順に前記１以上のノードの処理を移動する１以上の移動先となるノードとを選択したノード群である、ことを特徴とする付記１または２に記載の情報処理装置。
【０１５６】
（付記４）前記制御部は、
前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に所定数のノードと、前記複数のノードから前記所定数のノードを除いた残余のノードのうち前記所定数のノードの処理を移動する１以上の移動先となるノードとを選択した組み合わせについて、処理の割り振りの調整を行う場合の前記合計値を算出した後、
前記所定数を増加させ、前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に前記所定数のノードと、前記複数のノードから前記所定数のノードを除いた残余のノードのうち前記所定数のノードの処理を移動する１以上の移動先となるノードとを選択した組み合わせについて、処理の割り振りの調整を行う場合の前記合計値を算出することを、前記調整の対象が決定されるまで繰り返し、
算出済みの前記合計値のうち、所定の条件を満たす合計値がある場合、所定の条件を満たす合計値が算出された組み合わせを、前記調整の対象に決定する、ことを特徴とする付記１〜３のいずれか一つに記載の情報処理装置。
【０１５７】
（付記５）前記制御部は、
算出した前記処理実行時間のうち、最も大きい処理実行時間の標準偏差と、最も小さい処理実行時間の標準偏差とを算出し、
算出した前記最も大きい処理実行時間の標準偏差と、算出した前記最も小さい処理実行時間の標準偏差とを比較した結果に基づいて、前記所定数を設定し、前記所定数を増加させる増加幅を設定する、ことを特徴とする付記４に記載の情報処理装置。
【０１５８】
（付記６）前記制御部は、
複数の処理のそれぞれの処理を、複数のノードのうち前記処理が用いるデータを有するノードに割り振った場合の、前記複数のノードのそれぞれのノードにおける処理実行時間を算出する、ことを特徴とする付記１〜５のいずれか一つに記載の情報処理装置。
【０１５９】
（付記７）前記算出する処理は、
前記それぞれのノードが有する計算資源の量に基づいて、前記複数の処理のそれぞれの処理を、前記複数のノードのうち前記処理が用いるデータを有するノードに割り振った場合の、前記複数のノードのそれぞれのノードにおける処理実行時間を算出する、ことを特徴とする付記１〜６のいずれか一つに記載の情報処理装置。
【０１６０】
（付記８）複数のノードと、前記複数のノードに処理を割り振る情報処理装置とを含む分散処理システムであって、
前記情報処理装置は、
複数の処理のそれぞれの処理を、複数のノードのいずれかのノードに割り振った場合の、前記複数のノードのそれぞれのノードにおける処理実行時間を算出し、
前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に１以上のノードと、前記複数のノードから前記１以上のノードを除いた残余のノードのうち前記１以上のノードの処理を移動する１以上の移動先となるノードとを選択した、複数の組み合わせのそれぞれの組み合わせについて、処理の割り振りの調整を行う場合の、前記組み合わせにおける処理実行時間と、前記調整にかかる所要時間との合計値を算出し、
前記それぞれの組み合わせについて算出した合計値に基づいて、前記複数の組み合わせのいずれかの組み合わせを、前記調整の対象に決定する、
ことを特徴とする分散処理システム。
【０１６１】
（付記９）複数の処理のそれぞれの処理を、複数のノードのいずれかのノードに割り振った場合の、前記複数のノードのそれぞれのノードにおける処理実行時間を算出し、
前記複数のノードのうち算出した前記処理実行時間が最も大きいノードから順に１以上のノードと、前記複数のノードから前記１以上のノードを除いた残余のノードのうち前記１以上のノードの処理を移動する１以上の移動先となるノードとを選択した、複数の組み合わせのそれぞれの組み合わせについて、処理の割り振りの調整を行う場合の、前記組み合わせにおける処理実行時間と、前記調整にかかる所要時間との合計値を算出し、
前記それぞれの組み合わせについて算出した合計値に基づいて、前記複数の組み合わせのいずれかの組み合わせを、前記調整の対象に決定する、
処理をコンピュータに実行させることを特徴とする分散処理プログラム。
【符号の説明】
【０１６２】
１００  情報処理装置
１１０，７１０，７２０，８００，１５００，１６００  グラフ
１１１〜１１３，７１１，７２１，８０１  特性曲線
２００  分散処理システム
２０１  エッジサーバ
２０２  ユーザ端末装置
２１０  ネットワーク
２１１  インターネット
４００，５００  バス
４０１，５０１  ＣＰＵ
４０２，５０２  メモリ
４０３，５０３  ネットワークＩ／Ｆ
４０４，５０４  記録媒体Ｉ／Ｆ
４０５，５０５  記録媒体
６００  記憶部
６０１  取得部
６０２  第１算出部
６０３  選択部
６０４  第２算出部
６０５  決定部
６０６  出力部
８１０  期間
１０１０  超過分
１０２１，１０２２  時間
【図１】
2020126377.tif 000003
【図２】
2020126377.tif 000004
【図３】
2020126377.tif 000005
【図４】
2020126377.tif 000006
【図５】
2020126377.tif 000007
【図６】
2020126377.tif 000008
【図７】
2020126377.tif 000009
【図８】
2020126377.tif 000010
【図９】
2020126377.tif 000011
【図１０】
2020126377.tif 000012
【図１１】
2020126377.tif 000013
【図１２】
2020126377.tif 000014
【図１３】
2020126377.tif 000015
【図１４】
2020126377.tif 000016
【図１５】
2020126377.tif 000017
【図１６】
2020126377.tif 000018
【図１７】
2020126377.tif 000019
【図１８】
2020126377.tif 000020
【図１９】
2020126377.tif 000021
【図２０】
2020126377.tif 000022
【図２１】
2020126377.tif 000023