(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024063434
(43)【公開日】2024-05-13
(54)【発明の名称】処理装置
(51)【国際特許分類】
G06F 9/50 20060101AFI20240502BHJP
【FI】
G06F9/50 150D
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022171377
(22)【出願日】2022-10-26
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100124811
【弁理士】
【氏名又は名称】馬場 資博
(74)【代理人】
【識別番号】100088959
【弁理士】
【氏名又は名称】境 廣巳
(74)【代理人】
【識別番号】100097157
【弁理士】
【氏名又は名称】桂木 雄二
(74)【代理人】
【識別番号】100187724
【弁理士】
【氏名又は名称】唐鎌 睦
(72)【発明者】
【氏名】高橋 克典
(72)【発明者】
【氏名】羽田 桃子
(72)【発明者】
【氏名】小分校 光浩
(57)【要約】
【課題】マップ処理の効率低下を抑制することが難しい場合がある。
【解決手段】処理装置300は、マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得する取得部321と、前記取得部321が取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する分散部322と、を有する。
【選択図】
図12
【特許請求の範囲】
【請求項1】
マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得する取得部と、
前記取得部が取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する分散部と、
を有する
処理装置。
【請求項2】
請求項1に記載の処理装置であって、
予め定められた分散先の候補を前記取得部が取得した情報に基づいて限定する調整部を有し、
前記分散部は、前記調整部により限定された分散先の候補の中から分散先を選択する
処理装置。
【請求項3】
請求項2に記載の処理装置であって、
前記調整部は、予め定められた分散先の候補のうち、前記取得部が取得した情報に基づいて高負荷であると判断される候補を除くことで、分散先の候補を限定する
処理装置。
【請求項4】
請求項3に記載の処理装置であって、
前記調整部は、前記取得部が取得した情報が示す値が予め定められた閾値以上となる候補について、高負荷であると判断する
処理装置。
【請求項5】
請求項2に記載の処理装置であって、
前記調整部は、予め定められた分散先の候補のうち、前記取得部が取得した情報に基づいて高負荷であると判断される候補を予め定められた確率で除くことで、分散先の候補を限定する
処理装置。
【請求項6】
請求項1に記載の処理装置であって、
前記取得部は、前記演算装置の負荷に応じた情報として、実行中のマップ処理の処理数に応じた情報を取得する
処理装置。
【請求項7】
請求項6に記載の処理装置であって、
前記取得部は、処理数に応じた情報として、所定時間内における処理数に基づいて算出される移動平均の値を取得する
処理装置。
【請求項8】
情報処理装置が、
マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得し、
取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する
処理方法。
【請求項9】
請求項8に記載の処理方法であって、
予め定められた分散先の候補を取得した演算装置の負荷に応じた情報に基づいて限定し、
分散先を選択する際は、限定された分散先の候補の中から分散先を選択する
処理方法。
【請求項10】
情報処理装置に、
マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得し、
取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する
処理を実現するためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理装置、処理方法、プログラムに関する。
【背景技術】
【0002】
大規模なデータを効率的に処理するための技術として、マップリデュースというモデルが知られている。
【0003】
例えば、特許文献1には、マップ処理後のリデュース処理時に、データのグループごとに複数のデータ群のうちのいずれかに振り分ける振分処理手段を有する負荷分散システムが記載されている。例えば、特許文献1によると、負荷分散システムは、グループごとの振り分け済みの総データサイズに基づいて、超過度合いを判断する。そして、振分処理手段は、判断された超過度合いに応じて、該当するグループに属するデータを2以上のデータ群に再度振り分ける。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
データ件数がバラバラな処理要求が順次不定的に入力されるような環境においてマップリデュースを行う際、マップ処理を行うある処理ノードにおいてスループットの低下が観測されることがある。このような問題に対しては、特許文献1に記載されているようなリデュース処理時の技術では対応することが出来なかった。このように、マップ処理の効率低下を抑制することが難しい場合がある、という課題が生じていた。
【0006】
そこで、本発明は、上述した課題を解決することが可能な処理装置、処理方法、プログラムなどを提供することを目的の一つとする。
【課題を解決するための手段】
【0007】
かかる目的を達成するため本開示の一形態である処理装置は、
マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得する取得部と、
前記取得部が取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する分散部と、
を有する
という構成をとる。
【0008】
また、本開示の他の形態である処理方法は、
情報処理装置が、
マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得し、
取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する
という構成をとる。
【0009】
また、本開示の他の形態であるプログラムは、
情報処理装置に、
マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得し、
取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する
処理を実現するためのプログラムである。
【発明の効果】
【0010】
上述したような各構成によると、上述したような課題を解決することができる。
【図面の簡単な説明】
【0011】
【
図2】処理ノードの構成例を示すブロック図である。
【
図6】負荷に応じた情報を取得する際の処理の一例を説明するための図である。
【
図7】負荷に応じた情報を取得する際の処理の一例を説明するための図である。
【
図8】分散先を調整する際の処理の一例を説明するための図である。
【
図9】負荷情報に基づく分散先調整時の動作例を示すフローチャートである。
【
図10】送信先を選択する際の動作例を示すフローチャートである。
【
図11】本開示の第2の実施形態における処理装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0012】
[第1の実施形態]
本開示の第1の実施形態について、
図1から
図10までを参照して説明する。
図1は、本開示の概要を説明するための図である。
図2は、処理ノード200の構成例を示すブロック図である。
図3は、分散先情報221の一例を示す図である。
図4は、負荷情報222の一例を示す図である。
図5は、調整済み分散先情報223の一例を示す図である。
図6、
図7は、負荷情報222を取得する際の処理の一例を説明するための図である。
図8は、分散先を調整する際の処理の一例を説明するための図である。
図9、
図10は、処理ノードの動作例を示すフローチャートである。
【0013】
本開示の第1の実施形態では、
図1で例示するように、データを各処理ノード200で並列に処理可能な処理システム100について説明する。
図1で例示するように、処理システム100には、データ件数がバラバラな処理要求が順次不定的に入力される。一例として、処理システム100には、処理の内容を示す処理要求と、処理対象となる任意の数のデータと、を含むファイルが複数の外部装置などから不定期に入力される。また、処理システム100に入力された処理要求などは、一旦待ちキューに入った後、ファイルごとに各処理ノード200に送信される。そして、各処理ノード200で所定の前処理を行った後、マップ処理やリデュース処理が行われる。例えば、各処理ノード200は、前処理やマップ処理などを実行する処理キュー(podともいう)をk個有しており、各処理キューで複数の処理を実行することができる。なお、待ちキューは処理システムに含まれる処理ノード200のうちの少なくとも一部が有してもよいし、処理ノード200とは異なる情報処理装置が有してもよい。また、kの値は例えば6であるが、それ以外の任意の値であってもよい。
【0014】
また、本開示で例示する場合、処理ノード200は、マップ処理時におけるCPU(Central Processing Unit)などの演算装置の負荷に応じた情報を取得する。例えば、処理ノード200は、演算装置の負荷に応じた情報として、自装置が有する各処理キューで実行中の処理数に応じた情報を処理キューごとに取得する。また、処理ノード200は、処理システム100に含まれる他の処理ノード200と通信することで、他の処理ノード200が取得した、他の処理ノード200が有する演算装置の負荷に応じた情報も取得する。そして、処理ノード200は、各処理ノード200が取得した演算装置の負荷に応じた情報に基づいて、マップ処理実行時の分散先を制御する。
【0015】
なお、具体的な一例としては、処理システム100には、治療行為などに応じたデータに基づいて診療報酬の計算などの数的処理を要求するファイルなどを複数の医療機関から入力することができる。このような例の場合、データの内容などから前処理にかかる時間を事前に把握することができず、また、データ量と前処理にかかる時間との間にも相関関係は見られないことがある。また、マップ処理にかかる時間も、10マイクロ秒~10分などデータごとに大きなばらつきが生じることがある。本開示で説明する処理システム100は、上記のような前処理やマップ処理にかかる時間に大きなばらつきがある場合でも、後述するように、演算装置の負荷に応じた情報に基づく分散先の制御を行うことで、スループットの低下を抑制することができる。なお、処理システム100に対しては、上記例示した以外のデータ件数がバラバラな処理要求が順次不定的に入力されてもよい。以下、各構成についてより詳細に説明する。
【0016】
処理システム100は、データを各処理ノード200で分散処理する。例えば、処理システム100は、互いに通信可能なよう接続された複数の処理ノード200を有している。また、処理システム100においては、各処理ノード200でマップ処理時などにおける分散先の選択が行われる。換言すると、本開示で例示する処理システム100の場合、マップ処理時にデータを複数の処理ノード200に送信するマスタノードを有しておらず、各処理ノード200がデータの送信元になるとともに、各処理ノード200がデータの送信先になる。つまり、処理システム100は、一例として、マスタノードから各処理ノード200に対してデータが送信される非対称な構造ではなく、各処理ノード200がデータの送信元と送信先になる対称的な構造を有している。
【0017】
なお、処理システム100の構成は
図1で例示した以外であってもよい。例えば、処理システム100は、サーバ装置など一つの情報処理装置により実現されてもよい。
【0018】
処理ノード200は、処理要求に応じた処理などを実行する情報処理装置である。例えば、処理ノード200は、k個の処理キューを有しており、各処理キューで複数の処理を実行することができる。また、処理ノード200は、CPUなどの演算装置の負荷に応じた情報を取得して、取得した演算装置の負荷に応じた情報に基づいて、マップ処理実行時の分散先を制御することができる。なお、本開示で説明する処理ノード200は、マップリデュースのうちマップ処理において特徴的な処理を行う。そのため、以下においては、処理ノード200が有する構成のうちマップ処理を行うまでの構成例について説明する。
【0019】
図2は、処理ノード200の構成例を示している。
図2を参照すると、処理ノード200は、主な構成要素として、例えば、通信I/F部210と、記憶部220と、演算処理部230と、を有している。
【0020】
なお、
図2では、1台の情報処理装置を用いて処理ノード200としての機能を実現する場合について例示している。しかしながら、処理ノード200は、例えば、クラウド上に実現されるなど、ネットワークを介して接続された複数台の情報処理装置を用いて実現されてもよい。
【0021】
通信I/F部210は、データ通信回路などからなる。通信I/F部210は、通信回線を介して接続された他の処理ノード200などの外部装置との間でデータ通信を行う。
【0022】
記憶部220は、ハードディスクやメモリなどの記憶装置である。記憶部220は、演算処理部230における各種処理に必要な処理情報やプログラム224を記憶する。プログラム224は、演算処理部230に読み込まれて実行されることにより各種処理部を実現する。プログラム224は、通信I/F部210などのデータ入出力機能を介して外部装置や記録媒体から予め読み込まれ、記憶部220に保存されている。記憶部220で記憶される主な情報としては、例えば、分散先情報221、負荷情報222、調整済み分散先情報223などがある。
【0023】
分散先情報221は、マップ処理時において選択可能な、分散先の候補を示す情報である。例えば、分散先情報221は、通信I/F部210を介して外部装置から予め取得されており、記憶部220に格納されている。
【0024】
図3は、分散先情報221の一例を示している。
図3を参照すると、分散先情報221では、セグメントと、分散先になる処理キューの番号と、が関連づけられている。ここで、セグメントは、前処理で生成するキー情報などに基づいて後述する分散先調整部236が算出するキャッシュ値に対応する値である。一例として、分散先情報221には、0から319までの320のセグメントの値が含まれる。また、処理キューの番号には、「pod#1」など処理キューを識別するための情報が含まれる。処理キューの番号には、処理キューを識別するための情報とともに、当該処理キューを有する処理ノード200の識別情報などが含まれてもよい。なお、分散先情報221に含まれる情報は、
図3で例示する場合に限定されない。分散先情報221には、上記例示した以外の情報が含まれてもよい。
【0025】
負荷情報222は、各処理キューで実行中の処理数に応じた情報など、演算装置の負荷に応じた情報を含んでいる。また、負荷情報222には、自装置が有する演算装置の負荷に応じた情報のほか、他の処理ノード200が有する演算装置の負荷に応じた情報が含まれる。例えば、負荷情報222は、負荷情報取得部235が自装置の各処理キューで実行中の処理数を計測した結果に基づく計算を行うことなどに応じて更新される。また、負荷情報222は、負荷情報取得部235が他の処理ノード200から当該他の処理ノード200における演算装置の負荷に応じた情報を取得することなどに応じて更新される。
【0026】
図4は、負荷情報222の一例を示している。
図4を参照すると、負荷情報222では、処理キューの番号と、演算装置の負荷に応じた情報と、が関連づけられている。ここで、処理キューの番号には、上述した分散先情報221の場合と同様に、処理キューを識別するための情報が含まれる。処理キューの番号には、処理キューを識別するための情報とともに、当該処理キューを有する処理ノード200の識別情報などが含まれてもよい。また、演算装置の負荷に応じた情報には、例えば、関連する処理キューで実行中の処理数に応じた情報が含まれる。例えば、
図4で例示する場合、処理数に応じた情報として、所定時間内における処理数に基づいて算出される移動平均の値などが含まれる。なお、演算装置の負荷に応じた情報は、各処理キューで実行中の処理数を示す情報など上記例示した以外であってもよい。また、演算装置の負荷に応じた情報にはCPUの使用率を示す情報などが処理数に応じた情報の代わりに、または、処理数に応じた情報とともに、含まれてもよい。分散先情報221の場合と同様、負荷情報222には、上記例示した以外の情報が含まれてもよい。
【0027】
調整済み分散先情報223は、後述する分散部233が分散先を選択する際に用いる、分散先の候補を示す情報である。例えば、調整済み分散先情報223は、後述する分散先調整部236が負荷情報222に基づいて分散先情報221に含まれる情報のうちの少なくとも一部を抽出することなどに応じて更新される。
【0028】
図5は、調整済み分散先情報223の一例を示している。
図5を参照すると、調整済み分散先情報223では、分散先情報221と同様に、セグメントと、分散先になる処理キューの番号と、が関連づけられている。
【0029】
演算処理部230は、CPUなどの演算装置とその周辺回路を有する。演算処理部230は、記憶部220からプログラム224を読み込んで実行することにより、上記ハードウェアとプログラム224とを協働させて各種処理部を実現する。演算処理部230で実現される主な処理部としては、例えば、受付部231、前処理部232、分散部233、処理部234、負荷情報取得部235、分散先調整部236などがある。
【0030】
なお、演算処理部230は、上述したCPUの代わりに、GPU(Graphic Processing Unit)、DSP(Digital Signal Processor)、MPU(Micro Processing Unit)、FPU(Floating point number Processing Unit)、PPU(Physics Processing Unit)、TPU(Tensor Processing Unit)、量子プロセッサ、マイクロコントローラ、又は、これらの組み合わせなどを有してもよい。
【0031】
受付部231は、外部装置や他の処理ノード200などから処理要求や処理対象となるデータなどを含むファイルを受け付ける。例えば、受付部231は、通信I/F部210を介して、外部装置や他の処理ノード200などから不定期に上記ファイルを受け付けてよい。なお、ファイルに含まれるデータの数は、ファイルごとに異なっていてよい。
【0032】
前処理部232は、受付部231が受け付けたファイルに含まれる処理要求や各データなどに対して、所定の前処理を行う。例えば、前処理部232は、処理ノード200が有する複数の処理キューのそれぞれで、マップ処理を行う際などに必要となる各種前処理を行うことができる。前処理部232は、処理キューを用いた前処理をファイル単位で行ってよい。なお、本実施形態においては、前処理の内容は特に限定しない。前処理部232は、処理要求やデータの内容に基づいてキー情報を生成するなど、任意の前処理を行ってよい。
【0033】
分散部233は、調整済み分散先情報223に基づいて分散先を特定するとともに、特定した分散先に対して前処理部232による前処理が行われたデータなどを送信する。
【0034】
例えば、分散部233は、マップ処理の対象となるデータや前処理で生成したキー情報などに基づいて、分散先を特定する。一例として、分散部233は、前処理により生成されたキー情報などに基づいてキャッシュ値を算出する。そして、分散部233は、調整済み分散先情報223のうち算出したキャッシュ値に対応するセグメントを特定することで、特定したセグメントに関連づけられた処理キューを特定する。換言すると、分散部233は、調整済み分散先情報223に含まれる、つまり、分散先情報221のうち高負荷の処理キューを除外した各要素に対して、ハッシュを用いてセグメントを決定する。また、分散部233は、特定した処理キューでマップ処理を行うよう、必要な情報の送信などを行う。例えば、特定した処理キューを他の処理ノード200が有する場合、分散部233は、特定した処理キューを有する処理ノード200に対して、当該処理キューでマップ処理を実行する旨の指示とともに、処理対象となるデータなどを送信する。また、特定した処理キューを自装置が有する場合、分散部233は、特定した処理キューでマップ処理を行うよう処理部234に対して指示する。
【0035】
このように、分散部233は、調整済み分散先情報223に基づいて分散先を特定する。ここで、調整済み分散先情報223は、後述するように、分散先情報221から負荷が高いと判断される演算装置に対応する処理キューを除くことで生成される。そのため、分散部233は、各処理ノード200が有する演算装置の負荷に応じて分散先を選択している、ということもできる。
【0036】
処理部234は、分散部233からの指示や他の処理ノード200からのデータ受信などに応じて、所定のマップ処理を行う。例えば、処理部234は、分散部233や他の処理ノード200から指示された処理キューでマップ処理を行うことができる。なお、本実施形態においては、処理部234が行うマップ処理の具体的な内容については特に限定しない。処理部234は、データの内容を解析してデータ種別ごとに中間キーを付与するなどのデータに基づく加工や必要な情報の抽出など、処理要求に応じた一般的なマップ処理を行ってよい。
【0037】
負荷情報取得部235は、CPUなどの演算装置の負荷に応じた情報を取得する。また、負荷情報取得部235は、取得した情報を負荷情報222として記憶部220に格納する。例えば、負荷情報取得部253は、負荷に応じた情報として、自装置が有する各処理キューで実行中の処理数に応じた情報を処理キューごとに取得することができる。また、負荷情報取得部253は、他の処理ノード200が有する負荷情報取得部253が取得した他装置における負荷に応じた情報を他の処理ノード200から取得することができる。
【0038】
例えば、負荷情報取得部235は、処理キューで実行中の処理数に応じた情報として、所定時間内における処理数の移動平均の値を取得することができる。一例として、
図6を参照すると、負荷情報取得部235は、処理部234がマップ処理を開始するタイミングで処理数を1加算するとともに処理部234がマップ処理を終了するタイミングで処理数を1減算することなどにより、処理キューで実行中の処理数を処理キューごとに計測する。また、
図7を参照すると、負荷情報取得部235は、1秒ごとに計測中の処理数を確認するとともに、例えば5秒ごとに過去10秒間に計測した処理数の移動平均を算出することで、移動平均の値を算出する。負荷情報取得部235は、上記のような移動平均を算出する処理を各処理キューに対して行うことで、各処理キューに対応する処理数に応じた情報を取得することができる。なお、移動平均の算出方法や移動平均を算出するタイミングは、あくまで一例であり上記例示した以外であってもよい。
【0039】
なお、負荷情報取得部235は、処理キューで実行中の処理数に応じた情報として、上記例示した以外の値を取得してもよい。例えば、負荷情報取得部235は、処理数に応じた情報として、各処理キューで実行中の処理数を示す値を取得してもよい。また、負荷情報取得部235は、処理数に応じた情報とともに、または、処理数に応じた情報の代わりに、処理数に応じた情報以外の演算装置の負荷に応じた情報を取得してもよい。例えば、負荷情報取得部235は、CPUなどの演算装置の使用率を示す情報などを演算装置の負荷に応じた情報として取得してもよい。
【0040】
分散先調整部236は、演算装置にかかっている負荷に応じて分散先の調整を行う。例えば、分散先調整部236は、負荷が高いと判断される演算装置に対応する処理キューに対してマップ処理の指示が送信されなくなるように、または、送信されにくくなるように、分散先を調整する。
【0041】
具体的に、例えば、分散先調整部236は、負荷情報222に基づいて分散先情報221に含まれる情報のうちの少なくとも一部を抽出することで、候補となる分散先を限定した調整済み分散先情報223を生成する。例えば、
図8を参照すると、分散先調整部236は、分散先情報221に対してセグメントフィルタを適用することで、分散先情報221に含まれる情報のうちの少なくとも一部からなる調整済み分散先情報223を生成する。ここで、セグメントフィルタは、例えば、負荷情報222に基づいて設定されるフィルタである。一例として、セグメントフィルタは、負荷情報222が示す移動平均などの負荷に応じた値が予め定められた閾値以上となる処理キューを除外するフィルタである。セグメントフィルタは、負荷に応じた値が予め定められた閾値以上となる処理キューを予め設定された確率で除外するフィルタであってもよい。また、セグメントフィルタは、段階的に定められた複数の閾値に基づいて、負荷が高くなるほど除外する確率が高くなるフィルタであってもよい。なお、確率は、任意に設定されてよい。このように、分散先調整部236は、分散先情報221に対して、負荷情報222の内容に応じたセグメントフィルタを適用することで、分散先情報221に含まれる情報のうちの少なくとも一部からなる調整済み分散先情報223を生成する。
【0042】
以上が、処理ノード200の構成例である。続いて、
図9、
図10を参照して、処理ノード200の動作例について説明する。
【0043】
図9は、分散先調整時の処理ノード200の動作例を示している。
図9を参照すると、負荷情報取得部235は、CPUなどの演算装置の負荷に応じた情報を取得する(ステップS101)。例えば、負荷情報取得部235は、演算装置の負荷に応じた情報として、各処理キューで実行中の処理数に応じた情報を取得する。負荷情報取得部235は、所定の間隔で定期的に演算装置の負荷に応じた情報を取得してよい。
【0044】
分散先調整部236は、演算装置にかかっている負荷に応じて分散先の調整を行う(ステップS102)。例えば、分散先調整部236は、分散先情報221に対して負荷情報222の内容に応じたセグメントフィルタを適用することにより調整済み分散先情報223を生成することで、分散先の調整を行う。分散先調整部236も、所定の間隔で分散先の調整を行ってよい。
【0045】
以上が、分散先調整時の処理ノード200の動作例である。続いて、分散時の動作例について
図10を参照して説明する。
【0046】
図10は、処理ノード200の動作例を示している。
図10を参照すると、前処理部232は、受付部231が受け付けたファイルに含まれる処理要求や各データなどに対して、所定の前処理を行う(ステップS201)。
【0047】
分散部233は、調整済み分散先情報223に基づいて分散先となる処理キューを特定する(ステップS202)。例えば、分散部233は、前処理により生成されたキー情報などに基づいてキャッシュ値を算出して、調整済み分散先情報223のうち算出したキャッシュ値に対応するセグメントを特定することで、特定したセグメントに関連づけられた処理キューを特定する。
【0048】
分散部233は、特定した処理キューでマップ処理を行うよう必要な指示を行う(ステップS203)。例えば、特定した処理キューを他の処理ノード200が有する場合、分散部233は、特定した処理キューを有する処理ノード200に対して、当該処理キューでマップ処理を実行する旨の指示とともに、処理対象となるデータなどを送信する。その結果、他の処理ノード200でマップ処理が行われる。また、特定した処理キューを自装置が有する場合、分散部233は、特定した処理キューでマップ処理を行うよう処理部234に対して指示する。その結果、処理部234でマップ処理が行われる。
【0049】
以上が、分散時の動作例である。
【0050】
このように、処理ノード200は、負荷情報取得部235と分散先調整部236と分散部233とを有している。このような構成によると、分散部233は、負荷情報取得部235が取得した演算装置の負荷に応じた情報に基づいて分散先調整部236による調整が行われた調整済み分散先情報223を用いて、分散先の選択を行うことができる。その結果、高負荷な演算装置に対応する処理キューを除いた処理キューを対象とした分散先の選択などを行うことができる。これにより、マップ処理時のスループット低下などを抑制することができ、効率的なマップ処理を実現することができる。
【0051】
なお、本実施形態においては、処理数に応じた情報として、マップ処理の処理数を計測する場合について例示した。しかしながら、処理数は、例えば、各処理キューで処理中の前処理の数などを含む値であってもよい。
【0052】
[第2の実施形態]
次に、本開示の第2の実施形態について、
図11、
図12を参照して説明する。
図11は、処理装置300のハードウェア構成例を示す図である。
図12は、処理装置300の構成例を示すブロック図である。
【0053】
本開示の第2の実施形態においては、他の処理装置300と分散処理を行う情報処理装置である処理装置300の構成例について説明する。
図11は、処理装置300のハードウェア構成例を示している。
図11を参照すると、処理装置300は、一例として、以下のようなハードウェア構成を有している。
・CPU(Central Processing Unit)301(演算装置)
・ROM(Read Only Memory)302(記憶装置)
・RAM(Random Access Memory)303(記憶装置)
・RAM303にロードされるプログラム群304
・プログラム群304を格納する記憶装置305
・情報処理装置外部の記録媒体310の読み書きを行うドライブ装置306
・情報処理装置外部の通信ネットワーク311と接続する通信インタフェース307
・データの入出力を行う入出力インタフェース308
・各構成要素を接続するバス309
【0054】
また、処理装置300は、プログラム群304をCPU301が取得して当該CPU301が実行することで、
図12に示す取得部321、分散部322としての機能を実現することができる。なお、プログラム群304は、例えば、予め記憶装置305やROM302に格納されており、必要に応じてCPU301がRAM303などにロードして実行する。また、プログラム群304は、通信ネットワーク311を介してCPU301に供給されてもよいし、予め記録媒体310に格納されており、ドライブ装置306が該プログラムを読み出してCPU301に供給してもよい。
【0055】
なお、
図11は、処理装置300のハードウェア構成例を示している。処理装置300のハードウェア構成は上述した場合に限定されない。例えば、処理装置300は、ドライブ装置306を有さないなど、上述した構成の一部から構成されてもよい。
【0056】
取得部321は、マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得する。例えば、取得部321は、演算装置の負荷に応じた情報として、実行中の処理数に応じた情報を取得することができる。
【0057】
分散部322は、取得部321が取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する。その後、分散部322が選択した分散先でマップ処理が実行される。
【0058】
このように、処理装置300は、取得部321と分散部322とを有している。このような構成によると、分散部322は、取得部321が取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択することができる。その結果、高負荷な候補などを除いた中から分散先の選択を行うことができる。これにより、スループットの低下を抑制することができる。
【0059】
なお、上述した処理装置300は、当該処理装置300などの情報処理装置に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、処理装置300などの情報処理装置に、マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得し、取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する、処理を実現するためのプログラムである。
【0060】
また、上述した処理装置300などの情報処理装置により実行される処理方法は、処理装置300などの情報処理装置が、マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得し、取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する、という方法である。
【0061】
上述した構成を有する、プログラム、又は、プログラムを記録したコンピュータが読み取り可能な記録媒体、又は、学習方法、の発明であっても、上述した処理装置300と同様の作用・効果を奏するために、上述した本開示の目的を達成することができる。
【0062】
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における処理装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【0063】
(付記1)
マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得する取得部と、
前記取得部が取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する分散部と、
を有する
処理装置。
(付記2)
付記1に記載の処理装置であって、
予め定められた分散先の候補を前記取得部が取得した情報に基づいて限定する調整部を有し、
前記分散部は、前記調整部により限定された分散先の候補の中から分散先を選択する
処理装置。
(付記3)
付記2に記載の処理装置であって、
前記調整部は、予め定められた分散先の候補のうち、前記取得部が取得した情報に基づいて高負荷であると判断される候補を除くことで、分散先の候補を限定する
処理装置。
(付記4)
付記3に記載の処理装置であって、
前記調整部は、前記取得部が取得した情報が示す値が予め定められた閾値以上となる候補について、高負荷であると判断する
処理装置。
(付記5)
付記2に記載の処理装置であって、
前記調整部は、予め定められた分散先の候補のうち、前記取得部が取得した情報に基づいて高負荷であると判断される候補を予め定められた確率で除くことで、分散先の候補を限定する
処理装置。
(付記6)
付記1に記載の処理装置であって、
前記取得部は、前記演算装置の負荷に応じた情報として、実行中のマップ処理の処理数に応じた情報を取得する
処理装置。
(付記7)
付記6に記載の処理装置であって、
前記取得部は、処理数に応じた情報として、所定時間内における処理数に基づいて算出される移動平均の値を取得する
処理装置。
(付記8)
情報処理装置が、
マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得し、
取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する
処理方法。
(付記9)
付記8に記載の処理方法であって、
予め定められた分散先の候補を取得した演算装置の負荷に応じた情報に基づいて限定し、
分散先を選択する際は、限定された分散先の候補の中から分散先を選択する
処理方法。
(付記10)
情報処理装置に、
マップリデュースのうちのマップ処理時における演算装置の負荷に応じた情報を取得し、
取得した情報に基づいて制御された分散先の候補の中から、マップ処理時の分散先を選択する
処理を実現するためのプログラム。
【0064】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0065】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【0066】
100 処理システム
200 処理ノード
210 通信I/F部
220 記憶部
221 分散先情報
222 負荷情報
223 調整済み分散先情報
224 プログラム
230 演算処理部
231 受付部
232 前処理部
233 分散部
234 処理部
235 負荷情報取得部
236 分散先調整部
300 処理装置
301 CPU
302 ROM
303 RAM
304 プログラム群
305 記憶装置
306 ドライブ装置
307 通信インタフェース
308 入出力インタフェース
309 バス
310 記録媒体
311 通信ネットワーク
321 取得部
322 分散部