JP3839259B2 - Multithread control method, multithread control apparatus, recording medium, and program - Google Patents
Multithread control method, multithread control apparatus, recording medium, and program Download PDFInfo
- Publication number
- JP3839259B2 JP3839259B2 JP2001014611A JP2001014611A JP3839259B2 JP 3839259 B2 JP3839259 B2 JP 3839259B2 JP 2001014611 A JP2001014611 A JP 2001014611A JP 2001014611 A JP2001014611 A JP 2001014611A JP 3839259 B2 JP3839259 B2 JP 3839259B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- threads
- waiting
- predetermined time
- running
- 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.)
- Expired - Fee Related
Links
Images
Description
【0001】
【発明の属する技術分野】
本発明は、複数のスレッドによって並列処理を行うシステムにおいて、プログラムの実行速度の向上とシステム資源の有効活用を図ることができるマルチスレッド制御方法、その装置、記録媒体、及びプログラムに関するものである。
【0002】
近年、科学技術計算等のプログラムを高速に実行するシステムのオペレーティングシステムプログラムには並列動作機構が備えられているものがある。このようなオペレーティングシステムは、プログラムを所定の処理で分割し、各処理をシステム資源を割り当てたスレッドにて平行実行することで、プログラムの実行速度を高くしている。このようなシステムにおいて、プログラム実行速度の高速化とシステム資源の有効活用が求められている。
【0003】
【従来の技術】
従来、科学技術計算等のプログラムを実行するシステムでは、プログラムの並列実行などによってプログラムの実行速度の高速化を図る等を目的にスレッドが用いられる。システムのオペレーティングシステム(OS)プログラムは、アプリケーションに応じてスレッドを生成する。生成した各スレッドにシステム資源を割り当てることで、各スレッドに対応させたプログラムを並列実行し、プログラムの実行速度を高くしている。
【0004】
しかし、OSプログラムのスレッド生成には時間がかかるため、一度生成したスレッドを削除することなく再利用することで、システムにおける処理の高速化を図ることが行われている。
【0005】
詳述すると、プログラムの実行を終了したスレッドを終了させずに待機スレッドとしてテーブルに登録する。そして、スレッドの生成要求があった場合には、テーブルに登録した待機スレッドを用いてプログラムを実行する。これにより、スレッド生成時間を短縮・削減する。
【0006】
【発明が解決しようとする課題】
従来のマルチスレッド制御方法では、生成されたスレッドの数だけ待機スレッドとして管理されており、実際に動作しているスレッドが少ない状態でも、不要な待機スレッドがシステムに沢山存在している。
【0007】
待機スレッドにもシステム資源が割り当てられている。即ち、待機スレッドは、その待機中でもメモリを使用している。このように、待機スレッドが無駄にメモリ資源を使用している状況に陥ることがある。
【0008】
例えば、ある時刻において200個のスレッドが並列に動作し、その後2個のスレッドしか動作しない場合、198個の待機スレッドがメモリを使用することになる。システム資源の少ないシステムにおいて、このような状況はシステムの運営上好ましくなく、他のプログラムの実行速度にも大きな影響を与える。
【0009】
本発明は上記問題点を解決するためになされたものであって、その目的はプログラム実行速度の高速化とシステム資源の有効活用を図ることのできるマルチスレッド制御方法、その装置、記録媒体、及びプログラムを提供することにある。
【0010】
【課題を解決するための手段】
上記目的を達成するため、本発明は、並列処理を行っている実行中スレッドの数と待機状態にある待機スレッドの数とを所定時間において監視し、該監視された前記実行中スレッドの数に応じて前記待機スレッドの不要数を前記所定時間毎に決定し、該決定された前記不要数の前記待機スレッドを前記所定時間毎に回収する。これにより、無駄にメモリ資源を使用している待機スレッドを終了させ、システム資源の有効活用が図られる。
【0011】
また、所定時間毎に、前記待機スレッドの数と、前記所定時間内の実行中スレッドの数の最大値、平均値、及び実行中スレッドの数に所定の係数を乗じた値のうちの何れか一つからなる必要数とを比較し、前記待機スレッドの数が前記必要数より多い場合に該必要数まで前記待機スレッドを回収する。これにより、稼働状況に応じた必要数にまで待機スレッドの数を低減してシステム資源の有効活用が図られる。
【0012】
【発明の実施の形態】
以下、本発明を具体化した一実施の形態を図1〜図6に従って説明する。
図1は、一実施形態のマルチスレッド制御装置の概略構成図である。
【0013】
マルチスレッド制御装置1は、アプリケーションプログラムを実行するシステム(計算機)に備えられ、オペレーティングシステム(OS)2にスレッド生成を要求し、OS2から受け取ったスレッドを用いてプログラムの並列可能な部分プログラム(例えばDOループやサブルーチン)を並列実行する。
【0014】
マルチスレッド制御装置1は、部分プログラムの終了後、不要となったスレッドを待機スレッドとして登録する。次に、プログラムの実行要求があると、マルチスレッド制御装置1は、待機スレッドの状態を見て、待機スレッドがあればそれを用いて部分プログラムを実行し、待機スレッドが無い場合にはOS2にスレッド生成を要求する。
【0015】
マルチスレッド制御装置1は、プログラム実行中のスレッドの数と待機スレッドの数を監視し、実行中スレッド数に基づいて、必要数以上の待機スレッドを回収する。例えば、マルチスレッド制御装置1は、最大実行中スレッド数と待機スレッド数を用いて、待機スレッドの回収処理を実行する。
【0016】
詳述すると、マルチスレッド制御装置1は、実行中のスレッドの数を所定期間監視し、その期間内の最大値(最大実行中スレッド数)をその時に於ける待機スレッドの必要数とし、それと現在管理している待機スレッドの数とを比較する。そして、マルチスレッド制御装置1は、最大実行中スレッド数よりも待機スレッド数が大きい場合、最大実行中スレッド数まで待機スレッドを回収する。即ち、マルチスレッド制御装置1は、待機スレッド数が最大実行中スレッド数と一致するまで待機スレッドを終了させる。
【0017】
このように、無駄にシステム資源を使用している待機スレッドを回収することで、実行中のスレッドに与える影響を少なくする。
また、最大実行中スレッド数は、実行しているプログラムの状態、即ち、システムの稼働状況に応じて変化する。従って、最大実行中スレッド数まで待機スレッドを回収することで、システムの稼働状況に応じて待機スレッド数を動的に変化させている。
【0018】
更に、所定期間実行中スレッドを監視した最大実行中スレッド数にまで待機スレッドを回収することで、不意なスレッドの増加に対応することができる。即ち、実行中にスレッド数が一時的に低下しても、最大実行中スレッド数だけ待機スレッドを待機させているため、待機スレッドが不足することが無く、プログラムを直ぐに実行することができる。
【0019】
一方、待機スレッド数が実行中スレッド数と等しくなるように待機スレッドを回収する方法では、実行中スレッド数の一時的な低下に対応して待機スレッド数を低減させるため、次にプログラムに応じてスレッドが必要となった場合に待機スレッドが不足してスレッドの生成要求をOS2に行わなければならず、その分実行時間が長くなる(実行開始が遅れる)。
【0020】
次に、マルチスレッド制御装置1の構成を説明する。
マルチスレッド制御装置1は、スレッド管理処理部11、スレッド回収処理部12、スレッド管理テーブル13を含む。
【0021】
スレッド管理処理部11は、スレッド生成をOSに要求する処理、及びスレッドにプログラムの実行を要求する処理を実行する。スレッド回収処理部12は、待機スレッドを監視し、無駄な待機スレッドを回収(スレッド終了)する処理を実行する。スレッド管理テーブル13は、スレッド情報を管理するためのテーブルである。
【0022】
尚、図1には、OS2にて生成されたスレッドとして3つのスレッド14,15,16を示す。これらスレッド14〜16のうち、スレッド14,15はプログラムを実行している実行中スレッドであり、スレッド16はプログラムを終了して待機している待機スレッドとして両処理部11,12の動作及びテーブル13の構成を説明する。
【0023】
先ず、スレッド管理テーブル13の構成を図3,4に従って説明する。
図4は、スレッド管理テーブル13の概略構成図である。
スレッド管理テーブル13は、情報管理テーブル21と複数(図4では、図1のスレッド14〜16に対応して3つ)のスレッド制御表22〜24を含む。情報管理テーブル21は、実行中スレッドキュー21a、待機スレッドキュー21b、待機スレッドカウンタ21c、実行中スレッドカウンタ21d、最大実行中スレッドカウンタ21eのそれぞれのための領域を持つ。
【0024】
実行中スレッドキュー21aは、それにキューイングされた実行中スレッドに対応するスレッド制御表を指すアドレスを記憶する領域を持つスレッド制御表アドレスリストであり、実行中のスレッドの情報を管理する。待機スレッドキュー21bは、それにキューイングされた待機スレッドに対応するスレッド制御表を指すアドレスを記憶する領域を持ち、待機状態のスレッドの情報を管理する。詳述すると、図1においてスレッド14,15が実行中スレッド、スレッド16が待機スレッドである。これに対し、実行中スレッドキュー21aには実行中スレッド14,15に対応するスレッド制御表22,23を指すアドレスが記録され、待機スレッドキュー21bには待機スレッド16に対応するスレッド制御表24を指すアドレスが記録されている。
【0025】
図3は、スレッド制御表24の構成を示す説明図である。尚、他のスレッド制御表22,23の構成はスレッド制御表24のそれと同じであるため、図面及び説明を省略する。
【0026】
スレッド制御表24は、スレッド実行ECB(Event Control Block) 24a、スレッド停止ECB24bのための領域を持つ。スレッド実行ECB24aは図1のスレッド管理処理部11からの実行要求を管理するために設けられ、スレッド停止ECB24bは図1のスレッド回収処理部12からの終了要求を管理するために設けられている。図1の待機スレッド16は、各ECB24a,24bに書き込まれた情報に基づいてプログラムの実行又は停止処理を行う。
【0027】
詳述すると、図1のスレッド管理処理部11は、待機スレッドキュー21bにキューイングされたスレッド制御表24のスレッド実行ECB24aに実行要求に応じた情報を格納する。待機スレッド16は、自己に対応したスレッド制御表24のスレッド実行ECB24aに実行要求に応じた情報が格納されると、それに応答してスレッドに割り当てられたプログラム部分を実行する。
【0028】
図1のスレッド回収処理部12は、待機スレッドキュー21bにキューイングされたスレッド制御表24のスレッド停止ECB24bに停止要求に応じた情報を格納する。待機スレッド16は、スレッド停止ECB24bに停止要求に応じた情報が格納されると、それに応答して終了処理を実行する。これにより、待機スレッド16に割り当てられていたシステム資源が解放される。
【0029】
待機スレッドカウンタ21cには、待機状態のスレッド数が記録され、実行中スレッドカウンタ21dには、実行中のスレッド数が記録され、最大実行中スレッドカウンタ21eには実行中のスレッド数の最大値が記録される。
【0030】
図1の実行中スレッド14,15は、プログラムを終了すると、実行中スレッドカウンタ21dをカウントダウン(−1)し、待機スレッドカウンタ21cをカウントアップ(+1)する。図1の待機スレッド16は、スレッド管理処理部11から実行要求を受け取ると、待機スレッドカウンタ21cをカウントダウンし、実行中スレッドカウンタ21dをカウントアップし、そのカウンタ21dの値が最大実行中スレッドカウンタ21eの値よりも大きい場合、最大実行中スレッドカウンタ21eの値を実行中スレッドカウンタ21dの値に更新する。このように、両カウンタ21c,21dは、待機中のスレッド数と実行中のスレッド数を表す。
【0031】
従って、図1のスレッド管理処理部11は、待機スレッドカウンタ21cに基づいて、スレッド生成要求、スレッドに対する実行要求を行う。詳述すると、スレッド管理処理部11は、並列のプログラムの実行要求を受けると、待機スレッドカウンタ21cが「0」の場合にはOS2にスレッド生成を要求し、生成されたスレッドを実行中スレッドキュー21aにキューイングし、そのスレッドにプログラムの実行を要求する。一方、カウンタ21cが「1」以上の場合、スレッド管理処理部11は、待機スレッドキュー21bにキューイングされた待機スレッド16にプログラムの実行を要求する。
【0032】
また、図1のスレッド回収処理部12は、待機スレッドカウンタ21cと最大実行中スレッドカウンタ21eの値に基づいて、余分なスレッドを回収する。詳述すると、スレッド回収処理部12は、最大実行中スレッドカウンタ21eと待機スレッドカウンタ21cを所定の時間毎にモニタし、それらを比較する。そして、スレッド回収処理部12は、比較結果に基づいて、最大実行中スレッドカウンタ21eの値より待機スレッドカウンタ21cのそれの方が大きい場合に、最大実行中スレッドカウンタ21eの値まで待機スレッドを回収する。即ち、スレッド回収処理部12は、両カウンタ21c,21eの値の差の数のスレッドに対して終了要求を行い、待機スレッドを回収する。
【0033】
次に、スレッド14〜16及びスレッド回収処理部12の動作を図5,図6のフローチャートに従って説明する。
図5は、スレッドが実行する処理を説明する動作フローチャートである。
【0034】
先ず、ステップ31において、スレッドは、実行中スレッドカウンタ21dを+1する。
次に、ステップ32において、スレッドは実行中スレッドカウンタ21dと最大実行中スレッドカウンタ21eの値を比較し、実行中スレッドカウンタ21dの方が最大実行中スレッドカウンタ21eより大きい場合はステップ33へ移る。そのステップ33において、スレッドは最大実行中スレッドカウンタ21eの値を実行中スレッドカウンタ21dのそれに更新する。
【0035】
ステップ34において、スレッドはプログラムを実行する。そのプログラムが終了すると、スレッドはステップ35に移る。
ステップ35において、スレッドは実行中スレッドカウンタ21dを−1する。次に、ステップ36において、スレッドは待機スレッドカウンタ21cを+1する。そして、ステップ37において、スレッドは待機スレッドキュー21bにスレッド制御表をキューイングする。
【0036】
ステップ38において、スレッドはマルチWAIT処理を実行する。この処理において、スレッドは、スレッド実行ECB24aとスレッド停止ECB24bの両方を監視し、何れか一方に情報が書き込まれるまで待つ。そして、スレッドは、スレッド実行ECB24aまたはスレッド停止ECB24bに情報が書き込まれると、ステップ39に移る。
【0037】
ステップ39において、スレッドは、ステップ38において書き込まれた情報が終了要求か否かを判断し、終了要求ではない、即ち実行要求の場合にはステップ40に移る。そのステップ40において、スレッドは、待機スレッドカウンタ21cを−1した後、ステップ31に移る。これにより、スレッドはプログラムを実行するスレッドとして機能し、待機スレッドが再利用されることになる。
【0038】
一方、ステップ39において、入力が終了要求の場合、スレッドはステップ41に移り、そのステップ41において終了処理を実行する。これより、スレッドが終了(消滅)する。
【0039】
図6は、スレッド回収処理部12の動作フローチャートである。
先ず、ステップ51において、スレッド回収処理部12は、所定時間のタイマをかける。この所定時間は、待機スレッドカウンタ21cと最大実行中スレッドカウンタ21eをモニタする間隔であり、このモニタ間隔はシステムに応じて設定した一定値、又は稼働時刻等に対応して変更してもよい。そして、所定時間経過してタイムアップすると、スレッド回収処理部12はステップ52に移る。
【0040】
ステップ52は比較処理(比較手段)であり、スレッド回収処理部12は、待機スレッドカウンタ21cと最大実行中スレッドカウンタ21eとを比較し、待機スレッド数が最大実行中スレッド数より大きくなっていないか確認する。そして、スレッド回収処理部12は、待機スレッド数より最大実行中スレッド数の方が大きい場合にはステップ51に戻り、待機スレッド数の方が最大実行中スレッド数より大きい場合にはステップ53に進む。
【0041】
そのステップ53は回収処理(回収手段)であり、スレッド回収処理部12は、待機スレッドに終了要求を行い(詳しくは待機スレッドに対応するスレッド制御表のスレッドECB24bに終了要求に応じた情報を書き込む)、スレッドを回収する。
【0042】
上記マルチスレッド制御装置1は、計算機上で実行するコンピュータプログラムにより実現することもできる。
即ち、図2に示すように、マルチスレッドにてプログラムを並列実行する計算機60は、処理装置61、入出力装置62、主記憶装置63、補助記憶装置64などから構成され、コンピュータプログラムを実行するものである。コンピュータプログラムは、フロッピーディスクやCD−ROM等の可搬型記録媒体65やネットワーク接続された他の計算機の主記憶装置や補助記憶装置等に格納されて提供される。
【0043】
提供されたコンピュータプログラムは、可搬型媒体65から一旦補助記憶装置64にコピーまたはインストール後に主記憶装置63にロードされ、または可搬型媒体65から直接計算機60の主記憶装置63にロードされ実行する。尚、主記憶装置63には、図1のスレッド管理テーブル13が作成され、それによりスレッド情報が管理される。
【0044】
また、コンピュータプログラムがネットワーク接続された他の装置に格納されて提供された場合も、他の装置からネットワークを経由して受信後に補助記憶装置64にコピーまたはインストール後に主記憶装置63にロードされ、または直接主記憶装置63にロードされ実行するものである。
【0045】
尚、図2は、コンピュータプログラムを実行する計算機を機能的に示したものであり、各装置61〜64が複数設けられた計算機を用いる、又は複数の計算機が疎又は密結合された計算機システムを用いても良い。
【0046】
以上記述したように、本実施の形態によれば、以下の効果を奏する。
(1)マルチスレッド制御装置1のスレッド回収処理部12は、実行中のスレッドの数を所定期間監視し、その期間内の最大値(最大実行中スレッド数)と待機スレッド数とを比較する。そして、スレッド回収処理部12は、最大実行中スレッド数よりも待機スレッド数が大きい場合、最大実行中スレッド数まで待機スレッドを回収するようにした。その結果、無駄にシステム資源を使用している待機スレッドを回収し、実行中のスレッドに与える影響を少なくすることができる。
【0047】
(2)スレッド回収処理部12は、最大実行中スレッドカウンタ21eの値、即ち所定期間に於ける実行中スレッド数の最大値まで待機スレッドを回収する。この最大実行中スレッド数は、実行しているプログラムの状態、即ち、システムの稼働状況に応じて変化する。その結果、最大実行中スレッド数まで待機スレッドを回収することで、システムの稼働状況に応じた数の待機スレッドを待機させることができる。
【0048】
尚、前記実施形態は、以下の態様に変更してもよい。
○上記実施形態では、所定時間毎に待機スレッドカウンタ21cと最大実行中スレッドカウンタ21eを比較した結果に基づいて待機スレッドを終了させるようにしたが、待機スレッドカウンタ21cの値をその時における待機スレッドの必要数とし、それと実行中スレッドカウンタ21dを比較した結果に基づいて待機スレッドを回収するようにしても良い。また、必要数として所定期間に於ける実行中スレッド数の平均値を求め、その平均スレッド数と待機スレッド数とを比較し、その比較結果に基づいて平均値又は現在実行中のスレッド数まで待機スレッドを回収するようにしてもよい。また、実行中スレッド数にシステムの状況に応じた値又は一定値の係数を演算した数を必要数とし、それまで待機スレッドを回収するようにしてもよい。
【0049】
○上記実施形態では、最大実行中スレッドカウンタ21eの更新を各スレッド14〜16が行うようにしたが、その更新処理をスレッド管理処理部11又はスレッド回収処理部12が行うようにしてもよい。
【0050】
【発明の効果】
以上詳述したように、本発明によれば、実行中のスレッドの数と待機状態にあるスレッドの数に基づいて不要な数の待機スレッドを回収するようにした。これにより、待機スレッドにてプログラム実行速度の高速化を図り、無駄にメモリ資源を使用している待機スレッドを終了させ、システム資源の有効活用を図ることができる。
【0051】
また、所定時間毎に、必要数まで前記待機スレッドを回収するようにしたため、稼働状況に応じた必要数にまで待機スレッドの数を低減してシステム資源の有効活用を図ることができる。
【図面の簡単な説明】
【図1】 一実施形態のマルチスレッド制御装置の概略構成図である。
【図2】 システムのハードウェア構成を示す概略図である。
【図3】 スレッド制御表の説明図である。
【図4】 スレッド管理テーブルの説明図である。
【図5】 スレッドの処理を示すフローチャートである。
【図6】 スレッド回収処理部の処理を示すフローチャートである。
【符号の説明】
11 スレッド管理処理部
12 スレッド回収処理部
13 スレッド情報管理部としてのスレッド管理テーブル
14〜16 スレッド[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a multi-thread control method, an apparatus, a recording medium, and a program that can improve the execution speed of a program and effectively use system resources in a system that performs parallel processing using a plurality of threads.
[0002]
In recent years, some operating system programs for systems that execute programs such as scientific and technological calculations at high speed have a parallel operation mechanism. Such an operating system increases the program execution speed by dividing the program into predetermined processes and executing the processes in parallel in threads assigned system resources. In such a system, it is required to increase the program execution speed and effectively use system resources.
[0003]
[Prior art]
2. Description of the Related Art Conventionally, in a system that executes a program such as scientific and technical calculation, threads are used for the purpose of increasing the execution speed of a program by executing the program in parallel. The system operating system (OS) program generates threads according to the application. By assigning system resources to each generated thread, the program corresponding to each thread is executed in parallel, and the execution speed of the program is increased.
[0004]
However, since it takes time to generate OS program threads, it is possible to increase the processing speed in the system by reusing the generated threads without deleting them.
[0005]
More specifically, the thread that has finished executing the program is registered in the table as a waiting thread without being terminated. If there is a thread generation request, the program is executed using the standby thread registered in the table. This shortens / reduces the thread generation time.
[0006]
[Problems to be solved by the invention]
In the conventional multi-thread control method, the number of generated threads is managed as standby threads, and there are many unnecessary standby threads in the system even when the number of actually operating threads is small.
[0007]
System resources are also allocated to the waiting thread. That is, the waiting thread uses the memory even during the waiting. As described above, the standby thread may use the memory resource unnecessarily.
[0008]
For example, if 200 threads operate in parallel at a certain time and then only two threads operate thereafter, 198 waiting threads will use memory. In a system with a small amount of system resources, such a situation is not preferable for system operation and greatly affects the execution speed of other programs.
[0009]
The present invention has been made to solve the above-mentioned problems, and its object is to provide a multi-thread control method capable of increasing the program execution speed and effectively utilizing system resources, an apparatus therefor, a recording medium, and To provide a program.
[0010]
[Means for Solving the Problems]
In order to achieve the above object, the present invention monitors the number of running threads performing parallel processing and the number of waiting threads in a waiting state at a predetermined time, and determines the number of the running threads monitored. Accordingly, an unnecessary number of waiting threads is determined every predetermined time, and the determined unnecessary number of waiting threads are collected every predetermined time . As a result, a standby thread that uses memory resources in vain is terminated, and system resources are effectively used.
[0011]
Further, at any given time, any one of the number of waiting threads, the maximum value and the average value of the number of executing threads within the predetermined time, and a value obtained by multiplying the number of executing threads by a predetermined coefficient The number of waiting threads is compared with the necessary number, and when the number of waiting threads is larger than the necessary number, the waiting threads are collected up to the necessary number. As a result, the number of waiting threads is reduced to the required number according to the operating status, and the system resources can be effectively used.
[0012]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, an embodiment embodying the present invention will be described with reference to FIGS.
FIG. 1 is a schematic configuration diagram of a multi-thread control device according to an embodiment.
[0013]
The multi-thread control device 1 is provided in a system (computer) that executes an application program, requests an operating system (OS) 2 to generate a thread, and uses a thread received from the
[0014]
The multi-thread control device 1 registers the unnecessary thread as a waiting thread after the partial program ends. Next, when there is a program execution request, the multi-thread control device 1 looks at the state of the standby thread, and if there is a standby thread, executes the partial program, and if there is no standby thread, Request thread creation.
[0015]
The multi-thread control device 1 monitors the number of threads that are executing a program and the number of waiting threads, and collects a required number or more of waiting threads based on the number of executing threads. For example, the multi-thread control device 1 executes a waiting thread collection process using the maximum number of threads being executed and the number of waiting threads.
[0016]
More specifically, the multi-thread control device 1 monitors the number of executing threads for a predetermined period, sets the maximum value (maximum number of executing threads) within that period as the necessary number of waiting threads at that time, Compare the number of waiting threads managed. When the number of waiting threads is larger than the maximum number of executing threads, the multi-thread control device 1 collects waiting threads up to the maximum number of executing threads. That is, the multi-thread control device 1 ends the waiting thread until the number of waiting threads matches the maximum number of executing threads.
[0017]
In this way, collecting standby threads that use system resources in vain reduces the effect on the executing thread.
Further, the maximum number of threads being executed changes according to the state of the program being executed, that is, the operating status of the system. Therefore, by collecting the waiting threads up to the maximum number of executing threads, the number of waiting threads is dynamically changed according to the operating status of the system.
[0018]
Furthermore, by collecting the waiting threads up to the maximum number of executing threads that are monitoring the executing threads for a predetermined period, it is possible to cope with an unexpected increase in threads. That is, even if the number of threads temporarily decreases during execution, the waiting threads are kept waiting for the maximum number of executing threads, so that the program can be executed immediately without running out of waiting threads.
[0019]
On the other hand, in the method of collecting waiting threads so that the number of waiting threads becomes equal to the number of running threads, the number of waiting threads is reduced in response to a temporary decrease in the number of running threads. When a thread is required, the waiting thread is insufficient and a thread generation request must be made to the
[0020]
Next, the configuration of the multithread control apparatus 1 will be described.
The multi-thread control device 1 includes a thread
[0021]
The thread
[0022]
FIG. 1 shows three
[0023]
First, the configuration of the thread management table 13 will be described with reference to FIGS.
FIG. 4 is a schematic configuration diagram of the thread management table 13.
The thread management table 13 includes an information management table 21 and a plurality of thread control tables 22 to 24 (three in FIG. 4 corresponding to the threads 14 to 16 in FIG. 1). The information management table 21 has areas for the executing
[0024]
The executing
[0025]
FIG. 3 is an explanatory diagram showing the configuration of the thread control table 24. The configuration of the other thread control tables 22 and 23 is the same as that of the thread control table 24, and thus the drawings and description are omitted.
[0026]
The thread control table 24 has areas for thread execution ECB (Event Control Block) 24a and thread stop ECB 24b. The
[0027]
More specifically, the thread
[0028]
1 stores information corresponding to the stop request in the thread stop ECB 24b of the thread control table 24 queued in the
[0029]
The waiting
[0030]
When the running threads 14 and 15 in FIG. 1 terminate the program, the running thread counter 21d counts down (−1), and the waiting
[0031]
Accordingly, the thread
[0032]
Further, the thread collection processing unit 12 in FIG. 1 collects excess threads based on the values of the waiting
[0033]
Next, the operations of the threads 14 to 16 and the thread collection processing unit 12 will be described with reference to the flowcharts of FIGS.
FIG. 5 is an operation flowchart illustrating processing executed by a thread.
[0034]
First, in
Next, in
[0035]
In
In
[0036]
In
[0037]
In
[0038]
On the other hand, if the input is a termination request in
[0039]
FIG. 6 is an operation flowchart of the thread collection processing unit 12.
First, in
[0040]
[0041]
The
[0042]
The multi-thread control device 1 can also be realized by a computer program executed on a computer.
That is, as shown in FIG. 2, a
[0043]
The provided computer program is temporarily copied or installed from the portable medium 65 to the
[0044]
Also, when the computer program is stored and provided in another device connected to the network, it is copied to the
[0045]
FIG. 2 functionally shows a computer that executes a computer program. A computer system in which a plurality of
[0046]
As described above, according to the present embodiment, the following effects can be obtained.
(1) The thread collection processing unit 12 of the multi-thread control device 1 monitors the number of executing threads for a predetermined period, and compares the maximum value (maximum number of executing threads) within that period with the number of waiting threads. When the number of waiting threads is larger than the maximum number of executing threads, the thread collection processing unit 12 collects waiting threads up to the maximum number of executing threads. As a result, it is possible to collect standby threads that use system resources in vain and reduce the effect on the running threads.
[0047]
(2) The thread collection processing unit 12 collects the waiting threads up to the value of the maximum running thread counter 21e, that is, the maximum number of running threads in a predetermined period. The maximum number of threads being executed varies depending on the state of the program being executed, that is, the operating status of the system. As a result, by collecting the waiting threads up to the maximum number of executing threads, the number of waiting threads corresponding to the operating status of the system can be waited.
[0048]
In addition, you may change the said embodiment into the following aspects.
In the above embodiment, the waiting thread is terminated based on the result of comparing the waiting
[0049]
In the above embodiment, each of the threads 14 to 16 updates the maximum execution thread counter 21e. However, the thread
[0050]
【The invention's effect】
As described above in detail, according to the present invention, an unnecessary number of waiting threads are collected based on the number of running threads and the number of threads in a waiting state. As a result, it is possible to increase the program execution speed in the standby thread, to end the standby thread that uses the memory resource in vain, and to effectively use the system resources.
[0051]
In addition, since the waiting threads are collected up to the required number every predetermined time, the number of waiting threads can be reduced to the required number according to the operating status, and the system resources can be effectively used.
[Brief description of the drawings]
FIG. 1 is a schematic configuration diagram of a multi-thread control device according to an embodiment;
FIG. 2 is a schematic diagram showing a hardware configuration of the system.
FIG. 3 is an explanatory diagram of a thread control table.
FIG. 4 is an explanatory diagram of a thread management table.
FIG. 5 is a flowchart showing thread processing;
FIG. 6 is a flowchart showing processing of a thread collection processing unit.
[Explanation of symbols]
DESCRIPTION OF
Claims (5)
並列処理を行っている実行中スレッドの数と待機状態にある待機スレッドの数とを所定時間において監視し、該監視された前記実行中スレッドの数に応じて、前記所定時間内の前記実行中スレッドの数の最大値、平均値、及び前記実行中スレッドの数に所定の係数を乗じた値のうちの何れか一つからなる待機スレッドの必要数を前記所定時間毎に決定し、該決定された前記必要数と前記待機スレッドの数とを前記所定時間毎に比較して、前記待機スレッドの数が前記必要数より多い場合に該必要数まで前記待機スレッドを回収する
ことを特徴とするマルチスレッド制御方法。In a multi-thread control method for performing parallel processing by a plurality of threads,
And the number of waiting threads in number and standby state of the running thread that performs parallel processing monitor at a predetermined time, in accordance with the number of the running thread, which is the monitoring, the running within the predetermined time period Determining a required number of waiting threads, each of which is one of a maximum value and an average value of the number of threads , and a value obtained by multiplying the number of executing threads by a predetermined coefficient, for each predetermined time; compared been the required number and the number of the waiting threads for each of the predetermined time, the number of the waiting threads and recovering the waiting threads until the required number if greater than the required number Multi-thread control method.
前記複数のスレッドのスレッド情報が記憶されるスレッド情報管理部と、
前記スレッド情報管理部に記憶された待機状態にあるスレッドの数に基づいてスレッドの生成要求、及び前記待機状態にあるスレッドに対して処理の実行要求を行うスレッド実行処理部と、
前記スレッド情報管理部に記録された並列処理を行っている実行中スレッドの数と前記待機状態にある待機スレッドの数とを所定時間において監視し、該監視された前記実行中スレッドの数に応じて前記待機スレッドの不要数を前記所定時間毎に決定し、該決定された前記不要数の前記待機スレッドを前記所定時間毎に回収するスレッド回収処理部と
を備えたことを特徴とするスレッド制御装置。In a multi-thread control device that performs parallel processing by a plurality of threads,
A thread information management unit for storing thread information of the plurality of threads;
A thread generation request based on the number of threads in a standby state stored in the thread information management unit, and a thread execution processing unit that performs a process execution request for the thread in the standby state;
And the number of waiting threads in number and the standby state of the thread information management running is being performed the recorded parallel processing unit thread monitors at predetermined time, depending on the number of the running thread, which is the monitoring an unnecessary number of the standby thread to determine for each said predetermined time Te, the thread control, characterized in that the waiting thread the unnecessary number of the determined and a thread recovery unit for recovering every predetermined time apparatus.
所定時間毎に、前記待機スレッドの数と、前記所定時間内の前記実行中スレッドの数の最大値、平均値、及び前記実行中スレッドの数に所定の係数を乗じた値のうちの何れか一つからなる必要数とを比較する手段と、
前記待機スレッドの数が前記必要数より多い場合に該必要数まで前記待機スレッドを回収する手段と
を備えたことを特徴とする請求項2記載のスレッド制御装置。The thread collection processing unit
At predetermined time intervals, wherein the number of waiting threads, the number of the maximum value of the running thread within the predetermined time, the average value, and one of the values obtained by multiplying a predetermined coefficient to the number of the running thread A means of comparing the required number of ones;
3. The thread control device according to claim 2, further comprising means for collecting the waiting threads up to the required number when the number of waiting threads is larger than the required number.
前記プログラムは、
並列処理を行っている実行中スレッドの数と待機状態にある待機スレッドの数とを所定時間において監視するステップと、
該監視された前記実行中スレッドの数に応じて前記待機スレッドの不要数を前記所定時間毎に決定するステップと、
該決定された前記不要数の前記待機スレッドを前記所定時間毎に回収するステップと
を実行する、記録媒体。A computer-readable recording medium on which a multi-thread control program that performs parallel processing by a plurality of threads is recorded,
The program is
Monitoring the number of executing threads performing parallel processing and the number of waiting threads in a waiting state at a predetermined time ;
Determining an unnecessary number of waiting threads every predetermined time according to the monitored number of running threads;
The step of collecting the determined unnecessary number of the waiting threads every predetermined time .
前記複数のスレッドのスレッド情報が記憶されるスレッド情報管理部、
前記スレッド情報管理部に記憶された待機状態にあるスレッドの数に基づいてスレッドの生成要求、及び前記待機状態にあるスレッドに対して処理の実行要求を行うスレッド実行処理部、及び、
前記スレッド情報管理部に記録された並列処理を行っている実行中スレッドの数と前記待機状態にある待機スレッドの数とを所定時間において監視し、該監視された前記実行中スレッドの数に応じて前記待機スレッドの不要数を前記所定時間毎に決定し、該決定された前記不要数の前記待機スレッドを前記所定時間毎に回収するスレッド回収処理部として機能させるためのプログラム。Computer
A thread information management unit for storing thread information of the plurality of threads ;
A thread generation request based on the number of threads in a standby state stored in the thread information management unit, and a thread execution processing unit that issues a process execution request to the thread in the standby state ; and
And the number of waiting threads in number and the standby state of the thread information management running is being performed the recorded parallel processing unit thread monitors at predetermined time, depending on the number of the running thread, which is the monitoring the unnecessary number of waiting threads is determined for each predetermined time, a program for functioning the waiting threads of the unnecessary number of the determined as a thread recovery unit for recovering every predetermined time Te.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001014611A JP3839259B2 (en) | 2000-01-25 | 2001-01-23 | Multithread control method, multithread control apparatus, recording medium, and program |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000016070 | 2000-01-25 | ||
JP2000-16070 | 2000-01-25 | ||
JP2001014611A JP3839259B2 (en) | 2000-01-25 | 2001-01-23 | Multithread control method, multithread control apparatus, recording medium, and program |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2001282553A JP2001282553A (en) | 2001-10-12 |
JP2001282553A5 JP2001282553A5 (en) | 2004-12-09 |
JP3839259B2 true JP3839259B2 (en) | 2006-11-01 |
Family
ID=26584117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001014611A Expired - Fee Related JP3839259B2 (en) | 2000-01-25 | 2001-01-23 | Multithread control method, multithread control apparatus, recording medium, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3839259B2 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4911552B2 (en) * | 2004-04-12 | 2012-04-04 | 富士通株式会社 | Multiple slip processing method, program, and apparatus |
JP2009009378A (en) | 2007-06-28 | 2009-01-15 | Brother Ind Ltd | Printing control apparatus and program |
JP5298974B2 (en) * | 2009-03-10 | 2013-09-25 | 株式会社リコー | DEVICE MANAGEMENT DEVICE, DEVICE MANAGEMENT SYSTEM, DEVICE MANAGEMENT METHOD, DEVICE MANAGEMENT PROGRAM, AND RECORDING MEDIUM CONTAINING THE PROGRAM |
JP6171658B2 (en) | 2013-07-19 | 2017-08-02 | 富士通株式会社 | Parallel processing optimization program, parallel processing optimization method, and information processing apparatus |
-
2001
- 2001-01-23 JP JP2001014611A patent/JP3839259B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001282553A (en) | 2001-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6219512B2 (en) | Virtual hadoop manager | |
US7137115B2 (en) | Method for controlling multithreading | |
JP4028674B2 (en) | Method and apparatus for controlling the number of servers in a multi-system cluster | |
US5349656A (en) | Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information | |
JP5417287B2 (en) | Computer system and computer system control method | |
EP2851799B1 (en) | Fault tolerant batch processing | |
JP5434616B2 (en) | Virtual machine, virtual machine monitor, and computer control method | |
CN106452818B (en) | Resource scheduling method and system | |
WO2021159638A1 (en) | Method, apparatus and device for scheduling cluster queue resources, and storage medium | |
JP2009541848A (en) | Method, system and apparatus for scheduling computer microjobs to run uninterrupted | |
US20060288159A1 (en) | Method of controlling cache allocation | |
JP2002202959A (en) | Virtual computer system for performing dynamic resource distribution | |
JP2004030363A (en) | Logical computer system, and method and program for controlling configuration of logical computer system | |
JP5347451B2 (en) | Multiprocessor system, conflict avoidance program, and conflict avoidance method | |
JP6786010B2 (en) | Information processing equipment, tuning method and tuning program | |
CN115617497A (en) | Thread processing method, scheduling component, monitoring component, server and storage medium | |
Zhang et al. | Workload consolidation in alibaba clusters: the good, the bad, and the ugly | |
JP4992740B2 (en) | Multiprocessor system, failure detection method, and failure detection program | |
JP3839259B2 (en) | Multithread control method, multithread control apparatus, recording medium, and program | |
US20090187614A1 (en) | Managing Dynamically Allocated Memory in a Computer System | |
JP4253796B2 (en) | Computer and control method | |
CN116127494A (en) | Control method and related device for concurrent access of users | |
JP3189810B2 (en) | QoS controller | |
CN117093335A (en) | Task scheduling method and device for distributed storage system | |
JP2921501B2 (en) | Task execution priority change method under high load in online processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060220 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060307 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060508 |
|
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: 20060801 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060802 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090811 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100811 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110811 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120811 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120811 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130811 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |