JP5465105B2 - 計算機システム及びコンピュータプログラム及びパイプライン処理方法 - Google Patents
計算機システム及びコンピュータプログラム及びパイプライン処理方法 Download PDFInfo
- Publication number
- JP5465105B2 JP5465105B2 JP2010140181A JP2010140181A JP5465105B2 JP 5465105 B2 JP5465105 B2 JP 5465105B2 JP 2010140181 A JP2010140181 A JP 2010140181A JP 2010140181 A JP2010140181 A JP 2010140181A JP 5465105 B2 JP5465105 B2 JP 5465105B2
- Authority
- JP
- Japan
- Prior art keywords
- processing
- thread
- processing device
- time
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Description
この発明は、例えば、上記のような課題を解決するためになされたものであり、効率よく処理の負荷を分散させることにより、パイプライン処理にかかる時間が制限時間を超過するのを未然に防ぐことを目的とする。
所定の周期で繰り返し入力データを入力し、直列関係にある複数のプロセスからなるパイプライン処理により上記入力データを処理し、最前段のプロセスは上記入力データを処理して処理結果を出力し、後段のプロセスは前段のプロセスが出力した処理結果を処理して処理結果を出力し、上記入力データを入力した時刻から所定の制限時間が経過するまでの間に最後段のプロセスが処理結果を出力することを要求される計算機システムにおいて、
上記計算機システムは、複数の計算機と、スレッド開始時刻取得部と、スレッド終了時刻取得部と、プロセス開始時刻算出部と、プロセス終了時刻算出部と、プロセス処理時間算出部と、パイプライン処理時間算出部と、パイプライン処理時間予測部と、制限時間超過判定部と、分割プロセス選択部と、空き処理装置選択部と、スレッド起動部と、他計算機処理装置選択部と、他計算機スレッド起動部とを有し、
上記複数の計算機の各計算機は、1以上の処理装置を有し、
上記複数の計算機のうち少なくともいずれかの計算機の少なくともいずれかの処理装置は、上記パイプライン処理の複数のプロセスのうちいずれかのプロセスの処理の少なくとも一部の処理をスレッドとして実行し、
上記プロセス処理時間算出部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、各周期の入力データについて、上記パイプライン処理の各プロセスの処理にかかった時間を算出し、
上記パイプライン処理時間算出部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、各周期の入力データについて、上記パイプライン処理にかかった時間を算出し、
上記パイプライン処理時間予測部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記パイプライン処理時間算出部が算出した時間に基づいて、将来の周期において上記パイプライン処理にかかる時間を予測し、
上記制限時間超過判定部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記パイプライン処理時間予測部が予測した時間に基づいて、将来の周期において上記制限時間を超過するか否かを判定し、
上記分割プロセス選択部は、将来の周期において上記制限時間を超過すると上記制限時間超過判定部が判定した場合に、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記プロセス処理時間算出部が算出した時間に基づいて、上記複数のプロセスのうちから、プロセスの処理にかかる時間が増加しているプロセスを選択し、
上記空き処理装置選択部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割プロセス選択部が選択したプロセスについて、上記プロセスの処理の一部であるスレッドを実行している処理装置と同じ計算機の処理装置のなかに、上記プロセスのスレッドを実行していない処理装置があるか否かを判定し、上記プロセスのスレッドを実行していない処理装置があると判定した場合に、上記プロセスのスレッドを実行していないと判定した処理装置を選択し、
上記スレッド起動部は、上記空き処理装置選択部が処理装置を選択した場合に、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記空き処理装置選択部が選択した処理装置に、上記分割プロセス選択部が選択したプロセスのスレッドを新たに実行させ、
上記他計算機処理装置選択部は、上記空き処理装置選択部が処理装置を選択しなかった場合に、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割プロセス選択部が選択したプロセスのスレッドを実行している処理装置と異なる計算機の処理装置のなかから、処理装置を選択し、
上記他計算機スレッド起動部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記他計算機処理装置選択部が選択した処理装置に、上記分割プロセス選択部が選択したプロセスのスレッドを新たに実行させることを特徴とする。
プロセスを処理する計算機を複数台接続して複数のプロセスを連携処理するシステムにおいて、処理対象プロセスが要求するリソース量と、各計算機が持つ余剰リソース量を考慮し、計算機が、プロセスの処理量増加や、システム内計算機の故障などにより、プロセスが必要とするリソース量を提供できなくなった場合に、プロセスの必要とするリソース量を保持する他の計算機に、処理対象プロセスを移行させることにより、プロセスの制限時間超過の継続発生を防ぐ。
また、プロセスを他の計算機に移動させる際、処理を継続させるために必要なデータを移動させる必要がある。例えば、過去N回のデータをもとにして次の処理結果を求める場合、プロセスを移動させ、移動させたプロセスが直ちに処理に参入すると、過去N回のデータを破棄することになり、計算結果が必ずしも正確ではない。
また、制限時間超過の原因プロセスの処理を、そのプロセスと連携して処理を行う他の計算機のプロセスに配置したほうが計算機間通信の時間を短縮できる。
実施の形態1について、図1〜図13を用いて説明する。
本計算機システム1は、ネットワーク2、ネットワーク2に接続された複数の計算機3(3−1、3−2、・・・3−N)によって構成される。
図のように、本計算機システム1の計算機3は、2つ以上のCPUコア(5−1、5−2、・・・5−N)を持つCPU4(Central Processing Unit)で構成される。各CPU4では、SMP(Symmetric Multi Processing)用OS(Operating System)6が動作しているものとする。SMPではCPUコア5でメモリを共有しているため、異なるCPUコア5で動作するプロセスおよびスレッド間でデータを共有することが可能である。
プロセス7は、図のように、パイプライン状に連なって、他のプロセス群と連携して処理を行う。以降、プロセス7がパイプライン状に連なって構成される処理を、パイプライン処理と呼ぶ。各パイプライン処理は、一定の周期で処理を行い、各パイプライン処理は周期内に終了する必要があるリアルタイム処理を行う。
また、プロセス7は、過去N周期の演算結果もとに計算を行うものとする。
図に示すように、プロセス7は1つ以上のスレッド8によって構成される。
本計算機リソース制御方式が対象とするプロセス7は、N個のスレッドに処理を分割可能なように作成されており、プロセス7のメインスレッド(プロセス起動時に作成されるスレッド)がデータを受信し、プロセス7内に1つのスレッド8しか存在しない場合には、そのスレッド8がデータを処理してパイプライン処理の次の処理を行うプロセス7にデータを送信し、プロセス7内にスレッド8が複数個ある場合には、これらのスレッド8でデータを分割して処理し、各スレッド8がデータを次の処理を行うプロセス7に送信できるようになっているものとする。
本実施の形態における計算機リソース制御方式は、スレッド処理時間監視部9、計算機負荷監視部10、パイプライン処理時間監視部11、スレッド割付部12、システム負荷監視部13、スレッド制御部14によって構成される。以下、各構成要素の役割の概要を説明する。
なお、図において、スレッド8−2−1〜8−2−3は、プロセス7−2の処理を3つのスレッドの処理量が均等になるよう分割したものである。
パイプライン処理時間監視部11からシステム負荷監視部13に処理時間変動通知(A6)が届くと、図において、処理時間変動の要因となったプロセス7を調査するため、処理時間変動が発生したパイプライン処理の各スレッド8が動作するCPU4の計算機負荷監視部10に、処理時間に変動のあったプロセス7を抽出するよう指示する(A7)。計算機負荷監視部10は、処理時間の傾向に変動のあったプロセス7の識別子、および、すでに処理を複数のスレッド8に分割している場合は分割数をシステム負荷監視部13に通知する(A8)。
なお、システム負荷監視部13の、スレッド数、および、スレッドを動作させるCPU4、CPUコア5の決定方式は、後にフローチャートにて詳細を述べる。
そして、そのプロセス7が動作するCPU4の計算機負荷監視部10に、スレッドの起動、停止などを指示する(A9)。
スレッド8の起動、停止指示を受け取った計算機負荷監視部10は、CPUコア5ごとに存在するスレッド割付部12に、各CPUコア5にスレッドを起動、停止するよう指示し(A10)、スレッド割付部12は、各CPUコア5でスレッド8を起動、停止する(A11)。
パイプライン処理時間監視部11から処理時間変動の通知を受信すると、ステップS2で、システム負荷監視部13は、通知内容が、今後時間T1以内にパイプライン処理の処理時間が制限時間をオーバーすることを示すものであるか、制限時間オーバー発生間近を示すものであるか、処理時間が短縮傾向であることを示すものであるかを調べる。通知内容が時間T1内に制限時間オーバーするというものであれば、ステップS3に進み、制限時間オーバー間近であれば、ステップS5に進み、減少傾向であればステップS4に進み、各ステップにおいて処理を行う。各ステップの処理を終了すると、ステップS1に戻る。システム負荷監視部13は、S1〜S5の処理を、パイプライン処理時間監視部11から通知を受ける限り繰り返す。
ステップS1002で、システム負荷監視部13は、ステップS1001で抽出したプロセス7が動作する計算機3の計算機負荷監視部10に、処理時間、CPU時間が増加傾向にあるプロセス7と、処理時間、CPU時間の変化に関する近似式、およびプロセス7の現在の分割数を調べるよう指示し、計算機負荷監視部10からこれらの通知を受信し、記憶しておく。
調査の具体的な方法としては、例えば、パイプライン処理を構成するスレッド8のCPU時間の増加量とパイプライン処理の処理時間の増加量の差を求め、パイプライン処理の処理時間の増加量が各スレッド8のCPU時間の増加量の和と同一であれば、制限時間オーバーの可能性のあるパイプライン処理に属するスレッド8がCPU4を占有したことによって処理時間が長くなったことと考えることができる。
なお、本実施の形態では、現在時刻より時間T1だけ先の時刻までに制限時間オーバーが発生する原因が、自パイプライン処理を構成するプロセス7にあるパイプライン処理に対してのみ処理時間短縮に向けた処理を行うこととする。この理由は、このパイプライン処理のスレッド8の実行時間を短縮することにより、制限時間オーバーの原因が他のパイプライン処理を構成するプロセス7にある場合のパイプライン処理の時間短縮も可能となると考えられるためである。
ステップS1004で、システム負荷監視部13は、ステップS1003において処理時間短縮に向けた処理を行うことになったパイプライン処理の全てについて、S1005〜S1023を行ったかどうかを調べ、行った場合は終了し、行っていなければ、パイプライン処理の処理時間短縮に向けた処理を行う。
以下、ステップS1005以降の処理を説明する。
ステップS1006で、システム負荷監視部13は、ステップS1005で選択したパイプライン処理を構成するプロセス7中のCPU時間が増加傾向にあるプロセス7で、ステップS1007で記憶した分割数(ステップS1005で選択したパイプライン処理について、ステップS1007で分割数を記憶していない場合には、ステップS1002にて記憶した分割数)にさらに1加えた場合に、現在時刻からT1だけ先の時刻において1スレッドあたりのCPU時間の削減量の最も多いプロセスを選択する。
例えば、図において、パイプライン処理Aがプロセス1、プロセス2、プロセス3で構成され、プロセス1とプロセス3のCPU時間が増加傾向にあったとする。ステップS1002にて記憶しているプロセス1の分割数が1、プロセス3の分割数が3であったとし、現在時刻から時間T1だけ先の時刻におけるプロセス1、プロセス3のCPU時間を、ステップS1002で記憶した近似式を用いて求めたところ、プロセス1のCPU時間が100、プロセス3のCPU時間が120であったとする。この場合、プロセス1の分割数を1加えるとプロセス1の分割数は2であり、各スレッドのCPU時間は50、プロセス3の分割数を1加えると、プロセス3の分割数は4となり、CPU時間は30となる。本例の場合、元のプロセス1の分割数は1、スレッドのCPU時間は100であり、分割数を1増やした(分割数は2となる)場合のプロセス1を構成するスレッドのCPU時間は50となり、削減量は50となる。そして、プロセス3は、元は3つのスレッドに分割されており、元の各スレッドのCPU時間は40であったため、分割数を1増やした(分割数は4となる)場合のスレッドのCPU時間は30となり、削減量は10である。以上から、スレッドのCPU時間の削減量の最も多いプロセスはプロセス1となるため、プロセス1を選択する。
ステップS1008で、システム負荷監視部13は、ステップS1007の分割数における、現在時刻から時間T1だけ先の時刻におけるパイプライン処理の処理時間を求める。
ステップS1009で、システム負荷監視部13は、制限時間オーバーが解消されるかどうか調べる。制限時間オーバーが解消されなければ、ステップS1022に進む。
コア数よりも大きい場合は、1つのCPUコア5に同一パイプライン処理のスレッド8が複数動作することになり、スレッド8の処理時間が分割数よりも大きくなるため、そのプロセス7をスレッド分割してもパイプライン処理の制限時間オーバーの解消は不可能とし、ステップS1004に進む。
ステップS1005〜ステップS1009の処理の結果、現在時刻から時間T1だけ先の時刻において制限時間オーバーが解消される場合、ステップS1010に進む。
ステップS1011において、システム負荷監視部13は、S1010のプロセス7の新規起動するスレッド8のうち、配置するスレッド8を1つ選択する。
ステップS1012で、システム負荷監視部13は、スレッド8の属するプロセス7が動作する計算機3において、同一プロセス7のスレッド8が動作しておらず、同一パイプライン処理を構成するプロセス7のスレッド8が動作していないCPUコア5を選択し、そのCPUコア5でスレッド8を動作させた場合に、新規起動するスレッド8が動作可能か、そして、そのCPUコア5で動作しているその他のスレッド8が、新規にスレッド8を起動しても制限時間内に動作可能かどうか、を調べる。
スレッドtmの処理時間Exec(tm)は、スレッドtmの起動を予定するCPUコアですでに動作しているスレッドを、処理の優先度の高い順に並べたものを{t1,t2,…,tm,…,tn}とし、スレッドtmの処理周期をCm、CPU時間をcpu(tm)とした場合、次の式として表すことができる。
ステップS1014で、システム負荷監視部13は、プロセス7の処理時間が変動した全てのパイプライン処理が制限時間オーバーを起こしていないかどうか調べ、起こしていなければ、ステップS1015に進み、制限時間オーバーするパイプライン処理があれば、ステップS1015を行わずにステップS1016に進む。
ステップS1015にて、システム負荷監視部13は、そのCPUコア5をスレッド8の配置先の候補として記憶する。
ステップS1016において、システム負荷監視部13は、同一のパイプライン処理に属するプロセス7のスレッド8が動作していないCPUコア5の全てについてスレッド8の配置可能性の調査を行ったかどうか調べ、行っていなければ、ステップS1012に戻る。調査をおこなった場合はステップS1017に進む。
ステップS1018において、システム負荷監視部13は、ステップS1015にて記憶した全てのCPUコア5のうち、CPU空き時間の最も少ないCPUコア5を、スレッド8の配置先として決定する。ここで求めるCPU空き時間は、最も優先度の低いスレッド8をtx、スレッドtxの処理周期をC(tx)、CPU時間をcpu(tx)とすると、次の式で求められる。
1つのプロセス7の全てのスレッド8の配置が決定したら、ステップS1020で、システム負荷監視部13は、計算機負荷監視部10にステップS1017で記憶したCPUコア5でスレッド8を起動するよう指示する。計算機負荷監視部10は、ステップS1020でスレッド起動の指示を受けると、ステップS1018で記憶したCPUコア5のスレッド割付部12にスレッド起動を指示する。スレッド割付部12は、スレッド8を起動する。その際、スレッド割付部12は、スレッド制御部14に、各スレッド8がデータ中どの部分を処理すべきかを指示し、さらに、パイプライン処理において、自プロセス7の次に処理を行うプロセス7にデータを送信するよう指示する。各スレッド8がデータ中のどの部分を処理すべきか、という分け方は、例えば、各スレッド8にスレッド数と固有の番号を与え、スレッド数に応じてデータを均等分割し、そのうちの自スレッドの番号である、N番目のデータを処理するなどが考えられる。例えば、プロセス7を5つのスレッド8に分割し、100個の配列を持つデータを受信した場合、1番のスレッドは分割後の配列の1番目のブロックである配列の1番目〜20番目のデータを処理する、2番のスレッドは21〜40番目を処理する、などのようなことが考えられる。
その後、ステップS1021に進む。
その結果、ステップS1026において、システム負荷監視部13は、ステップS1015でスレッド8の配置先として記憶したCPUコア5があれば、ステップS1027に進む。
ステップS1027で、システム負荷監視部13は、ステップS1018を行う。そして、選択したプロセス7の、新規起動する全てのスレッド8の配置するCPUコア5が決定した場合は、ステップS1029に進む。
ステップS1029で、システム負荷監視部13は、ステップS1027で記憶したCPUコア5全てでスレッド8を起動するよう計算機負荷監視部10に指示する。計算機負荷監視部10は、指定されたCPUコア5でスレッド8を起動するよう、スレッド割付部12に指示する。スレッド割付部12は、スレッド8を起動する。その際、スレッド割付部12は、スレッド制御部14に、各スレッド8がデータ中どの部分を処理すべきかを指示し、さらに、パイプライン処理において、自プロセスの次に処理を行うプロセスにデータを送信しないよう指示する。各スレッド8がデータ中どの部分を処理すべきか、という分け方は、例えば、各スレッド8にスレッド数と固有の番号を与え、スレッド数に応じてデータを均等分割し、そのうちの自スレッドの番号である、N番目のデータを処理するなどが考えられる。例えば、プロセス7を5つのスレッド8に分割し、100個の配列を持つデータを受信した場合、1番のスレッドは分割後の配列の1番目のブロックである配列の1番目〜20番目のデータを処理する、2番のスレッドは21〜40番目を処理する、などのようなことが考えられる。
ステップS1030で、システム負荷監視部13は、パイプライン処理において、選択したプロセス7にデータを送信するプロセス7が動作する計算機3の計算機負荷監視部10に、S1024で選択したホスト(計算機3)で新規プロセスを起動した旨を伝える。計算機負荷監視部10は、スレッド制御部14に、データ送信処理を行うプロセス7が、新規プロセスにデータを送信するよう指示する。これにより、データ送信処理を行うプロセス7が新規プロセスにデータを送信できるようになる。
そして、ステップS1031において、システム負荷監視部13は、選択したプロセス7のデータ送信先となるプロセス7が動作する計算機3の計算機負荷監視部10に、S1024で選択したホスト(計算機3)で新規プロセスを起動した旨を伝え、計算機負荷監視部10は、スレッド制御部14に、新規起動したスレッド8からのデータを破棄するよう指示する。本処理の後、ステップS1021に進む。
T1時間以上経過し、制限時間オーバーが発生するまでに、パイプライン処理時間監視部11は、システム負荷監視部13に、図9のS1において、制限時間オーバー間近である旨を通知する。すると、システム負荷監視部13は、ステップS5で、新規起動したプロセスを処理に参入させる。
これにより、パイプライン処理において新規起動したプロセス7の次の処理を行うプロセス7は、新規起動したスレッド8からのデータを受信するようになる。
ステップS1033で、新規起動するプロセス7と同一処理を行い新規起動するプロセス7よりも前から動作していたプロセス7の計算機負荷監視部10に、プロセス7を停止するよう指示する。計算機負荷監視部10は、スレッド割付部12にプロセス7の各スレッド8を停止するよう指示し、各CPUコア5で動作するスレッド割付部12は、停止対象のプロセス7のスレッド8を停止させる。
分散リアルタイム処理システムは、各計算機3の各CPUコア5で複数のプロセス7が連携または独立して動作する。各プロセス7は、一定時間周期で処理を行い、制限時間内に処理を完了することが求められている。
計算機リソース制御方式は、スレッド処理時間監視部9と、計算機負荷監視部10と、パイプライン処理時間監視部11と、スレッド割付部12と、スレッド制御部14と、システム負荷監視部13とを有する。
スレッド処理時間監視部9は、プロセス7の構成要素であるスレッド8の処理時間を監視する。
計算機負荷監視部10は、各計算機3上で動作するスレッド8の処理時間およびCPU時間を取得して履歴を保持し、履歴をもとに処理時間やCPU時間の変動を調査する。
パイプライン処理時間監視部11は、複数のプロセス7が連携して動作する場合に連携動作するプロセス群全体の処理時間を取得し、履歴を保持し、履歴をもとに、処理時間の変動を検出する。
スレッド割付部12は、CPUコア5にてスレッド起動、停止を指示するとともに、データの送信先や送信元の変更、送信するデータの領域などをスレッド制御部14に指示する。
スレッド制御部14は、スレッド割付部12の指示をもとに、各計算機3、各CPUコア5からのデータから、適切なデータ領域のデータを受信し、適切なデータ領域のデータを送信する役割を持つ。
システム負荷監視部13は、処理時間に変更があった場合に、プロセス7のスレッド8への処理の分割やスレッド数の削減などの処理を行う。
計算機リソース制御方式は、各構成要素に以下の特徴を付与することにより、前記分散リアルタイム処理システムの制限時間超過の防止、処理時間短縮時の処理の集約を行う。
・決定した分割数のスレッド8を、元のプロセス7が動作していたCPUコア5に配置できない場合に、システム負荷監視部13が、プロセス7を他の計算機3に移動させ、他のCPUコア5で分割数分のスレッド8を起動する。
・他の計算機3にプロセス7を移動させた場合、スレッド割付部12により、プロセス7が必要とするデータが蓄積された後、プロセス7を処理に参入させる。
実施の形態2について、図14〜図15を用いて説明する。
なお、実施の形態1と共通する部分については、同一の符号を付し、説明を省略する。
ステップS2002で、システム負荷監視部13は、ステップS1003において処理時間短縮に向けた処理を行うことになったパイプライン処理の全てについて、ステップS2003〜S2014を行ったかどうかを調べる。行った場合、システム負荷監視部13は、ステップS3を終了する。行っていなければ、システム負荷監視部13は、ステップS2003以降でパイプライン処理の処理時間短縮に向けた処理を行う。
ステップS2003で、システム負荷監視部13は、ステップS1005を実行する。
ステップS2004で、システム負荷監視部13は、ステップS1006〜S1008を実行する。
ステップS2005で、システム負荷監視部13は、現在時刻から時間T1だけ先の時刻において制限時間オーバーが解消される場合、ステップS2006に進む。
制限時間オーバーが解消されない場合、システム負荷監視部13は、ステップS2016に進む。システム負荷監視部13は、現在のスレッドの分割数を調べる。分割数がCPUコア数よりも大きい場合、システム負荷監視部13は、1つのCPUコア5に同一パイプライン処理のスレッド8が複数動作することになり、スレッド8の処理時間が分割数よりも大きくなるため、そのプロセス7をスレッド分割してもパイプライン処理の制限時間オーバーの解消は不可能とし、ステップS2002に戻る。分割数がCPUコア数以下の場合、システム負荷監視部13は、ステップS2004に戻る。
ステップS2006で、システム負荷監視部13は、ステップS1010を実行する。
ステップS2007で、システム負荷監視部13は、ステップS1011を実行する。
ステップS2008で、システム負荷監視部13は、ステップS1012〜S1013を実行する。
ステップS2009で、システム負荷監視部13は、プロセス7の処理時間が変動した全てのパイプライン処理が制限時間オーバーを起こしていないかどうか調べる。起こしていなければ、システム負荷監視部13は、ステップS2010に進む。制限時間オーバーするパイプライン処理があれば、システム負荷監視部13は、ステップS2010を行わずにステップS2011に進む。
ステップS2010にて、システム負荷監視部13は、そのCPUコア5をスレッド8の配置先の候補として記憶する。ステップS2011において、システム負荷監視部13は、同一のパイプライン処理に属するプロセス7のスレッド8が動作していないCPUコア5の全てについてスレッド8の配置可能性の調査を行ったかどうか調べる。行っていなければ、システム負荷監視部13は、ステップS2008に戻る。調査をおこなった場合、システム負荷監視部13は、ステップS2012に進む。
ステップS2012で、システム負荷監視部13は、S1015で記憶したCPUコアがあれば、ステップS2013に進む。
ステップS2013で、システム負荷監視部13は、記憶したCPUコアのうち、最も空きCPU時間の少ないCPUコア5でスレッドを起動する。
ステップS2014で、システム負荷監視部13は、選択したプロセスの全新規起動スレッド8について、配置するCPUコア5が決定していれば、ステップS2015に進む。決定していなければ、システム負荷監視部13は、ステップS2007に戻る。
ステップS2015にて、システム負荷監視部13は、全てのプロセス7のスレッド8の配置先が決定していれば、ステップS2002に戻る。決定していなければ、システム負荷監視部13は、ステップS2006に戻る。
なお、ステップS2012において、ステップS1015で記憶したCPUコア5がなければ、同一計算機3の他コア内にスレッド8を動作可能な計算機3が存在しないことになるため、そのプロセス7の残りスレッド8を他の計算機3で動作させるため、ステップS2017に進む。
ステップS2019で、システム負荷監視部13は、選択した計算機3で起動すべきスレッド数を、ステップS1007で記憶したスレッド数から、ステップS1020、ステップS2022で起動したスレッド数を引いたものとする。
ステップS2020で、システム負荷監視部13は、ステップS1011〜S1016を実行する。
ステップ2021で、システム負荷監視部13は、ステップS1015で記憶したCPUコア5があるかどうかを調べ、あればステップS2022に進む。なければ、システム負荷監視部13は、ステップS2026に進む。
ステップS2022で、システム負荷監視部13は、ステップS1018を実行する。
ステップS2023で、システム負荷監視部13は、ステップS2022で選択したCPUコア5でスレッドを起動する。
ステップS2024で、システム負荷監視部13は、パイプライン処理において、起動したプロセス7のデータ送信元となるプロセスに、新規にプロセス7が起動した旨と、起動したホスト(計算機3)を通知する。
ステップS2025で、システム負荷監視部13は、配置すべき全てのスレッド8の配置するCPUコア5が決定したかどうかを調べる。決定していれば、システム負荷監視部13は、ステップS2015に戻る。決定していなければ、システム負荷監視部13は、ステップS2020に戻り、配置先CPUコア5が決定していないスレッド8について、配置可能なCPUコア5の調査を行う。
ステップS2026で、システム負荷監視部13は、S2018で未選択の計算機3があるかどうかを調べる。あれば、システム負荷監視部13は、他の計算機3でスレッド8を起動するため、ステップS2018に進む。未選択の計算機3がなければ、システム負荷監視部13は、制限時間オーバー解消に向けたプロセス7の処理時間短縮を断念し、ステップS2015に戻る。
・決定した分割数の全てのスレッド8を元のプロセス7が動作していたものと同一計算機3の他CPUコア5に配置できない場合に、システム負荷監視部13により、動作可能なスレッド8のみ配置し、配置できなかったスレッド8を他の計算機3に移動させる。
・プロセス7の一部処理を他の計算機3に移動させた場合、スレッド割付部12により、新規起動した全てのプロセス7が必要とするデータが蓄積された後、全ての新規起動したプロセス7を処理に参入させる。
実施の形態3について、図16を用いて説明する。
なお、実施の形態1〜実施の形態2と共通する部分については、同一の符号を付し、説明を省略する。
ステップS3002で、システム負荷監視部13は、S1003で抽出した全てのパイプライン処理について、S3003〜S3016を実施したかどうかを調べる。実施していなければ、システム負荷監視部13は、ステップ3003に進む。実施していれば、システム負荷監視部13は、ステップS3を終了する。
ステップS3003において、システム負荷監視部13は、ステップS1005を実行する。
ステップS3004において、システム負荷監視部13は、ステップS1006〜S1008を実行する。
ステップS3005において、システム負荷監視部13は、ステップS1006で選択したプロセス7をステップS1007で記憶したスレッド数に分割した場合に、制限時間オーバーの解消が可能であるかどうかを調べる。可能であれば、システム負荷監視部13は、ステップS3006に進む。可能でなければ、システム負荷監視部13は、ステップS3004に戻る。
ステップS3006で、システム負荷監視部13は、ステップS1010を実行する。
ステップS3007で、システム負荷監視部13は、パイプライン処理において、ステップS3006で選択したプロセス7のデータ送信元となるプロセス7が動作する計算機3があるかどうかを調べる。あれば、システム負荷監視部13は、ステップS3008に進む。なければ、システム負荷監視部13は、ステップS3017に進む。
ステップS3008で、システム負荷監視部13は、その計算機を選択する。
ステップS3009で、システム負荷監視部13は、ステップS1011を実行する。
ステップS3010で、システム負荷監視部13は、ステップS3007で選択した計算機3のCPUコア5において、ステップS3006で選択したプロセス7と同一パイプライン処理に属するプロセス7のスレッド8が動作していないCPUコア5が、分割数以上あるかどうかを調べる。あれば、システム負荷監視部13は、ステップS3011に進む。なければ、システム負荷監視部13は、ステップS3017に進む。
ステップS3011で、システム負荷監視部13は、ステップS1012〜S1016を実行する。
ステップS3012で、システム負荷監視部13は、ステップS1015で記憶したCPUコア5があるかどうかを調べる。あれば、システム負荷監視部13は、ステップS3013に進む。ステップS1015で記憶したCPUコア5がなければ、スレッド8がその計算機3に配置できないことを意味するので、システム負荷監視部13は、ステップS3017に進む。
ステップS3013で、システム負荷監視部13は、ステップS1018を実行する。
ステップS3014において、システム負荷監視部13は、ステップS3006で選択したプロセス7の新規起動スレッド8を配置するCPUコア5が決定していなければ、ステップ3009に戻り、他のスレッド8を動作させるCPUコア5の決定処理を行う。決定していれば、システム負荷監視部13は、ステップS3014に進む。
ステップS3015で、システム負荷監視部13は、ステップS1020を行う。
ステップS3016で、システム負荷監視部13は、全てのプロセス7のスレッド8の配置先が決定したかどうかを調べる。決定していれば、システム負荷監視部13は、ステップS3002に進む。決定していなければ、システム負荷監視部13は、ステップS3006に戻り、他のプロセス7のスレッド8を動作させる計算機3およびCPUコア5を決定する。
・制限時間オーバーの原因となったプロセス7を、連携して処理を行う他の計算機3上のプロセス7と同一の計算機3の他CPUコア5に配置する。
実施の形態4について、図17を用いて説明する。
なお、実施の形態1〜実施の形態3と共通する部分については、同一の符号を付し、説明を省略する。
ステップS4002で、システム負荷監視部13は、ステップS4001で抽出したプロセス7が動作する各計算機負荷監視部10に、処理時間、CPU時間が減少したプロセスと、処理時間、CPU時間の変化に関する近似式、およびプロセス7の現在の分割数を調べるよう指示し、計算機負荷監視部10からこれらの通知を受信し、記憶しておく。
ステップS4003で、システム負荷監視部13は、各パイプライン処理を構成するプロセス7のCPU時間の減少量、処理時間の減少量、および、パイプライン処理のピーク時から処理時間が一定になるまでの処理時間の減少量から、パイプライン処理の処理時間の減少量が、パイプライン処理を構成するプロセス7に原因があるのか、同一CPUコア5で動作する、より優先度の高い他のパイプライン処理を構成するスレッド8の処理時間が短くなったことによって処理時間が短くなったのか、を調査する。
調査の具体的な方式としては、例えば、システム負荷監視部13は、パイプライン処理を構成するスレッド8のCPU時間の減少量とパイプライン処理の処理時間の減少量の差を求める。パイプライン処理の処理時間の減少量が各スレッドのCPU時間の減少量の和と同一であれば、システム負荷監視部13は、処理時間が減少したパイプライン処理に属するスレッドのCPU時間が減少したことによって処理時間が短くなったことが考えられる。
なお、本実施の形態では、処理時間が減少した原因が自パイプライン処理を構成するプロセス7にあるパイプライン処理に対してのみ処理の集約を行うこととする。
ステップS4004で、システム負荷監視部13は、ステップS4003において記憶したパイプライン処理の全てについて、S4005〜S4018を行ったかを調べる。行った場合、システム負荷監視部13は、ステップS4を終了する。行っていなければ、システム負荷監視部13は、パイプライン処理に属するプロセス7の集約に向けた処理を行う。
ステップS4005で、システム負荷監視部13は、まず、ステップS4003で記憶したパイプライン処理から1つを選択する。
ステップS4006で、システム負荷監視部13は、ステップS4005で選択したパイプライン処理を構成するプロセス中、CPU時間がピークから減少し、一定になったプロセス7を選択する。
なお、本実施の形態では、CPU時間が増加する前は1つのプロセスであったが、プロセス7が消費するCPU時間の増加により、複数の計算機3で複数のプロセス7に分割して処理を行っている可能性がある。この場合、システム負荷監視部13は、同一処理を行うプロセス7を全て選択する。
ステップS4007で、システム負荷監視部13は、ステップS4006で選択したプロセス群の総スレッド数を求める。
ステップS4008で、システム負荷監視部13は、ステップS4006で選択したプロセス群の各スレッドが動作するCPUコア5から、ステップS4009で未選択のCPUコア5があるかどうかを調べる。あれば、システム負荷監視部13は、ステップS4009に進む。
ステップS4009で、システム負荷監視部13は、CPUコア5を1つ選択する。
ステップS4010で、システム負荷監視部13は、ステップS4009で選択したCPUコア5に集約可能なスレッド8の最大数を求める。例えば、分散配置されているスレッド8のうち1つを、ステップS4009で選択したCPUコア5のスレッド8に集約した場合、そのスレッド8のCPU時間、およびプロセスの処理時間は倍になる。また、2つのスレッドを1つのスレッドに集約した場合には、CPU時間、プロセスの処理時間は3倍になる。スレッドを1つのCPUコア5に集約した場合に、そのプロセス7が属するパイプライン処理が制限時間オーバーを起こさず、かつ、同一CPUコア5で動作するスレッド8が属するパイプライン処理が制限時間オーバーを起こさないような最大値を求める。本ステップ以降、集約処理後、処理を行うスレッド8を被集約スレッド、処理の集約により、処理が不要となるスレッド8を集約スレッドと呼ぶ。
ステップS4012で、システム負荷監視部13は、その最大値および、ステップS4009で選択したCPUコア5を記憶する。
システム負荷監視部13は、ステップS4009〜S4012を、全てのCPUコア5について実施する。その後、システム負荷監視部13は、ステップS4013に進む。
ステップS4014で、システム負荷監視部13は、S4013で求めた各CPUコア5の空きCPU時間で、最も大きいものから順に、そのCPUコア5で動作するスレッド8を集約スレッドとして決定する。
ステップS4015において、システム負荷監視部13は、ステップS4010で記憶したスレッド8が動作する計算機3の計算機負荷監視部10に、各集約スレッドが処理を担当していたデータの領域を通知する。そして、計算機負荷監視部10は、スレッド割付部12に、集約するスレッド数および集約スレッドが処理を担当していたデータ領域を通知する。これにより、ステップS4010で記憶したCPUコア5で動作する非集約スレッドは、集約スレッドの処理も行う。ただし、この段階では、パイプライン処理において、集約スレッドのデータ送信先のプロセス7は、集約プロセスのデータのうち、もともと担当していたデータ領域のみを受信し、ステップS4015で新しく担当することとなった集約スレッドのデータの演算結果は破棄する。
ステップS4016で、システム負荷監視部13は、N周期だけ時間が経過するのを待つ。N周期経過後、システム負荷監視部13は、ステップS4017へ進む。
ステップS4017において、システム負荷監視部13は、S4006で選択したプロセス7のデータ送信先となるプロセス7に、集約スレッドが送信する全データを受信するよう指示する。
ステップS4018で、システム負荷監視部13は、集約スレッドが動作する計算機の計算機負荷監視部10に、集約スレッドを停止するよう指示する。計算機の計算機負荷監視部10は、各CPUコア5のスレッド割付部12に、スレッドを停止するよう指示する。スレッド割付部12は、スレッド8を停止する。その後、システム負荷監視部13は、ステップS4004に戻り、S4003で抽出した全てのパイプライン処理について、スレッド8の処理の集約処理が完了したかどうかを調べる。完了していれば、システム負荷監視部13は、ステップS4を終了する。完了していなければ、システム負荷監視部13は、ステップS4005以降を行う。
・処理時間が短縮傾向にある分散処理において、処理時間短縮の原因となったプロセス7のスレッド8の数を、自プロセス7が属する処理およびシステム内の全ての処理が制限時間超過を発生させない数にまで集約する。
・スレッド8の集約により、他のスレッド8の処理を行うスレッド8が、処理をするために必要なデータを蓄積した後、処理集約に伴い不要となったスレッド8を停止させる。
実施の形態5について、図18〜図28を用いて説明する。
なお、実施の形態1と共通する部分については、同一の符号を付し、説明を省略する。
計算機システム800は、複数の計算機810と、ネットワーク820とを有する。ネットワーク820は、複数の計算機810を相互に接続する。複数の計算機810は、ネットワーク820を介して通信する。
複数の計算機810のうち少なくともいずれかの計算機810は、計算機システム800の外部からデータを入力する。複数の計算機810のうち少なくともいずれかの計算機810は、計算機システム800の外部へデータを出力する。外部からデータを入力する計算機810と、外部へデータを出力する計算機810とは、同じ計算機810でもよいし、異なる計算機810でもよい。また、複数の計算機810が、外部からデータを入力し、あるいは、外部へデータを出力してもよい。
計算機810は、1以上の処理装置911と、バス912と、記憶装置914と、入力装置915と、出力装置916とを有する。複数の計算機810それぞれが有する処理装置911の数は、同じ数であってもよいし、異なる数であってもよい。少なくともいずれかの計算機810は、複数の処理装置911を有する。
バス912は、処理装置911と、記憶装置914と、入力装置915と、出力装置916との間を接続する。処理装置911と、記憶装置914と、入力装置915と、出力装置916とは、バス912を介して通信する。
処理装置911は、プログラムを実行することにより、データを処理し、記憶装置914や入力装置915や出力装置916などを制御する。
記憶装置914は、処理装置911が実行するプログラムや、処理装置911が処理するデータなどを記憶する。計算機810が複数の処理装置911を有する場合、記憶装置914は、複数の処理装置911が共有している。すなわち、記憶装置914が記憶したデータは、いずれの処理装置911も読み出すことができ、いずれの処理装置911も、処理したデータを記憶装置914に記憶させることができる。記憶装置914は、ロック機能など、記憶したデータの整合性を保つための機能を持つ。記憶装置914は、例えば、半導体メモリ、フラッシュメモリ、磁気ディスク装置、光学ディスク装置などである。
入力装置915は、計算機システム800の外部や他の計算機810など、計算機810の外部からデータや信号などの情報を入力する。入力装置915が信号など処理装置911が直接処理できない形式の情報を入力する場合、入力装置915は、入力した信号を、処理装置911が処理できるデータの形式に変換する。入力装置915が入力あるいは変換したデータは、処理装置911が直接処理してもよいし、記憶装置914が一時的あるいは恒久的に記憶してもよい。入力装置915は、例えば、他の計算機810や計算機システム800の外部の装置などと通信する通信装置、カメラやスキャナなど画像を入力する画像入力装置、マイクなど音声を入力する音声入力装置、キーボードやマウスなど利用者の操作を入力する操作入力装置、アナログ信号を入力するアナログデジタル変換装置などである。
出力装置916は、計算機システム800の外部や他の計算機810など、処理装置911が処理したデータや記憶装置914が記憶したデータ、あるいはこれらのデータを計算機810の外部に出力する形式に変換した信号などの情報を出力する。出力装置916は、例えば、他の計算機810や計算機システム800の外部の装置などと通信する通信装置、ディスプレイやプリンタなど画像を出力する画像出力装置、スピーカなど音声を出力する音声出力装置、アナログ信号を出力するデジタルアナログ変換装置などである。
なお、同じ要素が複数ある場合、符号の後ろにアルファベットを付加して区別する場合がある。他の図においても同様である。
パイプライン処理850は、直列関係にある複数のプロセス851からなる。例えば、パイプライン処理850aは、5つのプロセス851a〜851eからなる。パイプライン処理850bは、4つのプロセス851f〜851iからなる。
二段目のプロセス851bは、最前段のプロセス851aが出力した結果データ862aを入力する。プロセス851bは、入力した結果データ862aを処理して、処理結果を表わす結果データ862bを生成する。プロセス851bは、生成した結果データ862bを出力する。
以下同様に、後段のプロセス851は、前段のプロセス851が生成した結果データ862を処理して、結果データを生成する。
パイプライン処理850aが出力する結果データは、最後段のプロセス851eが生成した結果データ862eである。
横軸は、時刻を表わす。
パイプライン処理850が入力データ861を入力してから、結果データを出力するまでにかかった時間を、パイプライン処理時間871と呼ぶ。
パイプライン処理850において、後段のプロセス851は、前段のプロセス851の結果データを処理するから、前段のプロセス851の処理が終わってから、後段のプロセス851の処理が開始する。したがって、パイプライン処理時間871は、パイプライン処理850を構成する各プロセス851の処理時間の合計である。
また、処理が後段のプロセス851に移ったのち、前段のプロセス851は、次のデータ待ち状態になる。このため、パイプライン処理850は、ある入力データ861の処理が終わる前であっても、次の入力データ861の処理を開始することができる。
横軸は、時刻を表わす。
プロセス851の処理852をするために必要となる対象データ863の数を「入力回数n」と呼ぶ。入力回数nのプロセス851は、[n−1]周期前の周期で入力した対象データ863から、今の周期で入力した対象データ863までのn個の対象データ863に基づいて、処理852を実行する。
第二回目の周期では、その周期で入力した対象データ863Bと、第一回目の周期で記憶しておいた対象データ863Aとがあるが、2つ前の周期の対象データ863がないので、第二回目の処理852Bも、実行できない。あるいは、第二回目の処理852Bを実行したとしても、その結果として生成する結果データ862Bは、正しい処理結果ではない。プロセス851は、後の周期の処理852のため、対象データ863Bを記憶しておく。
第三回目の周期になると、その周期で入力した対象データ863Cと、第二回目の周期で記憶しておいた1つ前の対象データ863Bと、第一回目の周期で記憶しておいた2つ前の対象データ863Aとが揃うので、処理852Cを実行できる。プロセス851は、処理852Cを実行して、結果データ862Cを生成する。また、プロセス851は、後の周期のため、対象データ863Cを記憶しておく。
それ以降の周期では、同様に3つの対象データ863が揃うので、プロセス851は、処理852を実行して、結果データ862を生成する。また、プロセス851は、後の周期のため、対象データ863を記憶しておく。
例えば、共通鍵による暗号化処理および復号処理では、データを共通鍵と同じ長さのブロックに分割して、分割したブロックごとに、共通鍵との間でビットごとの排他的論理和を取る。排他的論理和を取ったブロックを結合して、暗号化もしくは復号したデータを生成する。したがって、この処理は、ブロックの長さの整数倍ごとにデータを分割することにより、部分処理に分けることができる。
また、例えば、画像にソフトフォーカスやエンボスなどの視覚効果を加えるフィルタ処理では、各画素の近傍に位置する画素の色や輝度などに基づいて、その画素の色や輝度などを算出する。したがって、この処理は、画像を複数に分割することにより、部分処理に分けることができる。ただし、分割された画像の境界付近では、隣の画像の画素のデータを必要とする場合がある。このため、各部分処理が入力する画像は、担当する部分だけでなく、隣接する部分の少なくとも一部を含む。
1つのプロセス851の処理852を4つの部分処理853a〜853dに分けた場合、それに対応して、4つのスレッド854a〜854dが起動される。4つのスレッド854a〜854dのうちの1つ(スレッド854a)は、そのプロセス851の主スレッドであり、残りの3つのスレッド854b〜854dは、そのプロセス851の従スレッドである。
従スレッド854b〜854dを実行する処理装置911は、従スレッド854b〜854dにそれぞれ割り当てられた部分処理853b〜853dのほかに、対象データ取得処理883、結果データ通知処理884などの処理を実行する。
対象データ通知処理882は、主スレッド854aが、対象データ入力処理881で入力した対象データ863を、従スレッド854b〜854dに通知する処理である。なお、対象データ入力処理881で入力した対象データ863全部を通知してもよいし、各従スレッド854b〜854dが必要とする部分のみを通知してもよい。
結果データ通知処理884は、従スレッド854b〜854dが、部分処理853b〜853dで生成した結果データ862の一部を、主スレッド854aに通知する処理である。
結果データ結合処理886は、主スレッド854aが、部分処理853aで生成した結果データ862の一部と、結果データ取得処理885で取得した結果データ862の一部とを結合して、結果データ862を生成する処理である。
結果データ出力処理887は、主スレッド854aが、そのプロセス851の代表として、生成した結果データ862を出力する処理である。
主スレッド854aを実行する処理装置911と、従スレッド854を実行する処理装置911とが、同じ計算機810の処理装置911である場合、通知されるべきデータは、その計算機810の記憶装置914が既に記憶している。したがって、対象データ通知処理882や結果データ通知処理884では、データが出来たことを単に通知するだけでよい。対象データ取得処理883や結果データ取得処理885は、その通知を受けて、記憶装置914からデータを読み出す。
これに対し、主スレッド854aを実行する処理装置911と、従スレッド854を実行する処理装置911とが、異なる計算機810の処理装置911である場合、通知側の処理装置911は、出力装置916(通信装置)を用いて、ネットワーク820を介して、通知されるべきデータを送信し、取得側の処理装置911は、入力装置915(通信装置)を用いて、送信されたデータを受信する必要がある。
したがって、プロセス851の主スレッド854aと、従スレッド854b〜854dとを、同じ計算機810の処理装置911が実行するほうが、異なる計算機810の処理装置911が実行するよりも、処理装置911の間の通信処理の負荷が減り、効率がよい。
前段のプロセス851の主スレッド854を実行する処理装置911と、後段のプロセス851の主スレッド854を実行する処理装置911とが同じ計算機810の処理装置911である場合、前段のプロセス851の主スレッド854aの結果データ出力処理887は、データが出来たことを単に通知するだけでよい。後段のプロセス851の主スレッド854aの対象データ入力処理881は、その通知を受けて、記憶装置914からデータを読み出す。
これに対し、前段のプロセス851の主スレッド854を実行する処理装置911と、後段のプロセス851の主スレッド854を実行する処理装置911とが異なる計算機810の処理装置911である場合、出力側の処理装置911は、出力装置916(通信装置)を用いて、ネットワーク820を介して、出力すべきデータを送信し、入力側の処理装置911は、入力装置915(通信装置)を用いて、送信されたデータを受信する必要がある。
したがって、前段のプロセス851の主スレッド854aと、後段のプロセス851の主スレッド854aとを、同じ計算機810の処理装置911が実行するほうが、異なる計算機810の処理装置911が実行するよりも、処理装置911間の通信処理の負荷が減り、効率がよい。
計算機システム800は、スレッド実行部111と、スレッド管理部112と、スレッド開始時刻取得部121と、スレッド終了時刻取得部122と、プロセス開始時刻算出部125と、プロセス終了時刻算出部126と、プロセス処理時間算出部131と、パイプライン処理時間算出部132と、パイプライン処理時間予測部133と、制限時間超過判定部141と、分割プロセス選択部142と、空き処理装置選択部143と、スレッド起動部144と、他計算機処理装置選択部145と、他計算機スレッド起動部146と、移動プロセス終了部147と、処理時間短縮判定部151と、分割済プロセス選択部152と、終了スレッド選択部153と、スレッド終了部154とを有する。
上述したように、これらの機能ブロックは、処理装置911がプログラムを実行することにより実現される。スレッド実行部111以外の機能ブロックを実現する処理装置911は、いずれの計算機810のいずれの処理装置911であってもよい。例えば、スレッド実行部111以外のすべての機能ブロックを、1つの処理装置911が実現してもよい。あるいは、すべての処理装置911に、処理の負荷が均等になるよう、機能ブロックを分散して配置してもよい。また、1つの機能ブロックを、複数の処理装置911が分担して実現してもよい。
例えば、スレッド管理部112は、記憶装置914を用いて、どの計算機810のどの処理装置911が、どのパイプライン処理850のどのプロセス851のどのスレッド854を実行しているかを表わすスレッド管理テーブルを記憶している。スレッド管理部112は、後述するスレッド起動部144などからの指示にしたがい、処理装置911を用いて、スレッド実行部111に対して、スレッド854の起動・終了などを指示するとともに、記憶したスレッド管理テーブルを更新する。
スレッド終了時刻取得部122は、処理装置911を用いて、各パイプライン処理850の各周期において、スレッド実行部111が実行する各スレッド854の処理が終了した時刻を取得する。スレッド終了時刻取得部122は、記憶装置914を用いて、取得した時刻を記憶する。
例えば、プロセス開始時刻算出部125は、処理装置911を用いて、スレッド管理部112が記憶したスレッド管理テーブルに基づいて、各プロセスの主スレッドを判定する。プロセス開始時刻算出部125は、記憶装置914を用いて、判定した主スレッドについて、スレッド開始時刻取得部121が取得した時刻を、そのプロセス851の処理が開始した時刻として記憶する。
あるいは、プロセス開始時刻算出部125は、処理装置911を用いて、あるプロセス851の各スレッド854についてスレッド開始時刻取得部121が取得した時刻のなかから、最も早い時刻を判定する。プロセス開始時刻算出部125は、記憶装置914を用いて、判定した時刻を、そのプロセス851の処理が開始した時刻として記憶する。
例えば、プロセス終了時刻算出部126は、処理装置911を用いて、スレッド管理部112が記憶したスレッド管理テーブルに基づいて、各プロセスの主スレッドを判定する。プロセス開始時刻算出部125は、記憶装置914を用いて、判定した主スレッドについて、スレッド終了時刻取得部122が取得した時刻を、そのプロセス851の処理が終了した時刻として記憶する。
あるいは、プロセス終了時刻算出部126は、処理装置911を用いて、あるプロセス851の各スレッド854についてスレッド終了時刻取得部122が取得した時刻のなかから、最も遅い時刻を判定する。プロセス終了時刻算出部126は、記憶装置914を用いて、判定した時刻を、そのプロセス851の処理が終了した時刻として記憶する。
例えば、プロセス処理時間算出部131は、処理装置911を用いて、あるプロセス851についてプロセス終了時刻算出部126が算出した時刻から、プロセス開始時刻算出部125が算出した時刻を差し引いた差を計算する。プロセス処理時間算出部131は、記憶装置914を用いて、計算した差を、そのプロセス851の処理にかかった時間として記憶する。
例えば、パイプライン処理時間算出部132は、処理装置911を用いて、あるパイプライン処理850の最後段のプロセス851についてプロセス終了時刻算出部126が算出した時刻から、最前段のプロセス851についてプロセス開始時刻算出部125が算出した時刻を差し引いた差を計算する。パイプライン処理時間算出部132は、記憶装置914を用いて、計算した差を、そのパイプライン処理850のパイプライン処理時間871として記憶する。
あるいは、パイプライン処理時間算出部132は、処理装置911を用いて、あるパイプライン処理850の各プロセス851についてプロセス開始時刻算出部125が算出した時刻のなかから、最も早い時刻を判定して、そのパイプライン処理850の開始時刻とする。パイプライン処理時間算出部132は、処理装置911を用いて、そのパイプライン処理850の各プロセス851についてプロセス終了時刻算出部126が算出した時刻のなかから、最も遅い時刻を判定して、そのパイプライン処理850の終了時刻とする。パイプライン処理時間算出部132は、処理装置911を用いて、判定したパイプライン処理850の終了時刻から、判定したパイプライン処理850の開始時刻を差し引いた差を計算する。パイプライン処理時間算出部132は、記憶装置914を用いて、計算した差を、そのパイプライン処理850のパイプライン処理時間871として記憶する。
例えば、パイプライン処理時間予測部133は、処理装置911を用いて、パイプライン処理時間871の変化を直線で近似する。例えば、パイプライン処理時間予測部133は、処理装置911を用いて、重み付き最小二乗法により、パイプライン処理時間871の変化を近似する直線の傾きや切片を算出する。パイプライン処理時間予測部133は、処理装置911を用いて、パイプライン処理時間871の変化を近似する直線を外挿して、将来の周期におけるパイプライン処理時間871を予測する。
あるいは、パイプライン処理時間予測部133は、処理装置911を用いて、カルマンフィルタにより、将来の周期におけるパイプライン処理時間871を予測するための計算式の係数を推定する構成であってもよい。例えば、パイプライン処理時間871が等差級数的あるいは等比級数的に変化すると仮定して、時間推移モデルを作る。パイプライン処理時間871のバラツキは、観測誤差として捉える。
「プロセスを分割する」とは、プロセス851の処理852を複数の部分処理853に分割して、処理の負荷を分散させることである。また、プロセスが既に分割済である場合には、分割数を増やして、処理の負荷を更に分散させることである。
分割プロセス選択部142は、処理装置911を用いて、パイプライン処理時間871がm周期後に制限時間872を超過すると制限時間超過判定部141が判定したパイプライン処理850を構成するすべてのプロセス851のなかから、処理時間の増加傾向が最も強いプロセス851を、分割するプロセスとして選択する。
例えば、分割されていないプロセスを2つに分割すれば、各部分処理853の負荷は半分になる。したがって、プロセス851の処理時間は、最高で半分に縮まることが期待できる。これに対し、2つに分割されているプロセスの分割数を3つに増やすと、各部分処理853の負荷は3分の2になる。したがって、プロセス851の処理時間は、最高でも3分の1しか縮まらない。すなわち、プロセスの処理時間をt、現在の分割数をk、分割数の増加数をΔkとすると、プロセス851の処理時間は、最高で[t・Δk/(k+Δk)]縮まる可能性がある。
例えば、分割プロセス選択部142は、処理装置911を用いて、パイプライン処理時間871がm周期後に制限時間872を超過すると制限時間超過判定部141が判定したパイプライン処理850を構成するプロセス851のうち、処理時間が増加傾向にあるすべてのプロセスについて、プロセスを分割することにより処理時間がどれだけ縮まるかを算出する。分割プロセス選択部142は、処理装置911を用いて、算出した減少量が最も大きいプロセス851を、分割するプロセスとして選択する。
CPU時間とは、処理装置911が実際にそのスレッド854の処理を実行するのにかかった時間のことである。処理装置911が複数のスレッド854を実行している場合、実際に、処理装置911が一度に実行できるスレッド854は一つだけであり、時分割により、複数のスレッド854を並行して実行する。例えば、優先度の低いパイプライン処理850のスレッド854は、優先度の高いパイプライン処理850のスレッド854を処理装置911が実行している間、待たされることになる。したがって、プロセス851の処理時間には、処理装置911がそのプロセス851のスレッド854を実行していた時間と、処理装置911が他のプロセス851のスレッド854を実行していた時間とが含まれる。プロセス851の処理時間が増加傾向にある場合、そのプロセスの処理の負荷が増加することによりCPU時間が増加している場合と、他のプロセスの処理の負荷が増加したことの影響によるものでCPU時間はあまり増加していない場合とがある。
例えば、分割プロセス選択部142は、処理装置911は、パイプライン処理時間871がm周期後に制限時間872を超過すると制限時間超過判定部141が判定したパイプライン処理850を構成するプロセス851のうち、処理時間が増加傾向にあるプロセスのなかから、CPU時間の増加傾向が最も強いプロセス851を、分割するプロセスとして選択する。
このため、空き処理装置選択部143は、同じプロセス851のスレッド854を実行していない処理装置911であっても、同じパイプライン処理850の別のプロセス851のスレッド854を実行している場合には、選択しない構成であってもよい。
このため、空き処理装置選択部143は、処理装置911を用いて、選択した処理装置911のCPU時間を算出し、新たに起動するスレッド854を実行する余裕があるか否かを判定する。新たに起動するスレッド854を実行する余裕がないと判定した場合、空き処理装置選択部143は、処理装置911を用いて、その処理装置911の選択を撤回する。
例えば、スレッド起動部144は、処理装置911を用いて、新たに起動するスレッド854を実行する処理装置911や、新たに起動するスレッド854がどのパイプライン処理850のどのプロセス851のものであるかなどの情報を含む指示を、スレッド管理部112に通知する。スレッド管理部112は、処理装置911を用いて、スレッド実行部111に対して、新たなスレッド854の起動を指示する。
スレッド管理部112は、処理装置911を用いて、新たに起動したスレッド854を、そのプロセス851の処理にすぐに参入させる。スレッド管理部112は、処理装置911を用いて、すぐに、同じプロセス851の他のスレッド854の部分処理853を変更する。
また、上述したように、前段のプロセス851の主スレッドと、後段のプロセス851の主スレッドとは、同じ計算機810の処理装置911が実行するほうがよい。このため、他計算機処理装置選択部145は、可能であれば、そのプロセス851の前段または後段のプロセスの主スレッドを実行している処理装置911と同じ計算機810の処理装置911を選択する。
他計算機処理装置選択部145は、処理装置911を用いて、選択した計算機810の処理装置911を選択する。なお、同じパイプライン処理850の他のプロセス851のスレッド854を実行している処理装置911や、新たに起動するスレッドを実行する余裕がない処理装置911を除外する点は、空き処理装置選択部143と同様である。
増加した分割数以上の処理装置911が選択できた場合、他計算機処理装置選択部145は、処理装置911を用いて、増加した分割数の処理装置911を残し、それ以外の処理装置911の選択を撤回する。
増加した分割数の処理装置911を選択できない場合、他計算機処理装置選択部145は、処理装置911を用いて、処理装置911の選択をすべて撤回する。他計算機処理装置選択部145は、処理装置911を用いて、そのプロセス851の後段のプロセスの主スレッドを実行している処理装置911の計算機810を選択する。他計算機処理装置選択部145は、処理装置911を用いて、選択した計算機810で、増加した分割数の処理装置911を選択しようとする。
それもできない場合、他計算機処理装置選択部145は、処理装置911を用いて、それ以外の計算機810を順に1つずつ選択し、選択した計算機810で、増加した分割数の処理装置911を選択しようとする。
例えば、他計算機処理装置選択部145は、処理装置911を用いて、そのプロセス851の主スレッドを実行している処理装置911の計算機810と異なる計算機810のなかに、そのプロセス851の従スレッドを実行している処理装置911の計算機810があれば、その計算機810を選択する。他計算機処理装置選択部145は、処理装置911を用いて、選択した計算機810で、増加数の処理装置911を選択しようとする。
それができない場合や、そのプロセス851の主スレッドを実行している処理装置911の計算機810と異なる計算機810のなかに、そのプロセス851の従スレッドを実行している処理装置911の計算機810がない場合、他計算機処理装置選択部145は、処理装置911を用いて、それ以外の計算機810を順に1つずつ選択し、選択した計算機810で、増加数の処理装置911を選択しようとする。
例えば、他計算機スレッド起動部146は、処理装置911を用いて、新たに起動するスレッド854を実行する処理装置911や、新たに起動するスレッド854がどのパイプライン処理850のどのプロセス851のものであるかなどの情報を含む指示を、スレッド管理部112に通知する。スレッド管理部112は、処理装置911を用いて、スレッド実行部111に対して、新たなスレッド854の起動を指示する。
スレッド管理部112は、処理装置911を用いて、新たに起動したスレッド854を、そのプロセス851の処理にはすぐに参入させない。入力回数n以上の周期が経過して、記憶装置914に十分な対象データ863が蓄積されたのち、新たに起動したスレッド854を、そのプロセス851の処理に参入させる。
入力回数n以上の周期が経過したのち、スレッド管理部112は、処理装置911を用いて、スレッド実行部111に対して、そのプロセス851の既存のスレッドが処理する部分処理853の範囲の変更を指示する。そのプロセス851の主スレッドは、結果データ結合処理886で、そのプロセス851の既存の従スレッドが通知してきた結果データだけでなく、新たに起動した従スレッドが通知してきた結果データも使って結果データ862を生成する。
入力回数n以上の周期が経過したのち、スレッド管理部112は、処理装置911を用いて、スレッド実行部111に対して、そのプロセス851の後段のプロセスの主スレッドが、新たに起動した主スレッドが通知してきた結果データを、対象データ863として入力するよう、指示する。
例えば、移動プロセス終了部147は、処理装置911を用いて、終了させるスレッド854などの情報を含む指示を、スレッド管理部112に通知する。スレッド管理部112は、新たに起動したスレッドをそのプロセス851の処理に参入させたのち、処理装置911を用いて、スレッド実行部111に対して、指示された既存のスレッド854の終了を指示する。
例えば、制限時間872の80%を安全ラインとして、制限時間872を超過の危険が去ったか否かを判定する。処理時間短縮判定部151は、処理装置911を用いて、パイプライン処理時間予測部133がパイプライン処理時間871の変化を近似した直線の係数が正であるか負であるかを判定する。パイプライン処理時間871の変化を近似した直線の係数が負である場合、パイプライン処理時間871は、減少傾向にある。処理時間短縮判定部151は、処理装置911を用いて、パイプライン処理時間算出部132が算出した現在のパイプライン処理時間871と、制限時間872の80%とを比較する。現在のパイプライン処理時間871が制限時間872の80%以下であれば、処理時間短縮判定部151は、制限時間872を超過する危険が去ったと判定する。
例えば、分割済プロセス選択部152は、処理装置911を用いて、分割済のプロセス851のなかから、処理時間の減少傾向が最も強いプロセスを選択する。
あるいは、分割済プロセス選択部152は、処理装置911を用いて、分割済であって処理時間が減少傾向にあるプロセス851のなかから、分割数を減らすことによる処理時間の増加が最も少ないプロセスを選択する。
あるいは、分割済プロセス選択部152は、処理装置911を用いて、分割済であって処理時間が減少傾向にあるプロセス851のなかから、主スレッドを実行している処理装置911と異なる計算機810の処理装置911が従スレッドを実行していることにより効率が悪くなっているプロセスを選択する。
あるいは、分割済プロセス選択部152は、処理装置911を用いて、分割済であって処理時間が減少傾向にあるプロセス851のなかから、前段および後段のプロセスのスレッド854を実行している処理装置911と異なる計算機810の処理装置911がスレッド854を実行していることにより効率が悪くなっているプロセスを選択する。
例えば、分割済プロセス選択部152が選択したプロセス851の従スレッドのなかに、主スレッドを実行している処理装置911と異なる計算機810の処理装置911が実行している従スレッドがあれば、終了スレッド選択部153は、処理装置911を用いて、その従スレッドを選択する。
あるいは、終了スレッド選択部153は、処理装置911を用いて、分割済プロセス選択部152が選択したプロセス851の各スレッド854を実行している各処理装置911のCPU時間に基づいて、空き時間が最も少ない処理装置911を選択し、その処理装置911が実行しているスレッド854を選択する。
あるいは、終了スレッド選択部153は、処理装置911を用いて、分割済プロセス選択部152が選択したプロセス851のスレッド854のなかから、そのスレッド854を実行している処理装置911と同じ計算機810の処理装置911のなかに前段または後段のプロセスを実行している処理装置911がないスレッド854を選択する。
例えば、スレッド終了部154は、処理装置911を用いて、終了するスレッド854を実行する処理装置911や、新たに起動するスレッド854がどのパイプライン処理850のどのプロセス851のものであるかなどの情報を含む指示を、スレッド管理部112に通知する。スレッド管理部112は、処理装置911を用いて、スレッド実行部111に対して、指示されたスレッド854の終了を指示する。
パイプライン管理処理S400において、計算機システム800は、実行している各パイプライン処理850のパイプライン処理時間871を監視し、制限時間872を超過しないようにする。
パイプライン管理処理S400は、パイプライン選択工程S401と、パイプライン処理時間予測工程S402と、制限時間超過判定工程S403と、対策済判定工程S404と、プロセス分割工程S405と、参入時刻判定工程S406と、参入工程S407と、処理時間短縮判定工程S408と、プロセス併合工程S409とを有する。
予測の結果、パイプライン処理時間871が増加傾向にある場合、パイプライン処理時間予測部133は、処理装置911を用いて、制限時間超過判定工程S403へ処理を進める。
パイプライン処理時間871が減少傾向にある場合、パイプライン処理時間予測部133は、処理装置911を用いて、処理時間短縮判定工程S408へ処理を進める。
超過すると判定した場合、制限時間超過判定部141は、処理装置911を用いて、対策済判定工程S404へ処理を進める。
超過しないと判定した場合、制限時間超過判定部141は、処理装置911を用いて、参入時刻判定工程S406へ処理を進める。
対策済であると判定した場合、分割プロセス選択部142は、処理装置911を用いて、参入時刻判定工程S406へ処理を進める。
まだ対策していないと判定した場合、分割プロセス選択部142は、処理装置911を用いて、プロセス分割工程S405へ処理を進める。
新たに起動したスレッド854を実行する処理装置911が、それまでとは異なる計算機810の処理装置である場合、データが蓄積されていないので、すぐにプロセス851の処理に参入できない。移動プロセス終了部147は、処理装置911を用いて、分割プロセス選択部142が選択したプロセス851の入力回数nに基づいて、n周期以上経過したあとの時刻を、新たに起動したスレッド854を処理に参入させる時刻として算出する。移動プロセス終了部147は、記憶装置914を用いて、算出した時刻を記憶する。
プロセス分割工程S405で記憶した時刻を過ぎた場合、移動プロセス終了部147は、処理装置911を用いて、参入工程S407へ処理を進める。
プロセス分割工程S405で記憶した時刻をまだ過ぎていない場合、あるいは、プロセス分割工程S405で時刻を記憶していない場合、移動プロセス終了部147は、処理装置911を用いて、パイプライン選択工程S401に処理を戻す。パイプライン処理時間予測部133は、次のパイプライン処理850を選択する。
移動プロセス終了部147は、処理装置911を用いて、パイプライン選択工程S401に処理を戻す。パイプライン処理時間予測部133は、次のパイプライン処理850を選択する。
制限時間超過の危険が去ったと判定した場合、処理時間短縮判定部151は、処理装置911を用いて、プロセス併合工程S409へ処理を進める。
制限時間超過の危険がまだ去っていないと判定した場合、処理時間短縮判定部151は、処理装置911を用いて、参入時刻判定工程S406へ処理を進める。
プロセス分割工程S405は、プロセス選択工程S411と、処理装置選択工程S412と、スレッド起動工程S413と、他計算機選択工程S414と、処理装置選択工程S415と、他計算機選択工程S416と、処理装置選択工程S417と、スレッド起動工程S418と、参入工程S419と、参入予約工程S420とを有する。
空き処理装置選択部143は、処理装置911を用いて、判定した処理装置911を有する計算機810の処理装置911のなかから、新たに起動するスレッド854を実行させる処理装置911を選択する。
新たに起動するスレッド854を実行させることができる処理装置911がある場合、空き処理装置選択部143は、処理装置911を用いて、スレッド起動工程S413へ処理を進める。
新たに起動するスレッド854を実行させることができる処理装置911がない場合、空き処理装置選択部143は、処理装置911を用いて、他計算機選択工程S414へ処理を進める。
スレッド起動部144は、処理装置911を用いて、参入工程S419へ処理を進める。
(1)プロセス選択工程S411で分割プロセス選択部142が選択したプロセス851の前段または後段のプロセスの主スレッドを実行している処理装置911と、プロセス選択工程S411で分割プロセス選択部142が選択したプロセス851の従スレッドを実行している処理装置911とを有する計算機810。
(2)プロセス選択工程S411で分割プロセス選択部142が選択したプロセス851の前段または後段のプロセスの主スレッドを実行している処理装置911を有し、プロセス選択工程S411で分割プロセス選択部142が選択したプロセス851の従スレッドを実行している処理装置911を有さない計算機810。
(3)プロセス選択工程S411で分割プロセス選択部142が選択したプロセス851の前段または後段のプロセスの主スレッドを実行している処理装置911を有さず、プロセス選択工程S411で分割プロセス選択部142が選択したプロセス851の従スレッドを実行している処理装置911を有する計算機810。
(4)プロセス選択工程S411で分割プロセス選択部142が選択したプロセス851の前段または後段のプロセスの主スレッドを実行している処理装置911を有さず、プロセス選択工程S411で分割プロセス選択部142が選択したプロセス851の従スレッドを実行している処理装置911も有さない計算機810。
まだ選択していない計算機810がある場合、他計算機処理装置選択部145は、処理装置911を用いて、優先順位にしたがって、そのなかから、計算機810を1つ選択する。他計算機処理装置選択部145は、処理装置911を用いて、処理装置選択工程S415へ処理を進める。
選択した処理装置911の数が、現在のスレッド854の数kより大きい場合、他計算機処理装置選択部145は、処理装置911を用いて、スレッド起動工程S418へ処理を進める。
選択した処理装置911の数が、現在のスレッド854の数k以下である場合、他計算機処理装置選択部145は、処理装置911を用いて、処理装置911の選択を解除し、他計算機選択工程S414に処理を戻して、次の計算機810を選択する。
処理装置選択工程S415で選択した処理装置911が1つもなかった場合、他計算機処理装置選択部145は、処理装置911を用いて、他計算機選択工程S416に処理を戻し、次の計算機810を選択する。
処理装置選択工程S415で選択した処理装置911があった場合、他計算機処理装置選択部145は、処理装置911を用いて、スレッド起動工程S418へ処理を進める。
スレッド管理部112は、処理装置911を用いて、新たに起動したスレッドがプロセスの処理にすぐに参入できるか否かを判定する。新たに起動したスレッドがプロセスの処理にすぐに参入できる場合とは、新たに起動したスレッドを実行する処理装置911を有する計算機810の記憶装置914に、そのプロセス851の入力回数n以上の対象データ863が蓄積されている場合である。
新たに起動したスレッドがプロセスの処理にすぐに参入できる場合、スレッド管理部112は、処理装置911を用いて、参入工程S419へ処理を進める。
新たに起動したスレッドがプロセスの処理にすぐに参入できない場合、スレッド管理部112は、処理装置911を用いて、参入予約工程S420へ処理を進める。
また、新たに起動したスレッド854がプロセス851の処理に参入したことにより、不要になったスレッド854があれば、移動プロセス終了部147は、処理装置911を用いて、不要になったスレッド854を終了させる。
スレッド管理部112は、処理装置911を用いて、プロセス分割工程S405を終了する。
スレッド管理部112は、処理装置911を用いて、プロセス分割工程S405を終了する。
プロセス併合工程S409は、プロセス選択工程S421と、スレッド選択工程S422と、スレッド終了工程S423とを有する。
スレッド管理部112は、処理装置911を用いて、プロセス併合工程S409を終了する。
計算機システム(800;1)は、複数の計算機(810;3)と、スレッド開始時刻取得部(121;スレッド処理時間監視部9)と、スレッド終了時刻取得部(122;9)と、プロセス開始時刻算出部(125)と、プロセス終了時刻算出部(126)と、プロセス処理時間算出部(131;計算機負荷監視部10)と、パイプライン処理時間算出部(132;パイプライン処理時間監視部11)と、パイプライン処理時間予測部(133;11)と、制限時間超過判定部(141;11)と、分割プロセス選択部(142;システム負荷監視部13)と、空き処理装置選択部(143;13)と、スレッド起動部(144;13)と、他計算機処理装置選択部(145;13)と、他計算機スレッド起動部(146;13)とを有する。
各計算機(810;3)は、1以上の処理装置(911;CPUコア5)を有する。
複数の計算機(810;3)のうち少なくともいずれかの計算機の少なくともいずれかの処理装置(911;5)は、上記パイプライン処理(850)の複数のプロセス(851;7)のうちいずれかのプロセスの処理の少なくとも一部の処理をスレッド(854;8)として実行する。
スレッド開始時刻取得部(121;9)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、各周期の入力データ(861)について、いずれかの処理装置(911;5)が上記スレッド(854;8)の実行を開始した時刻を取得する。
スレッド終了時刻取得部(122;9)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、各周期の入力データ(861)について、いずれかの処理装置(911;5)が上記スレッド(854;8)の実行を終了した時刻を取得する。
プロセス開始時刻算出部(125)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、各周期の入力データ(861)について、上記スレッド開始時刻取得部(121;9)が取得した時刻に基づいて、上記パイプライン処理(850)の複数のプロセス(851;7)それぞれの処理が開始した時刻を算出する。
プロセス終了時刻算出部(126)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、各周期の入力データ(861)について、上記スレッド終了時刻取得部(122;9)が取得した時刻に基づいて、上記パイプライン処理(850)の複数のプロセス(851;7)それぞれの処理が終了した時刻を算出する。
プロセス処理時間算出部(131;10)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、各周期の入力データ(861)について、上記プロセス開始時刻算出部(125)が算出した時刻と、上記プロセス終了時刻算出部(126)が算出した時刻とに基づいて、上記パイプライン処理(850)の各プロセス(851;7)の処理にかかった時間を算出する。
パイプライン処理時間算出部(132;11)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、各周期の入力データ(861)について、上記プロセス開始時刻算出部(125)が上記パイプライン処理(850)の最前段のプロセス(851;7)について算出した時刻と、上記プロセス終了時刻算出部(851;7)が上記パイプライン処理(850)の最後段のプロセス(851;7)について算出した時刻とに基づいて、上記パイプライン処理(850)にかかった時間(パイプライン処理時間871)を算出する。
パイプライン処理時間予測部(133;11)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記パイプライン処理時間算出部(132;11)が算出した時間に基づいて、将来の周期において上記パイプライン処理(850)にかかる時間を予測する。
上記制限時間超過判定部(141;11)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記パイプライン処理時間予測部(133;11)が予測した時間に基づいて、将来の周期において上記制限時間(872)を超過するか否かを判定する。
上記分割プロセス選択部(142;13)は、将来の周期において上記制限時間(872)を超過すると上記制限時間超過判定部(141;11)が判定した場合に、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記プロセス処理時間算出部(131;10)が算出した時間に基づいて、上記複数のプロセス(851)のうちから、プロセスの処理にかかる時間が増加しているプロセスを選択する。
上記空き処理装置選択部(143;13)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記分割プロセス選択部(142;13)が選択したプロセス(851)について、上記プロセスの処理の一部であるスレッド(854;8)を実行している処理装置(911;5)と同じ計算機(810;3)の処理装置(911;5)のなかに、上記プロセス(851)のスレッド(854)を実行していない処理装置(911;5)があるか否かを判定し、上記プロセス(851)のスレッド(854)を実行していない処理装置(911;5)があると判定した場合に、上記プロセス(851)のスレッド(854)を実行していないと判定した処理装置(911;5)を選択する。
スレッド起動部(144;13)は、上記空き処理装置選択部(143;13)が処理装置(911;5)を選択した場合に、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記空き処理装置選択部(143;13)が選択した処理装置(911;5)に、上記分割プロセス選択部(142;13)が選択したプロセス(851)のスレッド(854)を新たに実行させる。
他計算機処理装置選択部(145;13)は、上記空き処理装置選択部(143;13)が処理装置(911;5)を選択しなかった場合に、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記分割プロセス選択部(142;13)が選択したプロセス(851)のスレッド(854)を実行している処理装置(911;5)と異なる計算機(810;3)の処理装置(911;5)のなかから、処理装置(911;5)を選択する。
他計算機スレッド起動部(146;13)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記他計算機処理装置選択部(145;13)が選択した処理装置(911;5)に、上記分割プロセス選択部(142;13)が選択したプロセス(851;7)のスレッド(854;8)を新たに実行させる。
各計算機(810;3)は、上記1以上の処理装置(911;5)が共有する記憶装置(914)を有する。
記憶装置(914)は、上記記憶装置(914)を共有する1以上の処理装置(911;5)のいずれかが実行しているスレッド(854;8)のプロセス(851;7)について、上記プロセス(851;7)が処理する入力データ(861)または前段のプロセス(851;7)が出力した処理結果(862)を記憶する。
制限時間超過判定部(141;11)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、現在の周期から所定の予測回数だけ先の周期において上記制限時間(872)を超過するか否かを判定する。予測回数は、上記パイプライン処理(850)の複数のプロセス(851;7)の入力回数のうち最も大きい入力回数よりも大きい。
他計算機処理装置選択部(145;13)が選択した処理装置(911;5)に上記他計算機スレッド起動部(146;13)が実行させたスレッド(854;8)のプロセス(851;7)について、上記プロセス(851;7)の後段のプロセス(851;7)のスレッド(854;8)を実行している処理装置(911;5)は、上記プロセス(851;7)の入力回数が経過するまで、上記他計算機処理装置選択部(145;13)が選択した処理装置(911;5)が実行したスレッド(854;8)の処理結果(862)を利用しない。
計算機システム(800;1)は、移動プロセス終了部(147;13)を有する。
上記移動プロセス終了部(147;13)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記分割プロセス選択部(142;13)が選択したプロセス(851;7)について、上記他計算機スレッド起動部(146;13)が上記プロセス(851;7)のスレッド(854;8)を実行させた場合に、上記他計算機スレッド起動部(146;13)が上記プロセス(851;7)のスレッド(854;8)を実行させてから上記プロセス(851;7)の入力回数の周期が経過したのちに、上記他計算機スレッド起動部(146;13)が上記プロセス(851;7)のスレッド(854;8)を実行させるよりも前から上記プロセス(851;7)のスレッド(854;8)を実行していた処理装置(911;5)に、上記プロセス(851;7)のスレッド(854;8)の実行を終了させる。
処理時間短縮判定部(151;11)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記パイプライン処理時間予測部(133;11)が予測した時間に基づいて、上記パイプライン処理(850)にかかる時間が短縮しつつあるか否かを判定する。
分割済プロセス選択部(152;13)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記パイプライン処理(850)にかかる時間が短縮しつつあると上記処理時間短縮判定部(151;11)が判定した場合に、上記パイプライン処理(850)の複数のプロセス(851;7)のなかから、複数のスレッド(854;8)が実行されているプロセスを選択する。
終了スレッド選択部(153;13)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記分割済プロセス選択部(152;13)が選択したプロセス(851;7)の複数のスレッド(854;8)のなかから、終了するスレッド(854;8)を選択する。
スレッド終了部(154;13)は、上記複数の計算機(810;3)のうちいずれかの計算機のいずれかの処理装置(911;5)を用いて、上記終了スレッド選択部(153;13)が選択したスレッド(854;8)について、上記スレッド(854;8)を実行している処理装置(911;5)に、上記スレッド(854;8)の実行を終了させる。
Claims (11)
- 所定の周期で繰り返し入力データを入力し、直列関係にある複数のプロセスからなるパイプライン処理により上記入力データを処理し、最前段のプロセスは上記入力データを処理して処理結果を出力し、後段のプロセスは前段のプロセスが出力した処理結果を処理して処理結果を出力し、上記入力データを入力した時刻から所定の制限時間が経過するまでの間に最後段のプロセスが処理結果を出力することを要求される計算機システムにおいて、
上記計算機システムは、複数の計算機と、プロセス処理時間算出部と、パイプライン処理時間算出部と、パイプライン処理時間予測部と、制限時間超過判定部と、分割プロセス選択部と、空き処理装置選択部と、スレッド起動部と、他計算機処理装置選択部と、他計算機スレッド起動部とを有し、
上記複数の計算機の各計算機は、1以上の処理装置を有し、
上記複数の計算機のうち少なくともいずれかの計算機の少なくともいずれかの処理装置は、上記パイプライン処理の複数のプロセスのうちいずれかのプロセスの処理の少なくとも一部の処理をスレッドとして実行し、
上記プロセス処理時間算出部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、各周期の入力データについて、上記パイプライン処理の各プロセスの処理にかかった時間を算出し、
上記パイプライン処理時間算出部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、各周期の入力データについて、上記パイプライン処理にかかった時間を算出し、
上記パイプライン処理時間予測部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記パイプライン処理時間算出部が算出した時間に基づいて、将来の周期において上記パイプライン処理にかかる時間を予測し、
上記制限時間超過判定部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記パイプライン処理時間予測部が予測した時間に基づいて、将来の周期において上記制限時間を超過するか否かを判定し、
上記分割プロセス選択部は、将来の周期において上記制限時間を超過すると上記制限時間超過判定部が判定した場合に、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記プロセス処理時間算出部が算出した時間に基づいて、上記複数のプロセスのうちから、プロセスの処理にかかる時間が増加しているプロセスを選択し、
上記空き処理装置選択部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割プロセス選択部が選択したプロセスについて、上記プロセスの処理の一部であるスレッドを実行している処理装置と同じ計算機の処理装置のなかに、上記プロセスのスレッドを実行していない処理装置があるか否かを判定し、上記プロセスのスレッドを実行していない処理装置があると判定した場合に、上記プロセスのスレッドを実行していないと判定した処理装置を選択し、
上記スレッド起動部は、上記空き処理装置選択部が処理装置を選択した場合に、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記空き処理装置選択部が選択した処理装置に、上記分割プロセス選択部が選択したプロセスのスレッドを新たに実行させ、
上記他計算機処理装置選択部は、上記空き処理装置選択部が処理装置を選択しなかった場合に、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割プロセス選択部が選択したプロセスのスレッドを実行している処理装置と異なる計算機の処理装置のなかから、処理装置を選択し、
上記他計算機スレッド起動部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記他計算機処理装置選択部が選択した処理装置に、上記分割プロセス選択部が選択したプロセスのスレッドを新たに実行させ、
上記パイプライン処理の複数のプロセスのうち少なくともいずれかのプロセスは、直前の所定の入力回数の周期で入力した入力データまたは前段のプロセスが直前の所定の入力回数の周期で出力した処理結果を処理して処理結果を出力し、
上記複数の計算機の各計算機は、上記1以上の処理装置が共有する記憶装置を有し、
上記記憶装置は、上記記憶装置を共有する1以上の処理装置のいずれかが実行しているスレッドのプロセスについて、上記プロセスが処理する入力データまたは前段のプロセスが出力した処理結果を記憶し、
上記制限時間超過判定部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、現在の周期から所定の予測回数だけ先の周期において上記制限時間を超過するか否かを判定し、上記予測回数は、上記パイプライン処理の複数のプロセスの入力回数のうち最も大きい入力回数よりも大きく、
上記他計算機処理装置選択部が選択した処理装置に上記他計算機スレッド起動部が実行させたスレッドのプロセスについて、上記プロセスの後段のプロセスのスレッドを実行している処理装置は、上記プロセスの入力回数が経過するまで、上記他計算機処理装置選択部が選択した処理装置が実行したスレッドの処理結果を利用しないことを特徴とする計算機システム。 - 上記他計算機処理装置選択部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割プロセス選択部が選択したプロセスについて実行されているスレッドの数よりも多い数の処理装置を選択し、
上記計算機システムは、移動プロセス終了部を有し、
上記移動プロセス終了部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割プロセス選択部が選択したプロセスについて、上記他計算機スレッド起動部が上記プロセスのスレッドを実行させた場合に、上記他計算機スレッド起動部が上記プロセスのスレッドを実行させてから上記プロセスの入力回数の周期が経過したのちに、上記他計算機スレッド起動部が上記プロセスのスレッドを実行させるよりも前から上記プロセスのスレッドを実行していた処理装置に、上記プロセスのスレッドの実行を終了させることを特徴とする請求項1に記載の計算機システム。 - 上記空き処理装置選択部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割プロセス選択部が選択したプロセスについて、上記プロセスの処理の一部であるスレッドを実行している処理装置と同じ計算機の処理装置のなかに、上記パイプライン処理の複数のプロセスのいずれのプロセスのスレッドも実行していない処理装置があるか否かを判定し、上記パイプライン処理の複数のプロセスのいずれのプロセスのスレッドも実行していない処理装置があると判定した場合に、上記パイプライン処理の複数のプロセスのいずれのプロセスのスレッドも実行していないと判定した処理装置を選択することを特徴とする請求項1または請求項2に記載の計算機システム。
- 上記他計算機処理装置選択部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割プロセス選択部が選択したプロセスのスレッドを実行している処理装置と異なる計算機の処理装置のなかから、上記パイプライン処理の複数のプロセスのいずれのプロセスのスレッドも実行していない処理装置を選択することを特徴とする請求項1乃至請求項3のいずれかに記載の計算機システム。
- 上記他計算機処理装置選択部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割プロセス選択部が選択したプロセスのスレッドを実行している処理装置と異なる計算機のなかから、上記分割プロセス選択部が選択したプロセスの前段のプロセスまたは後段のプロセスのスレッドを実行している処理装置を有する計算機を選択し、選択した計算機の処理装置のなかから処理装置を選択することを特徴とする請求項1乃至請求項4のいずれかに記載の計算機システム。
- 上記計算機システムは、処理時間短縮判定部と、分割済プロセス選択部と、終了スレッド選択部と、スレッド終了部とを有し、
上記処理時間短縮判定部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記パイプライン処理時間予測部が予測した時間に基づいて、上記パイプライン処理にかかる時間が短縮しつつあるか否かを判定し、
上記分割済プロセス選択部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記パイプライン処理にかかる時間が短縮しつつあると上記処理時間短縮判定部が判定した場合に、上記パイプライン処理の複数のプロセスのなかから、複数のスレッドが実行されているプロセスを選択し、
上記終了スレッド選択部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割済プロセス選択部が選択したプロセスの複数のスレッドのなかから、終了するスレッドを選択し、
上記スレッド終了部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記終了スレッド選択部が選択したスレッドについて、上記スレッドを実行している処理装置に、上記スレッドの実行を終了させることを特徴とする請求項1乃至請求項5のいずれかに記載の計算機システム。 - 上記分割済プロセス選択部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記プロセス処理時間算出部が算出した時間に基づいて、上記パイプライン処理の複数のプロセスのなかから、プロセスの処理にかかる時間が減少しているプロセスを選択することを特徴とする請求項6に記載の計算機システム。
- 上記終了スレッド選択部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割済プロセス選択部が選択したプロセスの複数のスレッドのなかから、他のスレッドと異なる計算機の処理装置が実行しているスレッドを選択することを特徴とする請求項6または請求項7に記載の計算機システム。
- 上記終了スレッド選択部は、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置を用いて、上記分割済プロセス選択部が選択したプロセスについて、上記プロセスの複数のスレッドのなかから、同一の計算機の他の処理装置のなかに、上記プロセスの前段のプロセスまたは後段のプロセスのスレッドを実行している処理装置がない処理装置が実行しているスレッドを選択することを特徴とする請求項6乃至請求項8のいずれかに記載の計算機システム。
- 1以上の処理装置を有する複数の計算機からなる計算機システムの少なくともいずれかの計算機のいずれかの処理装置が実行することにより、上記計算機システムが請求項1乃至請求項9のいずれかに記載の計算機システムとして機能することを特徴とするコンピュータプログラム。
- 1以上の処理装置を有する複数の計算機からなる計算機システムが、所定の周期で繰り返し入力データを入力し、直列関係にある複数のプロセスからなるパイプライン処理により上記入力データを処理し、最前段のプロセスは上記入力データを処理して処理結果を出力し、後段のプロセスは前段のプロセスが出力した処理結果を処理して処理結果を出力し、上記入力データを入力した時刻から所定の制限時間が経過するまでの間に最後段のプロセスが処理結果を出力することを要求される処理を実行するパイプライン処理方法において、
上記複数の計算機の各計算機は、1以上の処理装置を有し、
上記複数の計算機のうち少なくともいずれかの計算機の少なくともいずれかの処理装置は、上記パイプライン処理の複数のプロセスのうちいずれかのプロセスの処理の少なくとも一部の処理をスレッドとして実行し、
プロセス処理時間算出部として、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置は、各周期の入力データについて、上記パイプライン処理の各プロセスの処理にかかった時間を算出し、
パイプライン処理時間算出部として、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置は、各周期の入力データについて、上記パイプライン処理にかかった時間を算出し、
パイプライン処理時間予測部として、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置は、上記パイプライン処理時間算出部が算出した時間に基づいて、将来の周期において上記パイプライン処理にかかる時間を予測し、
制限時間超過判定部として、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置は、上記パイプライン処理時間予測部が予測した時間に基づいて、将来の周期において上記制限時間を超過するか否かを判定し、
将来の周期において上記制限時間を超過すると上記制限時間超過判定部が判定した場合に、分割プロセス選択部として、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置は、上記プロセス処理時間算出部が算出した時間に基づいて、上記複数のプロセスのうちから、プロセスの処理にかかる時間が増加しているプロセスを選択し、
空き処理装置選択部として、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置は、上記分割プロセス選択部が選択したプロセスについて、上記プロセスの処理の一部であるスレッドを実行している処理装置と同じ計算機の処理装置のなかに、上記プロセスのスレッドを実行していない処理装置があるか否かを判定し、上記プロセスのスレッドを実行していない処理装置があると判定した場合に、上記プロセスのスレッドを実行していないと判定した処理装置を選択し、
スレッド起動部として、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置は、上記空き処理装置選択部が処理装置を選択した場合に、上記空き処理装置選択部が選択した処理装置に、上記分割プロセス選択部が選択したプロセスのスレッドを新たに実行させ、
他計算機処理装置選択部として、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置は、上記空き処理装置選択部が処理装置を選択しなかった場合に、上記分割プロセス選択部が選択したプロセスのスレッドを実行している処理装置と異なる計算機の複数の処理装置のなかから、処理装置を選択し、
他計算機スレッド起動部として、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置は、上記他計算機処理装置選択部が選択した処理装置に、上記分割プロセス選択部が選択したプロセスのスレッドを新たに実行させ、
上記パイプライン処理の複数のプロセスのうち少なくともいずれかのプロセスは、直前の所定の入力回数の周期で入力した入力データまたは前段のプロセスが直前の所定の入力回数の周期で出力した処理結果を処理して処理結果を出力し、
上記複数の計算機の各計算機は、上記1以上の処理装置が共有する記憶装置を有し、
上記記憶装置は、上記記憶装置を共有する1以上の処理装置のいずれかが実行しているスレッドのプロセスについて、上記プロセスが処理する入力データまたは前段のプロセスが出力した処理結果を記憶し、
上記制限時間超過判定部として、上記複数の計算機のうちいずれかの計算機のいずれかの処理装置は、現在の周期から所定の予測回数だけ先の周期において上記制限時間を超過するか否かを判定し、上記予測回数は、上記パイプライン処理の複数のプロセスの入力回数のうち最も大きい入力回数よりも大きく、
上記他計算機処理装置選択部が選択した処理装置に上記他計算機スレッド起動部が実行させたスレッドのプロセスについて、上記プロセスの後段のプロセスのスレッドを実行している処理装置は、上記プロセスの入力回数が経過するまで、上記他計算機処理装置選択部が選択した処理装置が実行したスレッドの処理結果を利用しないことを特徴とするパイプライン処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010140181A JP5465105B2 (ja) | 2010-06-21 | 2010-06-21 | 計算機システム及びコンピュータプログラム及びパイプライン処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010140181A JP5465105B2 (ja) | 2010-06-21 | 2010-06-21 | 計算機システム及びコンピュータプログラム及びパイプライン処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012003653A JP2012003653A (ja) | 2012-01-05 |
JP5465105B2 true JP5465105B2 (ja) | 2014-04-09 |
Family
ID=45535525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010140181A Active JP5465105B2 (ja) | 2010-06-21 | 2010-06-21 | 計算機システム及びコンピュータプログラム及びパイプライン処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5465105B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2499105B (en) | 2012-01-12 | 2014-09-17 | Seiko Epson Corp | Cartridge and printing material supply system |
KR102247888B1 (ko) * | 2015-01-05 | 2021-05-04 | 에스케이플래닛 주식회사 | 클라우드 스트리밍 서비스 시스템, 선택적 스트리밍 파이프라인 방식에 기반한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치 |
CN105988872B (zh) * | 2015-02-03 | 2020-02-18 | 阿里巴巴集团控股有限公司 | 一种cpu资源分配的方法、装置及电子设备 |
JP2018129011A (ja) * | 2017-02-10 | 2018-08-16 | 日本電信電話株式会社 | データ処理装置、基盤及びデータ出力方法 |
CN112204484B (zh) * | 2018-10-31 | 2024-03-22 | 东芝三菱电机产业系统株式会社 | 生产流水线hmi系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007219577A (ja) * | 2006-02-14 | 2007-08-30 | Sony Corp | データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体 |
JP4523921B2 (ja) * | 2006-02-24 | 2010-08-11 | 三菱電機株式会社 | 計算機リソース動的制御装置 |
JP4370313B2 (ja) * | 2006-07-10 | 2009-11-25 | 三菱電機株式会社 | 制御装置、制御装置のプロセス制御方法およびプロセス制御プログラム |
JP4308241B2 (ja) * | 2006-11-10 | 2009-08-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム |
-
2010
- 2010-06-21 JP JP2010140181A patent/JP5465105B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2012003653A (ja) | 2012-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5465105B2 (ja) | 計算機システム及びコンピュータプログラム及びパイプライン処理方法 | |
CN108345501B (zh) | 一种分布式资源调度方法和系统 | |
US11150948B1 (en) | Managing programmable logic-based processing unit allocation on a parallel data processing platform | |
US10599484B2 (en) | Weighted stealing of resources | |
WO2017131187A1 (ja) | アクセラレータ制御装置、アクセラレータ制御方法およびプログラム | |
JP3658420B2 (ja) | 分散処理システム | |
JP4387174B2 (ja) | 複数の優先順位グループに関連付けられたプロセスを複数のリソース間に分散する方法 | |
WO2015106533A1 (zh) | 基于协处理器的作业调度处理方法及装置 | |
CN107193655B (zh) | 一种基于效用函数的面向大数据处理的公平资源调度方法 | |
CN110187970A (zh) | 一种基于Hadoop MapReduce的分布式大数据并行计算方法 | |
Wang | Emergency department staffing: A separated continuous linear programming approach | |
US9442772B2 (en) | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines | |
CN111522637A (zh) | 一种基于成本效益的storm任务调度方法 | |
Pati et al. | Comprehensive Study on Task Scheduling Strategies in Multicloud Environment. | |
López‐Albelda et al. | Heuristics for concurrent task scheduling on GPUs | |
US20230010895A1 (en) | Information processing apparatus, information processing method, and computer-readable recording medium storing information processing program | |
Gouasmi et al. | Geo-distributed bigdata processing for maximizing profit in federated clouds environment | |
CN103294535A (zh) | 最大化磁盘缓存效果的工作流作业调度装置及方法 | |
CN113806044B (zh) | 一种用于计算机视觉应用的异构平台任务瓶颈消除方法 | |
US9778958B2 (en) | Management method, management apparatus, and information processing system for coordinating parallel processing in a distributed computing environment | |
Smanchat et al. | Toward grid workflow scheduling based on resource competition | |
Peyravi et al. | On the optimization of Hadoop MapReduce default job scheduling through dynamic job prioritization | |
Li et al. | Analysis and Improvement of Makespan and Utilization for MapReduce | |
Ramaparvathy | A New-Threshold Based Job Scheduling for Grid System | |
Feng et al. | EPYFQ: a novel scheduling algorithm for performance virtualization in shared storage environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20121119 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20121207 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20131024 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131105 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131204 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20131224 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140121 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5465105 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |