(57)【特許請求の範囲】
【請求項１】
並列処理により複数のタスクを同時に実行する場合に、同時に実行することが可能なタスク数を制御するタスク数制御装置において、
同時に実行するタスクを所定数ずつ追加するタスク追加手段と、
該タスク追加手段でタスクを追加する都度、タスクごとに一作業単位でのスループットを計測するスループット計測手段と、
該スループット計測手段で計測されたスループットの総和を算出する総和算出手段と、
該総和算出手段で算出されたスループットの総和が、タスクが所定数追加される直前のスループットの総和より大きいか否かを判断する第１の判断手段と
を備え、
前記タスク追加手段は、
前記第１の判断手段が、タスクが所定数追加される直前のスループットの総和より大きいと判断した場合、タスクの追加を継続し、タスクが所定数追加される直前のスループットの総和以下であると判断した場合、タスクの追加を停止するようにしてあることを特徴とするタスク数制御装置。
【請求項２】
前記第１の判断手段が、タスクが所定数追加される直前のスループットの総和以下であると判断した場合、算出されたスループットの総和が、タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和より大きいか否かを判断する第２の判断手段と、
該第２の判断手段が、タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和より大きいと判断した場合、最後に追加した所定数のタスクを識別する情報を記憶し、最後に追加した所定数のタスクの実行を休止させる休止手段と
をさらに備えることを特徴とする請求項１記載のタスク数制御装置。
【請求項３】
前記第２の判断手段が、タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和以下であると判断した場合、最後に追加した所定数のタスクを識別する情報及び再実行するために必要な情報を記憶し、最後に追加した所定数のタスクの実行を終了させる終了手段
をさらに備えることを特徴とする請求項２記載のタスク数制御装置。
【請求項４】
前記所定数は１であることを特徴とする請求項１乃至３のいずれか一項に記載のタスク数制御装置。
【請求項５】
並列処理により複数のタスクを同時に実行する場合に、同時に実行することが可能なタスク数を制御するタスク数制御装置で実行することが可能なコンピュータプログラムにおいて、
前記タスク数制御装置を、
同時に実行するタスクを所定数ずつ追加するタスク追加手段、
該タスク追加手段でタスクを追加する都度、タスクごとに一作業単位でのスループットを計測するスループット計測手段、
該スループット計測手段で計測されたスループットの総和を算出する総和算出手段、及び
該総和算出手段で算出されたスループットの総和が、タスクが所定数追加される直前のスループットの総和より大きいか否かを判断する第１の判断手段
として機能させ、
前記タスク追加手段を、前記第１の判断手段が、タスクが所定数追加される直前のスループットの総和より大きいと判断した場合、タスクの追加を継続し、タスクが所定数追加される直前のスループットの総和以下であると判断した場合、タスクの追加を停止する手段
として機能させることを特徴とするコンピュータプログラム。
【請求項６】
並列処理により複数のタスクを同時に実行する場合に、同時に実行することが可能なタスク数を制御するコンピュータで実行することが可能なタスク数制御方法において、
同時に実行するタスクを所定数ずつ追加し、
所定数タスクを追加する都度、タスクごとに一作業単位でのスループットを計測し、
計測されたスループットの総和を算出し、
算出されたスループットの総和が、タスクが所定数追加される直前のスループットの総和より大きいか否かを判断し、
タスクが所定数追加される直前のスループットの総和より大きいと判断した場合、タスクの追加を継続し、タスクが所定数追加される直前のスループットの総和以下であると判断した場合、タスクの追加を停止することを特徴とするタスク数制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同時並列処理することが可能なタスク数を動的に制御することができるタスク数制御装置、タスク数制御方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近年のコンピュータ技術の急速な進展に伴い、プロセッサ単位で処理可能なデータ量は急速に増大している。しかし、あらゆる産業において情報処理技術が適用される昨今では、プロセッサの能力向上速度よりもデータ処理能力に対する需要の方が大きく上回る結果となっており、パイプライン処理等の並列処理により処理のスループットを改善する必要性が高い。
【０００３】
例えば、あらゆるデータ処理で用いられる機会が多いデータベースに対するレコードの挿入・削除の繰り返しにより生じるフラグメンテーションを解消するための再編成処理は、レコードの挿入・削除を繰り返す限り回避することはできない。そして、再編成処理には相当の時間を要することから、複数の再編成処理用のタスクを同時に並列処理する必要性は特に高い。
【０００４】
しかし、一般にデータベースが構築されているコンピュータ上では、様々なタスクが並列して処理されており、演算処理負荷はタスクの軽重、タスクの起動・終了タイミング等によって時々刻々変化している。したがって、再編成処理を同時に並列処理するタスク数が最適になるよう制御する必要がある。
【０００５】
例えば特許文献１では、一定時間間隔にてタスクの稼働状況をスループット、資源の使用量、及びＣＰＵの使用率として取得し、これらを事前に設定した基準値と比較することにより最適なタスク数を算出するタスク数自動制御方法が開示されている。特許文献１では、基準値を超えないようにタスク数を自動制御するようになっている。
【特許文献１】特開２００２−２５９１４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、一般にデータベースが構築されているコンピュータ上では、様々なタスクが並列処理されており、演算処理負荷は時々刻々変化している。したがって、再編成処理を同時並列処理するタスク数を定めるための基準値を、特許文献１のように事前に定めておくことは現実には不可能であり、せいぜいタスク起動時のスループット、資源の使用量、及びＣＰＵの使用率に基づいて静的に定めた基準値に基づいてタスク数を制御するに留まる。これでは、タスク数を制御するための基準値そのものの信頼度が低く、実際に最適なタスク数となっているか否かは基準値を定める使用者の経験に頼らざるを得ないという問題点があった。
【０００７】
一方、スループット、資源の使用量、及びＣＰＵの使用率を動的に取得するためには、オペレーティングシステムに対して一定時間間隔で問い合わせをする必要があり、却って演算処理負荷を増大させ、本来の目的である再編成処理を同時並列処理するためのタスク数を減少させてしまうおそれがあるという問題点もあった。
【０００８】
本発明は斯かる事情に鑑みてなされたものであり、演算処理負荷を増大させることなく、同時並列処理することが可能なタスク数を動的に制御することができるタスク数制御装置、タスク数制御方法、及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために第１発明に係るタスク数制御装置は、並列処理により複数のタスクを同時に実行する場合に、同時に実行することが可能なタスク数を制御するタスク数制御装置において、同時に実行するタスクを所定数ずつ追加するタスク追加手段と、該タスク追加手段でタスクを追加する都度、タスクごとに一作業単位でのスループットを計測するスループット計測手段と、該スループット計測手段で計測されたスループットの総和を算出する総和算出手段と、該総和算出手段で算出されたスループットの総和が、タスクが所定数追加される直前のスループットの総和より大きいか否かを判断する第１の判断手段とを備え、前記タスク追加手段は、前記第１の判断手段が、タスクが所定数追加される直前のスループットの総和より大きいと判断した場合、タスクの追加を継続し、タスクが所定数追加される直前のスループットの総和以下であると判断した場合、タスクの追加を停止するようにしてあることを特徴とする。
【００１０】
また、第２発明に係るタスク数制御装置は、第１発明において、前記第１の判断手段が、タスクが所定数追加される直前のスループットの総和以下であると判断した場合、算出されたスループットの総和が、タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和より大きいか否かを判断する第２の判断手段と、該第２の判断手段が、タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和より大きいと判断した場合、最後に追加した所定数のタスクを識別する情報を記憶し、最後に追加した所定数のタスクの実行を休止させる休止手段とをさらに備えることを特徴とする。
【００１１】
また、第３発明に係るタスク数制御装置は、第２発明において、前記第２の判断手段が、タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和以下であると判断した場合、最後に追加した所定数のタスクを識別する情報及び再実行するために必要な情報を記憶し、最後に追加した所定数のタスクの実行を終了させる終了手段をさらに備えることを特徴とする。
【００１２】
また、第４発明に係るタスク数制御装置は、第１乃至第３発明のいずれか１つにおいて、前記所定数は１であることを特徴とする。
【００１３】
次に、上記目的を達成するために第５発明に係るコンピュータプログラムは、並列処理により複数のタスクを同時に実行する場合に、同時に実行することが可能なタスク数を制御するタスク数制御装置で実行することが可能なコンピュータプログラムにおいて、前記タスク数制御装置を、同時に実行するタスクを所定数ずつ追加するタスク追加手段、該タスク追加手段でタスクを追加する都度、タスクごとに一作業単位でのスループットを計測するスループット計測手段、該スループット計測手段で計測されたスループットの総和を算出する総和算出手段、及び該総和算出手段で算出されたスループットの総和が、タスクが所定数追加される直前のスループットの総和より大きいか否かを判断する第１の判断手段として機能させ、前記タスク追加手段を、前記第１の判断手段が、タスクが所定数追加される直前のスループットの総和より大きいと判断した場合、タスクの追加を継続し、タスクが所定数追加される直前のスループットの総和以下であると判断した場合、タスクの追加を停止する手段として機能させることを特徴とする。
【００１４】
次に、上記目的を達成するために第６発明に係るタスク数制御方法は、並列処理により複数のタスクを同時に実行する場合に、同時に実行することが可能なタスク数を制御するコンピュータで実行することが可能なタスク数制御方法において、同時に実行するタスクを所定数ずつ追加し、所定数タスクを追加する都度、タスクごとに一作業単位でのスループットを計測し、計測されたスループットの総和を算出し、算出されたスループットの総和が、タスクが所定数追加される直前のスループットの総和より大きいか否かを判断し、タスクが所定数追加される直前のスループットの総和より大きいと判断した場合、タスクの追加を継続し、タスクが所定数追加される直前のスループットの総和以下であると判断した場合、タスクの追加を停止することを特徴とする。
【００１５】
第１発明、第５発明、及び第６発明では、同時に実行するタスクを所定数ずつ追加し、所定数タスクを追加する都度、タスクごとに一作業単位でのスループットを計測する。計測されたスループットの総和を算出し、算出されたスループットの総和が、タスクが所定数追加される直前のスループットの総和より大きいか否かを判断する。タスクが所定数追加される直前のスループットの総和より大きいと判断した場合、タスクの追加を継続し、タスクが所定数追加される直前のスループットの総和以下であると判断した場合、タスクの追加を停止する。演算処理能力に余裕がある場合、一般にタスク数の増加に伴ってスループットは向上する。しかし、演算処理能力に余裕がなくなるにつれてスループットの向上率は低下し、余裕がほとんどなくなった時点でスループットは急激に低下する。斯かるスループットの特性を利用し、タスクを所定数追加する前と後とでスループットの計測値の総和を比較して、タスクを所定数追加した後の方がスループットが低下しているか否かを判断することにより、演算処理能力に余裕があるか否かを判断することができ、同時に並列処理することができるタスク数の上限を定めることが可能となる。
【００１６】
ここで、「一作業単位」とは、タスクに含まれる複数の作業単位のうちの一つを意味しており、タスク全体の処理が完了した時点でのスループットではなく、作業単位の一つの処理のスループットを計測する趣旨である。また、「スループット」とは、単位時間当たりのデータ処理数により処理効率を示す指標である。「タスクが所定数追加される直前のスループットの総和」とは、例えば直近に計測されたスループットの総和がタスクｎ個に対するスループットである場合、タスク（ｎ−ｍ）個（ただし、ｍは所定数）に対するスループットの総和を意味する。すなわち、所定数ずつタスクを追加し、その都度計測されたスループットの総和のうち、１回前に算出されたスループットの総和を示す。
【００１７】
第２発明では、タスクが所定数追加される直前のスループットの総和以下であると判断した場合、算出されたスループットの総和が、タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和より大きいか否かを判断する。タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和より大きいと判断した場合、最後に追加した所定数のタスクを識別する情報を記憶し、最後に追加した所定数のタスクの実行を休止させる。タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和まではスループットの総和が低下していない場合には、新たなタスクを追加することはできない程度にまで演算処理能力の限界に近づいている途上であると判断することができる。したがって、直近に追加したタスクを、他のタスクが終了した時点で即座に再実行することができるよう休止させることにより、全体のスループットをこれ以上低下させることなく、再実行するまでの時間も短縮することが可能となる。
【００１８】
ここで、「タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループット」とは、例えば計測されたスループットがタスクｎ個に対するスループットである場合、タスク（ｎ−ｍ×２）個（ただし、ｍは所定数）に対するスループットを意味する。すなわち、所定数ずつタスクを追加し、その都度計測されたスループットの総和について、２回前に算出されたスループットの総和を示す。また、「タスクの実行を休止」とは、実行中のタスクを停止させるが、メモリ等の計算機資源を解放しない状態を意味する。
【００１９】
第３発明では、タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和以下であると判断した場合、最後に追加した所定数のタスクを識別する情報及び再実行するために必要な情報を記憶し、最後に追加した所定数のタスクの実行を終了させる。タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和よりもスループットの総和が低下している場合には、演算処理能力の限界を超えているものと判断することができる。したがって、直近に追加したタスクを早急に終了させるとともに、該タスクにより拘束されている計算機資源を解放させることにより、全体のスループットをこれ以上低下させることを防止することが可能となる。なお、「タスクの実行を終了」とは、実行中のタスクを強制終了させ、メモリ等の計算機資源をすべて解放する状態を意味する。
【００２０】
第４発明では、所定数が１であることにより、タスクを１ずつ追加していくので、スループットの向上の限界タスク数を正確に特定することが可能となる。
【００２１】
なお、後述する実施の形態では、タスク追加手段１０１は、ＣＰＵ１１のステップＳ７０７の処理が、スループット計測手段１０２は、ＣＰＵ１１のステップＳ５０２の処理が、総和算出手段１０３は、ＣＰＵ１１のステップＳ７０３の処理が、第１の判断手段１０４は、ＣＰＵ１１のステップＳ７０５の処理が、それぞれ該当する。また、第２の判断手段１０５は、ＣＰＵ１１のステップＳ７０９の処理が、休止手段１０６は、ＣＰＵ１１のステップＳ７１１の処理が、終了手段１０７は、ＣＰＵ１１のステップＳ７１３の処理が、それぞれ該当する。
【発明の効果】
【００２２】
本発明によれば、演算処理能力に余裕がなくなるにつれてスループットの向上率は低下し、余裕がほとんどなくなった時点でスループットは急激に低下するという特性を利用し、タスクを所定数追加する前と後とでスループットの計測値の総和を比較して、タスクを所定数追加した後の方がスループットが低下しているか否かを判断することにより、演算処理能力に余裕があるか否かを判断することができ、同時に並列処理することができるタスク数の上限を定めることが可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態に係るタスク数制御装置について図面に基づいて具体的に説明する。図１は、本発明の実施の形態に係るタスク数制御装置１０の機能を模式的に示す機能ブロック図である。図１において、タスク追加手段１０１は、同時に並列処理させるタスク数を所定数ずつ追加する。そして、スループット計測手段１０２は、タスク追加手段１０１がタスクを追加する都度、タスクごとに一作業単位でのスループットを計測する。
【００２４】
総和算出手段１０３は、スループット計測手段１０２で計測された各スループット、すなわち所定数ずつ追加された場合の各タスクのスループットの総和を算出する。第１の判断手段１０４は、総和算出手段１０３で算出されたスループットの総和が、タスクが所定数追加される直前のスループットの総和以下であるか否かを判断する。ここで、「タスクが所定数追加される直前のスループットの総和」とは、例えば直近に計測されたスループットの総和がタスクｎ個に対するスループットである場合、タスク（ｎ−ｍ）個（ただし、ｍは所定数）に対するスループットの総和を意味する。すなわち、所定数ずつタスクを追加し、その都度計測されたスループットの総和のうち、１回前に算出されたスループットの総和を示す。
【００２５】
第１の判断手段１０４が、タスクが所定数追加される直前のスループットの総和より大きいと判断した場合、タスク追加手段１０１による所定数のタスク追加処理を継続する。タスクが所定数追加される直前のスループットの総和以下であると判断した場合、タスクの追加を停止する。
【００２６】
タスクの追加を停止する場合、第２の判断手段１０５が、算出されたスループットの総和が、タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和より大きいか否かを判断する。ここで、「タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループット」とは、例えば計測されたスループットがタスクｎ個に対するスループットである場合、タスク（ｎ−ｍ×２）個（ただし、ｍは所定数）に対するスループットを意味する。すなわち、所定数ずつタスクを追加し、その都度計測されたスループットの総和について、２回前に算出されたスループットの総和を示す。
【００２７】
第２の判断手段１０５が、タスクが所定数追加される直前より前のスループットの総和以上であると判断した場合、休止手段１０６が、最後に追加した所定数のタスクを識別する情報を記憶し、最後に追加した所定数のタスクの実行を休止させる。第２の判断手段１０５が、タスクが所定数追加される直前よりさらに１回前にタスクが所定数追加されたときのスループットの総和以下であると判断した場合、終了手段１０７が、最後に追加した所定数のタスクを識別する情報及び再実行するために必要な情報を記憶し、最後に追加した所定数のタスクの実行を終了させる。
【００２８】
図２は、本発明の実施の形態に係るタスク数制御装置１０を、ＣＰＵ１１を用いて具現化した場合のハードウェア構成を示すブロック図である。図２において、本実施の形態に係るタスク数制御装置１０は、少なくとも、ＣＰＵ（中央演算装置）１１、記憶装置１２、ＲＡＭ１３、入力装置１４、出力装置１５、可搬型ディスクドライブ１６、通信装置１７及び上述したハードウェアを接続する内部バス１８で構成されている。
【００２９】
ＣＰＵ１１は、内部バス１８を介してタスク数制御装置１０の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置１２に記憶されているコンピュータプログラム８０に従って、種々のソフトウェア的機能を実行する。ＲＡＭ１３は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラム８０の実行時にロードモジュールが展開され、コンピュータプログラム８０の実行時に発生する一時的なデータ等を記憶する。
【００３０】
記憶装置１２は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ等で構成されている。記憶装置１２に記憶されているコンピュータプログラム８０は、プログラム及びデータ等の情報を記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体９０から、可搬型ディスクドライブ１６によりダウンロードされ、実行時には記憶装置１２からＲＡＭ１３へ展開して実行される。もちろん、通信装置１７を介して外部コンピュータからダウンロードされたコンピュータプログラムであっても良い。
【００３１】
また記憶装置１２は、タスクが追加されるごとに、タスク数に対応したスループットを記憶するスループット情報記憶部１２１を備えている。ＣＰＵ１１は、タスクごとに一作業単位終了時のスループットを計測し、スループット情報記憶部１２１へ記憶する。ＣＰＵ１１は、タスク数ごとにスループットの総和である集計値もスループット情報記憶部１２１へ記憶する。さらにタスクの実行を休止させた場合には休止されたタスクを識別する識別情報を、タスクの実行を終了させた場合には、再実行させるために必要となる情報も含めて、スループット情報記憶部１２１へ記憶する。
【００３２】
通信装置１７は内部バス１８に接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワーク網に接続されることにより、外部のコンピュータ等とデータ送受信を行うことが可能となっている。すなわち、上述した記憶装置１２は、タスク数制御装置１０に内蔵される構成に限定されるものではなく、通信装置１７を介して接続されている外部のサーバコンピュータ等に設置されているハードディスク等の外部記憶媒体であっても良い。
【００３３】
入力装置１４は、キーボード及びマウス等のデータ入力媒体であり、出力装置１５は、ＣＲＴモニタ、ＬＣＤ等の表示装置、あるいはレーザプリンタ、ドットプリンタ等の印刷装置等である。
【００３４】
以下、本実施の形態では、階層型データベースの再編成処理を例に挙げて説明する。図３は、本実施の形態に係る階層型データベースの構成の例示図である。図３に示すように、階層型データベース３１を一又は複数のｐ個（ｐは自然数）のエリアへ分割し、識別情報としてエリア番号Ａ１、Ａ２、・・・Ａｐを付与する。各エリアには一又は複数のｑ個の（ｑは自然数）の作業単位（Ｕｎｉｔ  Ｏｆ  Ｗｏｒｋ）ＵＯＷ１、ＵＯＷ２、・・・、ＵＯＷｑが含まれる。各作業単位には階層型である一又は複数のデータベースレコードが含まれており、データベースレコードごとに複数のセグメントにて階層構造が形成されている。
【００３５】
本実施の形態では、再編成処理タスクはエリア単位で起動される。つまり、複数のエリアに対する再編成処理タスクを複数同時に並列処理することにより、全体のスループットを向上させている。ただし、再編成処理は、作業単位ごとに実行されるので、一作業単位の再編成処理タスクが終了した時点で、一作業単位ごとのスループットを計測することができる。
【００３６】
スループットは、再編成したセグメント処理数を処理時間で除算することにより求めることができる。すなわち、一作業単位ごとに、作業単位内の複数のデータベースレコードに含まれるセグメント数の総和を処理時間で除算する。
【００３７】
図４は、本発明の実施の形態に係るタスク数制御装置１０のスループット情報記憶部１２１に記憶されるデータ構成の例示図である。図４に示すようにタスク数制御装置１０のＣＰＵ１１は、ＲＡＭ１３に展開されているタスクを実行する。タスクは識別情報としてタスク番号Ｔ１、Ｔ２、・・・Ｔｎが付与されている。
【００３８】
スループット情報記憶部１２１の「スループット計測値」の項目には、タスク番号に対応付けてスループットの実測値が記憶される。スループット情報記憶部１２１の「スループット集計値」の項目には、タスク数ごとに、各タスクのスループットの実測値の総和が記憶される。スループット情報記憶部１２１の「タスク再開情報」の項目には、強制終了されたタスクを再実行するための情報として、再編成処理を実行していたエリア番号及びどこまで再編成処理が終了しているかを示す処理済ＵＯＷ数を記憶する。スループット情報記憶部１２１の「タスク休止情報」の項目には、休止されているタスクのタスク番号が記憶される。
【００３９】
以下、本発明の実施の形態に係るタスク数制御装置１０の処理手順をフローチャート及びスループット情報記憶部１２１に記憶されているデータの変遷を示す図に基づいて、詳細に説明する。図５は、本発明の実施の形態に係るタスク数制御装置１０のＣＰＵ１１のタスクごとの処理手順、すなわち再編成処理に伴う処理の手順を示すフローチャートである。
【００４０】
図５において、タスク数制御装置１０のＣＰＵ１１は、再編成処理を実行する一の作業単位、例えばＵＯＷ１を選択する（ステップＳ５０１）。ＣＰＵ１１は、スループットの計測を開始し（ステップＳ５０２）、選択された作業単位に対する再編成処理を実行する（ステップＳ５０３）
【００４１】
ＣＰＵ１１は、作業単位の再編成処理が完了した時点でスループットの計測を終了し（ステップＳ５０４）、計測したスループットの実測値を記憶装置１２のスループット情報記憶部１２１へ記憶する（ステップＳ５０５）。図６は、タスクＴ１の再編成処理が完了した時点でのスループット情報記憶部１２１の状態を示す模式図である。図６に示すように、スループット情報記憶部１２１の「スループット計測値」の項目には、タスク番号Ｔ１に対するスループットの実測値ＴＰｔ１が記憶されている。そして、「スループット集計値」の項目には、タスク数が０に対するスループット集計値として‘０’が、タスク数が１に対するスループット集計値として、タスク数が１である場合のスループットの総和ＴＰｎ１が記憶される。この場合、ＴＰｎ１とＴＰｔ１とは同じ値となる。
【００４２】
図５に戻って、タスク数制御装置１０のＣＰＵ１１は、データベース内の全ての作業単位について再編成処理が完了したか否かを判断し（ステップＳ５０６）、ＣＰＵ１１が、完了したと判断した場合（ステップＳ５０６：ＹＥＳ）、ＣＰＵ１１は、処理を終了する。ＣＰＵ１１が、まだ完了していないと判断した場合（ステップＳ５０６：ＮＯ）、ＣＰＵ１１は、次の作業単位、例えばＵＯＷ２を選択して（ステップＳ５０７）、処理をステップＳ５０３へ戻して上述した処理を繰り返す。
【００４３】
図７は、本発明の実施の形態に係るタスク数制御装置１０のＣＰＵ１１のタスク数制御処理の手順を示すフローチャートである。図７では、タスク数を１個ずつ追加する場合の処理手順について説明するが、特にこれに限定されるものではなく、処理によっては所定数のタスクずつ追加しても良いことは言うまでもない。
【００４４】
図７において、タスク数制御装置１０のＣＰＵ１１は、タスク数ｎを初期値‘１’に設定し（ステップＳ７０１）、起動されて実行中である全てのタスクについて、作業単位でのスループット実測値が記憶装置１２のスループット情報記憶部１２１に記憶されたか否かを判断する（ステップＳ７０２）。ＣＰＵ１１が、記憶されていないと判断した場合（ステップＳ７０２：ＮＯ）、ＣＰＵ１１は、記憶されるまで待ち状態となる。ＣＰＵ１１が、記憶されたと判断した場合（ステップＳ７０２：ＹＥＳ）、ＣＰＵ１１は、記憶されている各タスクのスループット実測値の総和を算出し（ステップＳ７０３）、算出された総和を、タスク数ｎの場合のスループット集計値として記憶装置１２のスループット情報記憶部１２１へ記憶する（ステップＳ７０４）。
【００４５】
ＣＰＵ１１は、記憶装置１２のスループット情報記憶部１２１に記憶されているスループット集計値を参照し、直近に記憶されたスループット集計値が、タスク数（ｎ−１）のスループット集計値より大きいか否かを判断する（ステップＳ７０５）。すなわち、演算処理能力に余裕がある場合は、タスク数の増加に伴ってスループットは向上するが、演算処理能力に余裕がなくなるにつれてスループットの向上率は低下し、余裕がほとんどなくなった時点でスループットは急激に低下するというスループットの特性を利用し、演算処理能力に余裕があるか否かを判断している。
【００４６】
ＣＰＵ１１が、直近に記憶されたスループット集計値が、タスク数（ｎ−１）のスループット集計値より大きいと判断した場合（ステップＳ７０５：ＹＥＳ）、ＣＰＵ１１は、演算処理能力に余裕があると判断し、未処理のエリアが存在するか否かを判断する（ステップＳ７０６）。ＣＰＵ１１が、存在しないと判断した場合（ステップＳ７０６：ＮＯ）、これ以上同時並列処理するタスク数は増加しないので、ＣＰＵ１１は処理を終了する。
【００４７】
ＣＰＵ１１が存在すると判断した場合（ステップＳ７０６：ＹＥＳ）、ＣＰＵ１１は、所定のエリアに対する再編成処理を実行するタスクを１追加し（ステップＳ７０７）、記憶装置１２のスループット情報記憶部１２１の「スループット計測値」及び「スループット集計値」の項目をクリアする（ステップＳ７０８）。ＣＰＵ１１は、処理をステップＳ７０２へ戻し、上述した処理を繰り返す。
【００４８】
ＣＰＵ１１が、直近に記憶されたスループット集計値が、タスク数（ｎ−１）のスループット集計値以下であると判断した場合（ステップＳ７０５：ＮＯ）、ＣＰＵ１１は、直近に記憶されたスループット集計値が、タスク数（ｎ−２）のスループット集計値より大きいか否かを判断する（ステップＳ７０９）。例えば、直近に記憶されたスループットの総和が、タスク数が３である場合のスループットの総和を基準とする場合、タスク数が１個である場合のスループットの総和と比較する。
【００４９】
図８は、タスクが１個追加され、２個の再編成処理が完了した時点でのスループット情報記憶部１２１の状態を示す模式図である。図８に示すように、スループット情報記憶部１２１の「スループット計測値」の項目には、タスク番号Ｔ１に対するスループットの実測値ＴＰｔ１’及びタスク番号Ｔ２に対するスループットの実測値ＴＰｔ２が記憶されている。タスク番号Ｔ１に対するスループットの実測値ＴＰｔ１’は、タスク数が１である場合のタスク番号Ｔ１に対するスループットの実測値ＴＰｔ１と値が相違していることは言うまでもない。
【００５０】
そして、「スループット集計値」の項目には、タスク数が２に対するスループットの総和ＴＰｎ２が記憶される。この場合、ＴＰｎ２は、ＴＰｔ１’とＴＰｔ２との和となる。
【００５１】
同様に、図９は、さらにタスクが１個追加され、３個の再編成処理が完了した時点でのスループット情報記憶部１２１の状態を示す模式図である。図９に示すように、スループット情報記憶部１２１の「スループット計測値」の項目には、タスク番号Ｔ１に対するスループットの実測値ＴＰｔ１”、タスク番号Ｔ２に対するスループットの実測値ＴＰｔ２’及びタスク番号Ｔ３に対するスループットの実測値ＴＰｔ３が記憶されている。タスク番号Ｔ１に対するスループットの実測値ＴＰｔ１”は、タスク数が１である場合のタスク番号Ｔ１に対するスループットの実測値ＴＰｔ１、タスク数が２である場合のタスク番号Ｔ１に対するスループットの実測値ＴＰｔ１’と値が相違しており、タスク番号Ｔ２に対するスループットの実測値ＴＰｔ２’は、タスク数が２である場合のタスク番号Ｔ２に対するスループットの実測値ＴＰｔ２と値が相違していることは言うまでもない。
【００５２】
そして、「スループット集計値」の項目には、タスク数が３に対するスループットの総和ＴＰｎ３が記憶される。この場合、ＴＰｎ３は、ＴＰｔ１”とＴＰｔ２’とＴＰｔ３との和となる。
【００５３】
したがって、図７のステップＳ７０５では、スループット集計値ＴＰｎ３とＴＰｎ２とを比較し、ステップＳ７０９では、スループット集計値ＴＰｎ３とＴＰｎ１とを比較する。演算処理能力に余裕がある場合には、ＴＰｎ３＞ＴＰｎ２＞ＴＰｎ１であるはずだからである。
【００５４】
図７に戻って、タスク数制御装置１０のＣＰＵ１１は、直近に記憶されたスループット集計値が、タスク数（ｎ−２）のスループット集計値より大きいと判断した場合（ステップＳ７０９：ＹＥＳ）、ＣＰＵ１１は、直近に起動したタスクの休止に関する情報を記憶装置１２のスループット情報記憶部１２１に記憶し（ステップＳ７１０）、直近に起動したタスクを休止させる（ステップＳ７１１）。
【００５５】
図１０は、直近に記憶されたスループット集計値が、タスク数（ｎ−２）のスループット集計値より大きい場合のスループットの変遷の例示図である。スループット集計値ＴＰｎ３はＴＰｎ２よりも向上はしていないものの、ＴＰｎ１よりは大きい。したがって、演算処理能力が限界ではないものの、これ以上タスク数を追加することはできないと判断することができる。
【００５６】
図１１は、直近に起動したタスクＴ３を休止する場合のスループット情報記憶部１２１の状態を示す模式図である。図１１に示すように、スループット情報記憶部１２１の「休止情報」の項目には、休止させるタスクを識別するタスク番号Ｔ３を記憶する。タスク番号を記憶しておくことにより、一のタスクが終了した時点で即座に再実行することができる。
【００５７】
図７に戻って、タスク数制御装置１０のＣＰＵ１１は、直近に記憶されたスループット集計値が、タスク数（ｎ−２）のスループット集計値以下であると判断した場合（ステップＳ７０９：ＮＯ）、ＣＰＵ１１は、直近に起動したタスクの再開に関する再開情報を記憶装置１２のスループット情報記憶部１２１に記憶し（ステップＳ７１２）、直近に起動したタスクを終了させる（ステップＳ７１３）。これにより、同時に並列処理されているタスク数は（ｎ−１）個となる。
【００５８】
ＣＰＵ１１は、記憶装置１２のスループット情報記憶部１２１の「スループット計測値」及び「スループット集計値」の項目をクリアし（ステップＳ７１４）、処理をステップＳ７０２へ戻し、上述した処理を繰り返す。なお、図５のステップＳ５０６以降の処理と、上述したタスク数制御処理とは、実際には並列処理される。したがって、再編成処理の進行に伴って変動するスループットに基づいて、略リアルタイム的に最適なタスク数となるよう制御することが可能となる。
【００５９】
図１２は、直近に記憶されたスループット集計値が、タスク数（ｎ−２）のスループット集計値以下である場合のスループットの変遷の例示図である。スループット集計値ＴＰｎ３はＴＰｎ１よりも低下していることから、演算処理能力が限界となっており、いずれかのタスクを強制終了しない限り、タスク数を追加することはできないと判断することができる。
【００６０】
図１３は、直近に起動したタスクＴ３を強制終了する場合のスループット情報記憶部１２１の状態を示す模式図である。図１３に示すように、スループット情報記憶部１２１には、タスク再開情報として、終了したタスクが再編成処理を実行していたエリア番号及びどこまで再編成処理が終了しているかを示す処理済ＵＯＷ数を記憶する。
【００６１】
一のエリアの再編成処理が完了した場合、ＣＰＵ１１は、記憶装置１２のスループット情報記憶部１２１を参照して、休止状態となっているタスクの存在、強制終了させたタスクの存在等を確認し、後処理を実行する。図１４は、本発明の実施の形態に係るタスク数制御装置１０のＣＰＵ１１の後処理の手順を示すフローチャートである。
【００６２】
図１４において、本発明の実施の形態に係るタスク数制御装置１０のＣＰＵ１１は、スループット情報記憶部１２１の「休止情報」の項目を参照し、休止状態のタスクが存在するか否かを判断する（ステップＳ１４０１）。具体的には、「休止情報」の項目にタスク番号が記憶されているか否かで判断する。ＣＰＵ１１が、休止状態のタスクが存在すると判断した場合（ステップＳ１４０１：ＹＥＳ）、ＣＰＵ１１は、再編成処理を完了したタスクが有るか否かを判断する（ステップＳ１４０２）。
【００６３】
ＣＰＵ１１が、再編成処理を完了したタスクが無いと判断した場合（ステップＳ１４０２：ＮＯ）、ＣＰＵ１１は、完了待ち状態となる。ＣＰＵ１１が、再編成処理を完了したタスクが有ると判断した場合（ステップＳ１４０２：ＹＥＳ）、ＣＰＵ１１は、演算処理能力に余裕が生じたと判断し、「休止情報」の項目に記憶されているタスク番号のタスクを再開する（ステップＳ１４０３）。
【００６４】
ＣＰＵ１１が、休止状態のタスクが存在しないと判断した場合（ステップＳ１４０１：ＮＯ）、ＣＰＵ１１は、再編成処理を強制終了したエリアが存在するか否かを判断する（ステップＳ１４０４）。具体的には、「タスク再開情報」の項目に必要な情報が記憶されているか否かで判断する。ＣＰＵ１１が、再編成処理を強制終了したエリアが存在すると判断した場合（ステップＳ１４０４：ＹＥＳ）、ＣＰＵ１１は、再編成処理を完了したタスクが有るか否かを判断する（ステップＳ１４０５）。
【００６５】
ＣＰＵ１１が、再編成処理を完了したタスクが無いと判断した場合（ステップＳ１４０５：ＮＯ）、ＣＰＵ１１は、完了待ち状態となる。ＣＰＵ１１が、再編成処理を完了したタスクが有ると判断した場合（ステップＳ１４０５：ＹＥＳ）、ＣＰＵ１１は、演算処理能力に余裕が生じたと判断し、「タスク再開情報」を読み出し（ステップＳ１４０６）、タスクを再開する（ステップＳ１４０７）。
【００６６】
ＣＰＵ１１が、再編成処理を強制終了したエリアが存在しないと判断した場合（ステップＳ１４０４：ＮＯ）、ＣＰＵ１１は、再編成が未処理であるエリアが存在するか否かを判断する（ステップＳ１４０８）。ＣＰＵ１１が、再編成が未処理であるエリアが存在すると判断した場合（ステップＳ１４０８：ＹＥＳ）、ＣＰＵ１１は、未処理であるエリアについて再編成処理を開始する（ステップＳ１４０９）。ＣＰＵ１１が、再編成が未処理であるエリアが存在しないと判断した場合（ステップＳ１４０８：ＮＯ）、ＣＰＵ１１は、再編成処理を完了したタスクを終了する（ステップＳ１４１０）。
【００６７】
以上のように本実施の形態によれば、演算処理能力に余裕がなくなるにつれてスループットの向上率は低下し、余裕がほとんどなくなった時点でスループットは急激に低下するという特性を利用し、タスクを所定数追加する前と後とでスループットの計測値の総和を比較して、タスクを所定数追加した後の方がスループットが低下しているか否かを判断することにより、演算処理能力に余裕があるか否かを判断することができ、同時に並列処理するタスクを追加するか否かを制御することができ、演算処理能力を低下させることのないタスク数の上限を定めることが可能となる。
【００６８】
なお、本実施の形態では、タスクを所定数ずつ追加し、タスクを所定数追加する前と後とでスループットの計測値の総和を比較しているが、所定数ずつ追加するのではなく、追加するタスク数を変更しても良い。例えば、タスク数が一定数になるまで、スループットは右肩上がりに向上するが、次第に向上率は低下する。向上率が所定値以下になった時点で、追加するタスク数を減少させ、演算処理能力の限界近傍では追加するタスク数を１にすることにより、同時に並列処理することができるタスク数の上限を短時間で求めることが可能となる。
【００６９】
また、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内の記載であれば多種の変形、置換等が可能であることは言うまでもない。例えば、データベースの再編成処理に限定されるものではなく、並列処理を実行することにより、全体のスループット向上を図るアプリケーションであれば、同様の効果が期待できる。
【図面の簡単な説明】
【００７０】
【図１】本発明の実施の形態に係るタスク数制御装置の機能を模式的に示す機能ブロック図である。
【図２】本発明の実施の形態に係るタスク数制御装置を、ＣＰＵを用いて具現化した場合のハードウェア構成を示すブロック図である。
【図３】本実施の形態に係る階層型データベースの構成の例示図である。
【図４】本発明の実施の形態に係るタスク数制御装置のスループット情報記憶部に記憶されるデータ構成の例示図である。
【図５】本発明の実施の形態に係るタスク数制御装置のＣＰＵのタスクごとの処理手順を示すフローチャートである。
【図６】タスクの再編成処理が完了した時点でのスループット情報記憶部の状態を示す模式図である。
【図７】本発明の実施の形態に係るタスク数制御装置のＣＰＵのタスク数制御処理の手順を示すフローチャートである。
【図８】タスクが１個追加され、２個の再編成処理が完了した時点でのスループット情報記憶部の状態を示す模式図である。
【図９】さらにタスクが１個追加され、３個の再編成処理が完了した時点でのスループット情報記憶部の状態を示す模式図である。
【図１０】直近に記憶されたスループット集計値が、タスク数（ｎ−２）のスループット集計値より大きい場合のスループットの変遷の例示図である。
【図１１】直近に起動したタスクを休止する場合のスループット情報記憶部の状態を示す模式図である。
【図１２】直近に記憶されたスループット集計値が、タスク数（ｎ−２）のスループット集計値以下である場合のスループットの変遷の例示図である。
【図１３】直近に起動したタスクを強制終了する場合のスループット情報記憶部の状態を示す模式図である。
【図１４】本発明の実施の形態に係るタスク数制御装置のＣＰＵの後処理の手順を示すフローチャートである。
【符号の説明】
【００７１】
１０  タスク数制御装置
１１  ＣＰＵ
１２  記憶手段
１３  ＲＡＭ
１４  入力装置
１５  出力装置
１６  可搬型ディスクドライブ
１７  通信装置
１８  内部バス
８０  コンピュータプログラム
９０  可搬型記録媒体
１２１  スループット情報記憶部
【図１】
0005181121.tif 000002
【図２】
0005181121.tif 000003
【図３】
0005181121.tif 000004
【図４】
0005181121.tif 000005
【図５】
0005181121.tif 000006
【図６】
0005181121.tif 000007
【図７】
0005181121.tif 000008
【図８】
0005181121.tif 000009
【図９】
0005181121.tif 000010
【図１０】
0005181121.tif 000011
【図１１】
0005181121.tif 000012
【図１２】
0005181121.tif 000013
【図１３】
0005181121.tif 000014
【図１４】
0005181121.tif 000015