JP2003316590A - マルチスレッドプログラム - Google Patents

マルチスレッドプログラム

Info

Publication number
JP2003316590A
JP2003316590A JP2002119762A JP2002119762A JP2003316590A JP 2003316590 A JP2003316590 A JP 2003316590A JP 2002119762 A JP2002119762 A JP 2002119762A JP 2002119762 A JP2002119762 A JP 2002119762A JP 2003316590 A JP2003316590 A JP 2003316590A
Authority
JP
Japan
Prior art keywords
thread
job
threads
active threads
threshold value
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.)
Granted
Application number
JP2002119762A
Other languages
English (en)
Other versions
JP3932965B2 (ja
Inventor
Koji Fukuda
光司 福田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2002119762A priority Critical patent/JP3932965B2/ja
Publication of JP2003316590A publication Critical patent/JP2003316590A/ja
Application granted granted Critical
Publication of JP3932965B2 publication Critical patent/JP3932965B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 CPUネックやI/Oネックの発生をより厳
密に防止する。 【解決手段】 サーバ200のオペレーションシステム
上において複数のスレッド106、107及び108を
生成し、各スレッドがサーバ200の不図示のCPUで
並列に処理されて所定のジョブを実行するサーバアプリ
ケーション105であって、各スレッドは、サーバ20
0に、I/O待ちでないアクティブなスレッド数の情報
を取得する工程と、I/O待ちでないアクティブなスレ
ッド数の情報とを基に、サーバ200のI/O資源が枯
渇するか否かを判断する工程と、アクティブなスレッド
数の情報を取得する工程と、アクティブなスレッド数の
情報を基にサーバ200のCPU資源が枯渇するか否か
を判断する工程と、サーバ200のCPU資源及びI/
O資源のいずれも枯渇しないと判断した場合、ジョブを
実行するために当該スレッドに割り当てられたタスクを
処理する工程と、を実行させる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数のスレッドが
並列に処理されるマルチスレッドプログラムに関し、特
に、アクティブなスレッド数に加えI/O待ちスレッド
数に基づいて、輻輳制御を行うマルチスレッドプログラ
ムに関する。
【0002】
【従来の技術】近年、コンピュータにおいて実行される
アプリケーションプログラムは高機能化されており、電
子計算機が処理するデータ量も増加しているため、プロ
グラムの実行速度を高速化する必要がある。このため、
コンピュータに実行させるアプリケーションプログラム
をマルチスレッド化する手法が用いられる。
【0003】マルチスレッドプログラムとは、コンピュ
ータに実行させる処理をスレッドと呼ばれる最小単位に
分割して要求し、各スレッドごとにコンピュータに実行
させるプログラムである。一つのアプリケーションの処
理を複数のスレッドに分けて実行すれば処理効率を向上
できるため、プログラムのマルチスレッド化は、コンピ
ュータシステムにおいてアプリケーションの実行速度を
向上させる手法の一つとして用いられている。マルチス
レッドのアプリケーションプログラムは、CPUの処理
時間を非常に短い単位に分割し、複数のスレッドに順番
に割り当てることによって、複数の処理を同時に行って
いるようにみせている。
【0004】マルチスレッドプログラムにおいては、プ
ログラムを実行させるコンピュータのCPU資源やI/
O資源にトランザクション量が集中するとCPU資源や
I/O資源が枯渇してしまうことがあるため、所定量以
上のトランザクションが集中しないように制御を行う必
要がある。なお、本明細書中においては、CPU資源や
I/O資源にトランザクション量が集中することを「輻
輳」と、所定量以上のトランザクションが集中しないよ
うに制御することを「輻輳制御」と表現する。
【0005】例えば、マルチスレッド環境下のサーバ/
クライアントシステムにおいては、サーバのリソースや
スレッドの枯渇を防止するために輻輳制御を行い、一定
数のトランザクション以上は同時に処理しないようにす
る必要がある。
【0006】図11を用いて、従来のマルチスレッドプ
ログラムにおける輻輳制御を説明する。このサーバ/ク
ライアントシステムは、クライアント1101、110
2及び1103とサーバ2000とがネットワーク網1
104を介して接続されたシステムである。サーバ20
00は、サーバアプリケーション1105を実行する不
図示のCPUを有し、記憶装置1110が外付けされて
いる。サーバアプリケーション1105は、1〜nまで
の複数のスレッド(図は、n=3の場合)と輻輳情報1
109とを備える。輻輳情報1109は、アクティブな
スレッド数を管理するための情報である。スレッド11
06は、不図示のCPUが実行する処理であり、要求電
文受信部1111、輻輳情報加算部1112、輻輳制御
部1113、業務処理部1114、輻輳情報減算部11
15及び応答電文受信部1116を有する。要求電文受
信部1111は、ネットワーク網1104を介してクラ
イアント1101、1102及び1103から電文を受
信する機能である。なお、「電文」とは、所定の通信プ
ロトコルに従って送受信される固定長又は可変長のデー
タである。輻輳情報加算部1112は、輻輳情報110
9内のアクティブなスレッド数をインクリメントする機
能である。輻輳制御部1113は、輻輳情報109を基
に、一定数以上のトランザクションを同時に処理しない
ように制御する機能である。業務処理部1114は、ク
ライアントから要求された処理を実行する機能である。
輻輳情報減算部1115は、輻輳情報1109内のアク
ティブなスレッド数をデクリメントする機能である。応
答電文送信部1116は、ネットワーク網1104を介
してクライアント1101、1102及び1103へ電
文を送信する機能である。上記各部は、不図示のCPU
にそれぞれの機能を実現させる。なお、スレッド110
7及びスレッド1108はスレッド1106と同様の構
成である。
【0007】不図示のCPUがスレッド106を実行す
る場合、サーバアプリケーション1105は、業務処理
部1114を実行する前後に輻輳情報加算部1112及
び輻輳情報減算部1115を用いて輻輳情報1109内
のアクティブスレッド数を管理し、スレッドを実行する
か否かを輻輳制御部1113が輻輳情報1109内のア
クティブスレッド数に基づいて判断することによってマ
ルチスレッド制御を行っていた。
【0008】
【発明が解決しようとする課題】しかし、従来のマルチ
スレッド制御では、サーバアプリケーション1105内
のスレッドの枯渇とスレッドを実行する不図示のCPU
のネックとを単一のアクティブスレッド数から成る輻輳
情報で制御していたため、CPUネックやI/Oネック
を十分に防止することができなかった。
【0009】本発明はかかる問題に鑑みてなされたもの
であり、CPUネックやI/Oネックの発生をより厳密
に防止することを目的とする。
【0010】
【課題を解決するための手段】上記目的を達成するた
め、本発明は、第1の態様として、コンピュータのオペ
レーションシステム上において複数のスレッドを生成
し、各スレッドがコンピュータで並列に処理されて所定
のジョブを実行するマルチスレッドプログラムであっ
て、各スレッドは、コンピュータに、I/O待ちでない
アクティブなスレッド数の情報を取得する工程と、I/
O待ちでないアクティブなスレッド数の情報を基に、当
該コンピュータのI/O資源が枯渇するか否かを判断す
る工程と、アクティブなスレッド数の情報を取得する工
程と、アクティブなスレッド数の情報を基に当該コンピ
ュータの演算処理手段のハードウエア資源が枯渇するか
否かを判断する工程と、演算処理手段のハードウエア資
源及びI/O資源のいずれも枯渇しないと判断した場
合、ジョブを実行するために当該スレッドに割り当てら
れたタスクを処理する工程と、を実行させることを特徴
とするマルチスレッドプログラムを提供するものであ
る。
【0011】また、上記目的を達成するため、本発明
は、第2の態様として、コンピュータのオペレーション
システム上において複数のスレッドを生成し、各スレッ
ドがコンピュータで並列に処理されて所定のジョブを実
行するマルチスレッドプログラムであって、各スレッド
は、コンピュータに、アクティブなスレッド数の情報を
取得する工程と、I/O待ちでないアクティブなスレッ
ド数の情報を取得する工程と、アクティブなスレッド数
とI/O待ちでないアクティブなスレッド数との差を算
出する算出工程と、算出工程における演算結果を基に、
当該コンピュータのI/O資源が枯渇するか否かを判断
する工程と、アクティブなスレッド数の情報を基に、当
該コンピュータの演算処理手段のハードウエア資源が枯
渇するか否かを判断する工程と、演算処理手段のハード
ウエア資源及びI/O資源のいずれも枯渇しないと判断
した場合、ジョブを実行するために当該スレッドに割り
当てられたタスクを処理する工程と、を実行させること
を特徴とするマルチスレッドプログラムを提供するもの
である。
【0012】また、上記目的を達成するため、本発明
は、第3の態様として、コンピュータのオペレーション
システム上において複数のスレッドを生成し、各スレッ
ドがコンピュータで並列に処理されて所定のジョブを実
行するマルチスレッドプログラムであって、各スレッド
は、コンピュータに、I/O待ちでないアクティブなス
レッド数の情報を取得する工程と、I/O待ちでないア
クティブなスレッド数が、当該コンピュータのI/O資
源に基づいて予め設定された閾値を超えるか否かを判断
する第1の判断工程と、アクティブなスレッド数の情報
を取得する工程と、アクティブなスレッド数が、当該コ
ンピュータの演算処理手段のハードウエア資源に基づい
て予め設定された閾値を超えるか否かを判断する第2の
判断工程と、第1及び第2の判断工程のいずれにおいて
も閾値以下であると判断された場合、ジョブを実行する
ために当該スレッドに割り当てられたタスクを処理する
工程と、を実行させることを特徴とするマルチスレッド
プログラムを提供するものである。上記本発明の第3の
態様において、演算処理手段のハードウエア資源に基づ
いて設定される閾値aと、I/O資源に基づいて設定さ
れる閾値bと、当該マルチスレッドプログラムがジョブ
を実行するために生成する全スレッド数cとの間に、a
<b<cの関係が成り立つことが好ましい。
【0013】また、上記目的を達成するため、本発明
は、第4の態様として、コンピュータのオペレーション
システム上において複数のスレッドを生成し、各スレッ
ドがコンピュータで並列に処理されて所定のジョブを実
行するマルチスレッドプログラムであって、各スレッド
は、コンピュータに、アクティブなスレッド数の情報を
取得する工程と、I/O待ちでないアクティブなスレッ
ド数を取得する工程と、アクティブなスレッド数とI/
O待ちでないアクティブなスレッド数との差を算出する
算出工程と、算出手段の演算結果が、当該コンピュータ
のI/O資源に基づいて予め設定された閾値を超えるか
否かを判断する第1の判断工程と、アクティブなスレッ
ド数が、当該コンピュータの演算処理手段のハードウエ
ア資源に基づいて予め設定された閾値を超えるか否かを
判断する第2の判断工程と、第1及び第2の判断工程の
いずれにおいても閾値以下であると判断された場合、ジ
ョブを実行するために当該スレッドに割り当てられたタ
スクを処理する工程と、を実行させることを特徴とする
マルチスレッドプログラムを提供するものである。上記
本発明の第4の態様において、演算処理手段のハードウ
エア資源に基づいて設定される閾値aと、I/O資源に
基づいて設定される閾値bと、当該マルチスレッドプロ
グラムがジョブを実行するために生成する全スレッド数
cとの間に、b<a<cの関係が成り立つことが好まし
い。
【0014】また、上記目的を達成するため、本発明
は、第5の態様として、コンピュータのオペレーション
システム上において複数のスレッドを生成し、各スレッ
ドがコンピュータで並列に処理されて所定のジョブを実
行するマルチスレッドプログラムであって、各スレッド
は、コンピュータを、アクティブなスレッド数の情報を
取得する手段と、I/O待ちでないアクティブなスレッ
ド数の情報を取得する手段と、I/O待ちでないアクテ
ィブなスレッド数の情報を基に、当該コンピュータのI
/O資源が枯渇するか否かを判断する手段と、アクティ
ブなスレッド数の情報を基に当該コンピュータの演算処
理手段のハーウエア資源が枯渇するか否かを判断する手
段と、演算処理手段のハードウエア資源及びI/O資源
のいずれも枯渇しないと判断した場合、ジョブを実行す
るために当該スレッドに割り当てられたタスクを処理す
る手段と、として機能させることを特徴とするマルチス
レッドプログラムを提供するものである。
【0015】また、上記目的を達成するため、本発明
は、第6の態様として、コンピュータのオペレーション
システム上において複数のスレッドを生成し、各スレッ
ドがコンピュータで並列に処理されて所定のジョブを実
行するマルチスレッドプログラムであって、各スレッド
は、コンピュータを、アクティブなスレッド数の情報を
取得する手段と、I/O待ちでないアクティブなスレッ
ド数の情報を取得する手段と、アクティブなスレッド数
とI/O待ちでないアクティブなスレッド数との差を算
出する算出手段と、算出手段の演算結果を基に、当該コ
ンピュータのI/O資源が枯渇するか否かを判断する手
段と、アクティブなスレッド数の情報を基に、当該コン
ピュータの演算処理手段のハードウエア資源が枯渇する
か否かを判断する手段と、演算処理手段のハードウエア
資源及びI/O資源のいずれも枯渇しないと判断した場
合、ジョブを実行するために当該スレッドに割り当てら
れたタスクを処理する手段と、として機能させることを
特徴とするマルチスレッドプログラムを提供するもので
ある。
【0016】また、上記目的を達成するため、本発明
は、第7の態様として、コンピュータのオペレーション
システム上において複数のスレッドを生成し、各スレッ
ドがコンピュータで並列に処理されて所定のジョブを実
行するマルチスレッドプログラムであって、各スレッド
は、コンピュータを、アクティブなスレッド数の情報を
取得する手段と、I/O待ちでないアクティブなスレッ
ド数の情報を取得する手段と、I/O待ちでないアクテ
ィブなスレッド数が、当該コンピュータのI/O資源に
基づいて予め設定された閾値を超えるか否かを判断する
第1の判断手段と、アクティブなスレッド数が、当該コ
ンピュータの演算処理手段のハードウエア資源に基づい
て予め設定された閾値を超えるか否かを判断する第2の
判断手段と、第1及び第2の判断手段のいずれにおいて
も閾値以下であると判断された場合、ジョブを実行する
ために当該スレッドに割り当てられたタスクを処理する
手段と、として機能させることを特徴とするマルチスレ
ッドプログラムを提供するものである。上記本発明の第
7の態様において、演算処理手段のハードウエア資源に
基づいて設定される閾値aと、I/O資源に基づいて設
定される閾値bと、当該マルチスレッドプログラムがジ
ョブを実行するために生成する全スレッド数cとの間
に、a<b<cの関係が成り立つことが好ましい。
【0017】また、上記目的を達成するため、本発明
は、第8の態様として、コンピュータのオペレーション
システム上において複数のスレッドを生成し、各スレッ
ドがコンピュータで並列に処理されて所定のジョブを実
行するマルチスレッドプログラムであって、各スレッド
は、コンピュータを、アクティブなスレッド数の情報を
取得する手段と、I/O待ちでないアクティブなスレッ
ド数を取得する手段と、アクティブなスレッド数とI/
O待ちでないアクティブなスレッド数との差を算出する
算出手段と、算出手段の演算結果が、当該コンピュータ
のI/O資源に基づいて予め設定された閾値を超えるか
否かを判断する第1の判断手段と、アクティブなスレッ
ド数が、当該コンピュータの演算処理手段のハードウエ
ア資源に基づいて予め設定された閾値を超えるか否かを
判断する第2の判断手段と、第1及び第2の判断手段の
いずれにおいても閾値以下であると判断された場合、ジ
ョブを実行するために当該スレッドに割り当てられたタ
スクを処理する手段と、として機能させることを特徴と
するマルチスレッドプログラムを提供するものである。
上記本発明の第8の態様において、演算処理手段のハー
ドウエア資源に基づいて設定される閾値aと、I/O資
源に基づいて設定される閾値bと、当該マルチスレッド
プログラムがジョブを実行するために生成する全スレッ
ド数cとの間に、b<a<cの関係が成り立つことが好
ましい。
【0018】また、上記目的を達成するため、本発明
は、第9の態様として、少なくとも一つのクライアント
が接続されるサーバのオペレーションシステム上におい
て複数のスレッドを生成し、各スレッドが並列に処理さ
れてクライアントから要求されたジョブを実行するマル
チスレッドプログラムであって、各スレッドは、サーバ
の演算処理手段に、クライアントからジョブを実行する
ためのタスクの処理要求を取得する工程と、I/O待ち
でないアクティブなスレッド数の情報を取得する工程
と、I/O待ちでないアクティブなスレッド数の情報を
基に、当該サーバのI/O資源が枯渇するか否かを判断
する工程と、アクティブなスレッド数の情報を取得する
工程と、アクティブなスレッド数の情報を基に当該演算
処理手段のハーウエア資源が枯渇するか否かを判断する
工程と、当該演算処理手段のハードウエア資源及びI/
O資源のいずれも枯渇しないと判断した場合、ジョブを
実行するために当該スレッドに割り当てられたタスクを
処理する業務処理工程と、業務処理工程において処理さ
れたデータをジョブの処理要求の送信元であるクライア
ントへ送信する工程と、を実行させることを特徴とする
マルチスレッドプログラムを提供するものである。
【0019】また、上記目的を達成するため、本発明
は、第10の態様として、少なくとも一つのクライアン
トが接続されるサーバのオペレーションシステム上にお
いて複数のスレッドに分割され、各スレッドが並列に処
理されてクライアントから要求されたジョブを実行する
マルチスレッドプログラムであって、各スレッドは、サ
ーバの演算処理手段に、クライアントからジョブを実行
するためのタスクの処理要求を取得する工程と、アクテ
ィブなスレッド数の情報を取得する工程と、I/O待ち
でないアクティブなスレッド数の情報を取得する工程
と、アクティブなスレッド数とI/O待ちでないアクテ
ィブなスレッド数との差を算出する算出工程と、算出手
段の演算結果を基に、当該サーバのI/O資源が枯渇す
るか否かを判断する工程と、アクティブなスレッド数の
情報を基に、当該演算処理手段のハードウエア資源が枯
渇するか否かを判断する工程と、演算処理手段のハード
ウエア資源及びI/O資源のいずれも枯渇しないと判断
した場合、ジョブを実行するために当該スレッドに割り
当てられたタスクを処理する業務処理工程と、業務処理
工程において処理されたデータをジョブの処理要求の送
信元であるクライアントへ送信する工程と、を実行させ
ることを特徴とするマルチスレッドプログラムを提供す
るものである。
【0020】また、上記目的を達成するため、本発明
は、第11の態様として、少なくとも一つのクライアン
トが接続されるサーバのオペレーションシステム上にお
いて複数のスレッドに分割され、各スレッドが並列に処
理されてクライアントから要求されたジョブを実行する
マルチスレッドプログラムであって、各スレッドは、サ
ーバの演算処理手段に、クライアントからジョブを実行
するためのタスクの処理要求を取得する工程と、I/O
待ちでないアクティブなスレッド数の情報を取得する工
程と、I/O待ちでないアクティブなスレッド数が、当
該サーバのI/O資源に基づいて予め設定された閾値を
超えるか否かを判断する第1の判断工程と、アクティブ
なスレッド数の情報を取得する工程と、アクティブなス
レッド数が、当該演算処理手段のハードウエア資源に基
づいて予め設定された閾値を超えるか否かを判断する第
2の判断工程と、第1及び第2の判断工程のいずれにお
いても閾値以下であると判断された場合に、ジョブを実
行するために当該スレッドに割り当てられたタスクを処
理する業務処理工程と、業務処理工程において処理され
たデータをジョブの処理要求の送信元であるクライアン
トへ送信する工程と、を実行させることを特徴とするマ
ルチスレッドプログラムを提供するものである。上記本
発明の第11の態様において、演算処理手段のハードウ
エア資源に基づいて設定される閾値aと、I/O資源に
基づいて設定される閾値bと、当該マルチスレッドプロ
グラムがジョブを実行するために生成する全スレッド数
cとの間に、a<b<cの関係が成り立つことが好まし
い。
【0021】また、上記目的を達成するため、本発明
は、第12の態様として、少なくとも一つのクライアン
トが接続されるサーバのオペレーションシステム上にお
いて複数のスレッドに分割され、各スレッドが並列に処
理されてクライアントから要求されたジョブを実行する
マルチスレッドプログラムであって、各スレッドは、サ
ーバの演算処理手段に、クライアントからジョブを実行
するためのタスクの処理要求を取得する工程と、アクテ
ィブなスレッド数の情報を取得する工程と、I/O待ち
でないアクティブなスレッド数を取得する工程と、アク
ティブなスレッド数とI/O待ちでないアクティブなス
レッド数との差を算出する算出工程と、算出工程におけ
る演算結果が、当該サーバのI/O資源に基づいて予め
設定された閾値を超えるか否かを判断する第1の判断工
程と、アクティブなスレッド数が、当該演算処理手段の
ハードウエア資源に基づいて予め設定された閾値を超え
るか否かを判断する第2の判断工程と、第1及び第2の
判断工程のいずれにおいても閾値以下であると判断され
た場合に、ジョブを実行するために当該スレッドに割り
当てられたタスクを処理する業務処理工程と、業務処理
工程において処理されたデータをジョブの処理要求の送
信元であるクライアントへ送信する工程と、を実行させ
ることを特徴とするマルチスレッドプログラムを提供す
るものである。上記本発明の第12の態様において、演
算処理手段のハードウエア資源に基づいて設定される閾
値aと、I/O資源に基づいて設定される閾値bと、当
該マルチスレッドプログラムがジョブを実行するために
生成する全スレッド数cとの間に、b<a<cの関係が
成り立つことが好ましい。
【0022】また、上記目的を達成するため、本発明
は、第13の態様として、少なくとも一つのクライアン
トが接続されるサーバのオペレーションシステム上にお
いて複数のスレッドを生成し、各スレッドが並列に処理
されてクライアントから要求されたジョブを実行するマ
ルチスレッドプログラムであって、各スレッドは、サー
バの演算処理手段を、クライアントからジョブを実行す
るためのタスクの処理要求を取得する手段と、アクティ
ブなスレッド数の情報を取得する手段と、I/O待ちで
ないアクティブなスレッド数の情報を取得する手段と、
I/O待ちでないアクティブなスレッド数の情報を基
に、当該サーバのI/O資源が枯渇するか否かを判断す
る手段と、アクティブなスレッド数の情報を基に当該演
算処理手段のハーウエア資源が枯渇するか否かを判断す
る手段と、当該演算処理手段のハードウエア資源及びI
/O資源のいずれも枯渇しないと判断した場合、ジョブ
を実行するために当該スレッドに割り当てられたタスク
を処理する業務処理手段と、業務処理手段が処理したデ
ータをジョブの処理要求の送信元であるクライアントへ
送信する手段と、として機能させることを特徴とするマ
ルチスレッドプログラムを提供するものである。
【0023】また、上記目的を達成するため、本発明
は、第14の態様として、少なくとも一つのクライアン
トが接続されるサーバのオペレーションシステム上にお
いて複数のスレッドに分割され、各スレッドが並列に処
理されてクライアントから要求されたジョブを実行する
マルチスレッドプログラムであって、各スレッドは、サ
ーバの演算処理手段を、クライアントからジョブを実行
するためのタスクの処理要求を取得する手段と、アクテ
ィブなスレッド数の情報を取得する手段と、I/O待ち
でないアクティブなスレッド数の情報を取得する手段
と、アクティブなスレッド数とI/O待ちでないアクテ
ィブなスレッド数との差を算出する算出手段と、算出手
段の演算結果を基に、当該サーバのI/O資源が枯渇す
るか否かを判断する手段と、アクティブなスレッド数の
情報を基に、当該演算処理手段のハードウエア資源が枯
渇するか否かを判断する手段と、演算処理手段のハード
ウエア資源及びI/O資源のいずれも枯渇しないと判断
した場合、ジョブを実行するために当該スレッドに割り
当てられたタスクを処理する業務処理手段と、業務処理
手段が処理したデータをジョブの処理要求の送信元であ
るクライアントへ送信する手段と、として機能させるこ
とを特徴とするマルチスレッドプログラムを提供するも
のである。
【0024】また、上記目的を達成するため、本発明
は、第15の態様として、少なくとも一つのクライアン
トが接続されるサーバのオペレーションシステム上にお
いて複数のスレッドに分割され、各スレッドが並列に処
理されてクライアントから要求されたジョブを実行する
マルチスレッドプログラムであって、各スレッドは、サ
ーバの演算処理手段を、クライアントからジョブを実行
するためのタスクの処理要求を取得する手段と、アクテ
ィブなスレッド数の情報を取得する手段と、I/O待ち
でないアクティブなスレッド数の情報を取得する手段
と、I/O待ちでないアクティブなスレッド数が、当該
サーバのI/O資源に基づいて予め設定された閾値を超
えるか否かを判断する第1の判断手段と、アクティブな
スレッド数が、当該演算処理手段のハードウエア資源に
基づいて予め設定された閾値を超えるか否かを判断する
第2の判断手段と、第1及び第2の判断手段のいずれに
おいても閾値以下であると判断された場合に、ジョブを
実行するために当該スレッドに割り当てられたタスクを
処理する業務処理手段と、業務処理手段が処理したデー
タをジョブの処理要求の送信元であるクライアントへ送
信する手段と、として機能させることを特徴とするマル
チスレッドプログラムを提供するものである。上記本発
明の第15の態様において、演算処理手段のハードウエ
ア資源に基づいて設定される閾値aと、I/O資源に基
づいて設定される閾値bと、当該マルチスレッドプログ
ラムがジョブを実行するために生成する全スレッド数c
との間に、a<b<cの関係が成り立つことが好まし
い。
【0025】また、上記目的を達成するため、本発明
は、第16の態様として、少なくとも一つのクライアン
トが接続されるサーバのオペレーションシステム上にお
いて複数のスレッドに分割され、各スレッドが並列に処
理されてクライアントから要求されたジョブを実行する
マルチスレッドプログラムであって、各スレッドは、サ
ーバの演算処理手段を、クライアントからジョブを実行
するためのタスクの処理要求を取得する手段と、アクテ
ィブなスレッド数の情報を取得する手段と、I/O待ち
でないアクティブなスレッド数を取得する手段と、アク
ティブなスレッド数とI/O待ちでないアクティブなス
レッド数との差を算出する算出手段と、算出手段の演算
結果が、当該サーバのI/O資源に基づいて予め設定さ
れた閾値を超えるか否かを判断する第1の判断手段と、
アクティブなスレッド数が、当該演算処理手段のハード
ウエア資源に基づいて予め設定された閾値を超えるか否
かを判断する第2の判断手段と、第1及び第2の判断手
段のいずれにおいても閾値以下であると判断された場合
に、ジョブを実行するために当該スレッドに割り当てら
れたタスクを処理する業務処理手段と、業務処理手段が
処理したデータをジョブの処理要求の送信元であるクラ
イアントへ送信する手段と、として機能させることを特
徴とするマルチスレッドプログラムを提供するものであ
る。上記本発明の第16の態様において、演算処理手段
のハードウエア資源に基づいて設定される閾値aと、I
/O資源に基づいて設定される閾値bと、当該マルチス
レッドプログラムがジョブを実行するために生成する全
スレッド数cとの間に、b<a<cの関係が成り立つこ
とが好ましい。
【0026】〔作用〕本発明によるマルチスレッドプロ
グラムは、CPU処理中のスレッドの数とI/O待ちの
スレッドの数とを別個にカウントし、それぞれの値に基
づいて輻輳制御を実行する。これによって、従来よりも
厳密にCPUネックやI/Oネックによる輻輳を防止で
きる。
【0027】
【発明の実施の形態】〔第1の実施形態〕本発明を好適
に実施した第1の実施形態について説明する。図1に、
本実施形態によるマルチスレッド制御を行うサーバ/ク
ライアントシステムを示す。このシステムは、クライア
ント101,102及び103とサーバ200とがネッ
トワーク網104を介して接続されたシステムである。
サーバ200は、サーバアプリケーション105を実行
する不図示のCPUを有し、記憶装置110が外付けさ
れている。サーバ200は、共有メモリ対称型マルチプ
ロセッサ(Symmetric MultiProcessor:SMP)マシンであ
ることが好ましいが、分散共有型マルチプロセッサマシ
ンや大規模並列マルチプロセッサマシンであってもよ
い。なお、記憶装置110は、サーバ200に内蔵され
ていても構わない。サーバアプリケーション105は、
1〜n(nは任意の自然数)までの複数のスレッドと輻
輳情報109とを有する。なお、図では説明の簡略化の
ため、n=3の場合を例として説明するが、実際にはサ
ーバアプリケーション上に数百から数千のスレッドが存
在する。また、各スレッドは同一のロジックによって構
成されており、一つのトランザクションがn個のスレッ
ドによって処理される。輻輳情報109は、アクティブ
なスレッド数とI/O待ちでないアクティブなスレッド
数とを管理するための情報である。
【0028】スレッド106は、不図示のCPUが実行
する処理であり、要求電文受信部111、輻輳情報加算
部112、輻輳制御部113、業務処理部114、輻輳
情報減算部118及び応答電文受信部119を有する。
要求電文受信部111は、ネットワーク網104からト
リガを受け、要求電文を受信する機能である。換言する
と、ネットワーク網104を介してクライアント10
1、102及び103から電文を受信する機能である。
輻輳情報加算部112は、輻輳情報109内のアクティ
ブなスレッド数を加算する機能である。輻輳制御部11
3は、輻輳情報109に基づいて輻輳制御を行い、過負
荷になった場合、業務処理部114に制御を渡すことな
く、エラー電文を要求元のクライアントに返却する機能
である。業務処理部114は、要求電文に従ってファイ
ルアクセス、更新などの処理を行う機能である。輻輳情
報減算部118は、要求電文に対する処理の終了時にア
クティブスレッド数及びI/O待ちでないアクティブス
レッド数を減算する機能である。応答電文送信部119
は、処理結果の応答電文を送信する機能であり、換言す
ると、ネットワーク網104を介してクライアント10
1、102及び103へ応答電文を送信する機能であ
る。上記各部は、不図示のCPUにそれぞれの機能を実
現させる。なお、スレッド107及びスレッド108は
スレッド106と同様の構成である。
【0029】業務処理部114は、I/O時輻輳情報減
算部115、I/O命令実行部116及びI/O時輻輳
情報加算部117を有する。I/O時輻輳情報減算部1
15は、I/O命令の実行前に、I/O待ちでないアク
ティブスレッド数をデクリメントする機能である。I/
O命令実行部116は、記憶装置110に対するread/w
rite/delete 等のI/O命令を実行する機能である。I
/O時輻輳情報加算部117は、I/O命令の実行完了
時に、I/O待ちでないアクティブスレッドをインクリ
メントする機能である。業務処理部114内の各部も不
図示のCPUにそれぞれの機能を実現させる。I/O時
輻輳情報減算部115及びI/O時輻輳情報加算部によ
って、I/O命令の期間中アクティブスレッド数はデク
リメントされることとなる。
【0030】図2に、輻輳情報109のデータ構造を示
す。図に示すように、輻輳情報109は、輻輳情報管理
用ミューテックス201、アクティブスレッド数202
及びI/O待ちでないアクティブスレッド数203を有
する。輻輳管理ミューテックス201は、スレッドから
の参照/更新に関する排他処理を行う。アクティブスレ
ッド数202は、アクティブなスレッド(トリガ待ちで
ない現在処理実行中のスレッド)の数を示す。I/O待
ちでないアクティブスレッド数203は、I/O待ちで
ないアクティブスレッドの数を示す。輻輳情報管理用ミ
ューテックス201の実装には、スレッドの排他制御が
可能なカーネルオブジェクトをOSに応じて用いる。例
えば、UNIX(登録商標)の場合は、pthread ライブ
ラリが提供するpthread _mutex _t 構造体を利用す
る。また、各オブジェクトの初期値は、サーバアプリケ
ーションの起動時にユーザが任意に設定することが可能
である。
【0031】図3〜7を用いてサーバスレッド105の
動作の流れの一例を説明する。なお、以下の説明は、O
SとしてUNIX(登録商標)を用いた場合の例であ
る。図3に、輻輳情報加算部112の動作の流れの一例
を示す。輻輳情報加算部112は、輻輳情報109内の
輻輳情報管理用ミューテックス201をpthread _mute
x _t でロックする(ステップS301)。ロックによ
る利用権取得成功後、輻輳情報加算部112は、輻輳情
報109のアクティブスレッド数201及びI/O待ち
でないアクティブスレッド数をインクリメント(加算)
する(ステップS302、S303)。輻輳情報加算部
112は、インクリメントする際に、以降の処理に備え
て不図示のメモリなどのスタック領域にアクティブスレ
ッド数及びI/O待ちでないアクティブスレッド数を保
持させておく。その後、輻輳情報加算部112は、輻輳
情報109内の輻輳情報管理用ミューテックス201を
pthread _mutex _t でアンロックする(ステップS3
04)。
【0032】図4に、輻輳制御部113の動作の流れの
一例を示す。この動作例において、輻輳制御部113
は、CPU資源に応じた規制値x、スレッド資源に応じ
た規制値y及びサーバアプリケーション105が持つ業
務処理を行う全スレッド数zに基づいて動作する。な
お、各規制値は、 規制値x<規制値y<全スレッド数z が成立するように設定する。この設定は、ライブラリの
実装時に行うようにしても良いし、ユーザが任意に設定
できるようにしてもよい。
【0033】輻輳制御部113は、上記スタック領域上
のI/O待ちでないアクティブスレッド数が規制値xよ
り大きいか否かを判断する(ステップS401)。スタ
ック上のアクティブスレッド数が規制値xよりも小さい
場合(ステップS401/No)、輻輳制御部113
は、上記スタック領域上のアクティブスレッド数が規制
値yよりも大きいか否かを判断する(ステップS40
2)。上記スタック領域上のアクティブスレッド数が規
制値yよりも小さい場合(ステップS402/No)、
輻輳制御部113はCPUネックによる輻輳が発生しな
いと判断して、引き続き不図示のCPUに業務処理部1
14を行わせる。
【0034】一方、I/O待ちでないアクティブスレッ
ド数が規制値xよりも大きい場合(ステップS401/
Yes)、または、アクティブスレッド数が規制値yよ
りも大きい場合(ステップS402/Yes)、輻輳制
御部113は、エラー処理(ステップS403〜S40
7の処理)を実行する。エラー処理実行時に輻輳制御部
113は、クライアント101に対して輻輳エラーの電
文を返却する(ステップS403)。次に、輻輳制御部
113は、輻輳情報109の輻輳管理用ミューテックス
201をpthread _mutex _lockでロックする(ステッ
プS404)。ロックによる利用権取得成功後、輻輳制
御部113は、輻輳情報109のアクティブスレッド数
202及びI/O待ちでないアクティブスレッド数をデ
クリメントする(ステップS405、S406)。そし
て、輻輳制御部113は、輻輳情報管理用ミューテック
ス201をpthread _mutex _unlockでアンロックする
(ステップS407)。輻輳制御部113は、エラー処
理終了後、業務処理部114を実行せずに処理を終了す
る。
【0035】業務処理部114は、要求電文の内容に応
じて必要な処理を実行するサーバアプリケーション10
5本来の機能であるが、その中で記憶装置110に対す
るI/O処理を実行する。図5及び図6を用いて業務処
理部114の動作を説明する。図5に、I/O時輻輳情
報減算部115の動作の流れの一例を示す。まず、I/
O時輻輳情報減算部115は、輻輳情報109内の輻輳
情報管理用ミューテックス201をロックする(ステッ
プS501)。次に、I/O時輻輳情報減算部115
は、輻輳情報109内のI/O待ちでないアクティブス
レッド数202をデクリメントする(ステップS50
2)。その後、I/O時輻輳情報減算部115は、輻輳
情報109内の輻輳情報管理用ミューテック201をア
ンロックする(ステップS503)。I/O時輻輳情報
減算部115での処理が終了すると、I/O命令実行部
116は、記憶装置110に対して、read/write/delet
e 等のI/O命令を実行する。I/O命令が完了すると
I/O時輻輳情報加算部117が処理を行う。図6に、
I/O時輻輳情報加算部117の動作の流れの一例を示
す。まず。I/O時輻輳情報加算部117は、輻輳情報
109内の輻輳情報管理用ミューテックス201をロッ
クする(ステップS601)。次に、I/O時輻輳情報
加算部117は、輻輳情報109内のI/O待ちでない
アクティブスレッド数202をインクリメントする(ス
テップS602)。その後、I/O時輻輳情報加算部1
17は、輻輳情報109内の輻輳情報管理用ミューテッ
ク201をアンロックする(ステップS603)。
【0036】これにより、輻輳情報109内のI/O待
ちでないスレッド数203は、業務処理部114がCP
U資源を消費する間だけ輻輳制御部113よって+1さ
れた状態となり、I/Oを実行している間は+1されて
いない状態となる。これは、サーバアプリケーション1
05のうちCPU資源を消費中のスレッド数を表す数値
となる。
【0037】業務処理部114が完了すると、輻輳情報
減算部118の処理が行われる。図7に、輻輳情報減算
部118の動作の流れの一例を示す。まず、輻輳情報減
算部118は、輻輳情報109内の輻輳情報管理用ミュ
ーテックス201をロックする(ステップS701)。
ロックによる利得権取得成功後、輻輳情報減算部118
は、輻輳情報109内のアクティブスレッド数202及
びI/O待ちでないアクティブスレッド数203をデク
リメントする(ステップS702、S703)。そし
て、輻輳情報減算部118は、輻輳情報109内の輻輳
情報管理用ミューテックス201をアンロックする(ス
テップS704)。
【0038】輻輳情報減算部118の動作が終了する
と、応答電文送信部119は、正常終了時の応答電文を
クライアント101に返却する。サーバ200は、クラ
イアントからの要求を上記の動作によって処理する。
【0039】図8を用いて従来の輻輳制御と本実施形態
による輻輳制御の違いを説明する。図に示すように、従
来の輻輳制御においては、“アクティブスレッド数”の
みをパラメータとして輻輳制御を行っていた。よって、
I/O待ちスレッド数は、アクティブスレッド数に応じ
た規制値(y)を基に推定値として決定せざるを得なか
った。よって、I/O待ちスレッド数が予測した値より
も少なかった場合、CPU資源が枯渇しCPUネックが
発生してしまう。これに対し、本実施形態による輻輳制
御では、“アクティブスレッド数”に基づいた制御に加
え、業務処理部内でのI/O命令実行時に減算される
“I/O待ちでないアクティブスレッド数”に応じた規
制値(x)をさらに設けている。これによって、動的
に、かつ厳密に計算されたI/O待ちスレッド数に応じ
て、CPUネックが生じないように制御できる。
【0040】このように、本実施形態によれば、I/O
待ちではないアクティブスレッド数を業務処理部内で動
的にカウントすることによって、CPU資源の枯渇をよ
り厳密に防止できる。
【0041】〔第2の実施形態〕本発明を好適に実施し
た第2の実施形態について説明する。本実施形態による
サーバの200の構成は、第1の実施形態と同様である
が、輻輳制御部113は異なる処理を行う。図9に、本
実施形態による輻輳制御部113の動作の流れの一例を
示す。輻輳制御部113は、スタック上のアクティブス
レッド数305からスタック上のI/O待ちでないアク
ティブスレッド数306を引いた数値を求める。この数
値は、サーバアプリケーション105がI/O待ちをし
ているスレッド数を示す。輻輳制御部113は、この数
値が規制値xより大きいか否かを判断する(ステップS
901)。規制値xの方が大きい場合(ステップS90
1/No)、輻輳制御部113は、スタック上のアクテ
ィブスレッド数305が規制値yよりも大きいか否かを
判断する(ステップS902)。規制値yの方が大きい
場合(ステップS902/No)、輻輳制御部113は
輻輳が発生しないと判断して、引き続き不図示のCPU
にに業務処理部114を行わせる。
【0042】一方、規制値xの方が小さい場合(ステッ
プS901/Yes)、または、規制値xの方が小さい
場合(ステップS902/Yes)、輻輳制御部113
は、エラー処理(ステップS903〜S907の処理)
を実行する。エラー処理は、第1の実施形態と同様であ
る。以上の動作によって、CPU資源の枯渇に基づくC
PUネックよりもI/Oネックが発生しやすいサーバに
おいて、I/Oネックの発生を防止できる。
【0043】図10を用いて、従来の輻輳制御と本実施
形態による輻輳制御との違いを説明する。図に示すよう
に、従来の輻輳制御においては、“アクティブスレッド
数”のみをパラメータとして輻輳制御を行っていた。よ
って、I/O待ちアクティブスレッドによる規制値は、
アクティブスレッド数による規制値(y)を基に推定値
として決定せざるを得なかった。このため、CPU処理
スレッドが予測した値よりも少なかった場合、I/O資
源が枯渇しI/Oネックが発生してしまう。これに対
し、本発明による輻輳制御では、“アクティブスレッド
数”による制御に加え、業務処理部内でのI/O命令実
行時に減算される“I/O待ちでないアクティブスレッ
ド数”に応じた規制値(x)をさらに設けている。これ
によって、動的に、かつ厳密に計算されたI/O待ちス
レッド数に応じて、I/Oネックが生じないように制御
できる。
【0044】なお、上記各実施形態は、本発明の好適な
実施の一例であり、本発明はこれに限定されるものでは
ない。例えば、上記各実施形態はクライアント/サーバ
システムにおけるサーバアプリケーションを例として説
明を行ったが、特定のハードウエア構成に限定されるも
のではなく、マルチスレッド環境下のコンピュータ上で
実行されるプログラムであればよい。また、上記各実施
形態では、サーバ200の演算処理手段としてCPUを
例に説明したが、これに限定されることはなく、処理す
る情報量に応じて変更してもよい。例えば、処理する情
報量が少ない場合は、MPUを適用しても良い。あるい
は、サーバ200と各クライアントの接続は、ネットワ
ーク網104を介した接続に限定されるものではない。
さらに、アクティブスレッド数やI/O待ちでないアク
ティブスレッド数を取得する方法は、上記各実施形態の
方法に限定されるものではなく、他の方法を用いてもよ
い。このように、本発明は、様々な変形が可能である。
【0045】
【発明の効果】以上の説明によって明らかなように、本
発明によれば、CPUネックやI/Oネックの発生を従
来よりも厳密に防止することができる。
【図面の簡単な説明】
【図1】本発明を好適に実施した第1の実施形態による
マルチスレッドプログラムが適用されたサーバアプリケ
ーションを実行するサーバを備えたサーバ/クライアン
トシステムの構成を示す図である。
【図2】輻輳情報のデータ構造例を示す図である。
【図3】輻輳情報加算部の動作の流れを示すフローチャ
ートである。
【図4】輻輳制御部の動作の流れを示すフローチャート
である。
【図5】I/O時輻輳情報減算部の動作の流れを示すフ
ローチャートである。
【図6】I/O時輻輳情報加算部の動作の流れを示すフ
ローチャートである。
【図7】輻輳情報減算部の動作の流れを示すフローチャ
ートである。
【図8】第1の実施形態によるサーバにおける輻輳制御
と従来のサーバにおける輻輳制御との違いを示す図であ
る。
【図9】本発明を好適に実施した第2の実施形態におけ
る輻輳制御部の動作の流れを示すフローチャートであ
る。
【図10】第2の実施形態によるマルチスレッドプログ
ラムにおける輻輳制御と従来のマルチスレッドプログラ
ムにおける輻輳制御との違いを示す図である。
【図11】従来技術によるサーバ/クライアントシステ
ムの構成を示す図である。
【符号の説明】
101、102、103 クライアント 104 ネットワーク網 105 サーバアプリケーション 106、107、108 スレッド 109 輻輳情報 110 記憶装置 111 要求電文受信部 112 輻輳情報加算部 113 輻輳制御部 114 業務処理部 115 I/O時輻輳情報減算部 116 I/O命令実行部 117 I/O時輻輳情報加算部 118 輻輳情報減算部 119 応答電文送信部

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータのオペレーションシステム
    上において複数のスレッドを生成し、各スレッドが前記
    コンピュータで並列に処理されて所定のジョブを実行す
    るマルチスレッドプログラムであって、 各スレッドは、前記コンピュータに、 I/O待ちでないアクティブなスレッド数の情報を取得
    する工程と、 前記I/O待ちでないアクティブなスレッド数の情報を
    基に、当該コンピュータのI/O資源が枯渇するか否か
    を判断する工程と、 アクティブなスレッド数の情報を取得する工程と、 前記アクティブなスレッド数の情報を基に当該コンピュ
    ータの演算処理手段のハードウエア資源が枯渇するか否
    かを判断する工程と、 前記演算処理手段のハードウエア資源及び前記I/O資
    源のいずれも枯渇しないと判断した場合、前記ジョブを
    実行するために当該スレッドに割り当てられたタスクを
    処理する工程と、を実行させることを特徴とするマルチ
    スレッドプログラム。
  2. 【請求項2】 コンピュータのオペレーションシステム
    上において複数のスレッドを生成し、各スレッドが前記
    コンピュータで並列に処理されて所定のジョブを実行す
    るマルチスレッドプログラムであって、 各スレッドは、前記コンピュータに、 アクティブなスレッド数の情報を取得する工程と、 I/O待ちでないアクティブなスレッド数の情報を取得
    する工程と、 アクティブなスレッド数とI/O待ちでないアクティブ
    なスレッド数との差を算出する算出工程と、 前記算出工程における演算結果を基に、当該コンピュー
    タのI/O資源が枯渇するか否かを判断する工程と、 前記アクティブなスレッド数の情報を基に、当該コンピ
    ュータの演算処理手段のハードウエア資源が枯渇するか
    否かを判断する工程と、 前記演算処理手段のハードウエア資源及び前記I/O資
    源のいずれも枯渇しないと判断した場合、前記ジョブを
    実行するために当該スレッドに割り当てられたタスクを
    処理する工程と、を実行させることを特徴とするマルチ
    スレッドプログラム。
  3. 【請求項3】 コンピュータのオペレーションシステム
    上において複数のスレッドを生成し、各スレッドが前記
    コンピュータで並列に処理されて所定のジョブを実行す
    るマルチスレッドプログラムであって、 各スレッドは、前記コンピュータに、 I/O待ちでないアクティブなスレッド数の情報を取得
    する工程と、 前記I/O待ちでないアクティブなスレッド数が、当該
    コンピュータのI/O資源に基づいて予め設定された閾
    値を超えるか否かを判断する第1の判断工程と、 アクティブなスレッド数の情報を取得する工程と、 前記アクティブなスレッド数が、当該コンピュータの演
    算処理手段のハードウエア資源に基づいて予め設定され
    た閾値を超えるか否かを判断する第2の判断工程と、 前記第1及び第2の判断工程のいずれにおいても閾値以
    下であると判断された場合、前記ジョブを実行するため
    に当該スレッドに割り当てられたタスクを処理する工程
    と、を実行させることを特徴とするマルチスレッドプロ
    グラム。
  4. 【請求項4】 前記演算処理手段のハードウエア資源に
    基づいて設定される閾値aと、前記I/O資源に基づい
    て設定される閾値bと、当該マルチスレッドプログラム
    が前記ジョブを実行するために生成する全スレッド数c
    との間に、 a<b<c の関係が成り立つことを特徴とする請求項3記載のマル
    チスレッドプログラム。
  5. 【請求項5】 コンピュータのオペレーションシステム
    上において複数のスレッドを生成し、各スレッドが前記
    コンピュータで並列に処理されて所定のジョブを実行す
    るマルチスレッドプログラムであって、 各スレッドは、前記コンピュータに、 アクティブなスレッド数の情報を取得する工程と、 I/O待ちでないアクティブなスレッド数を取得する工
    程と、 アクティブなスレッド数とI/O待ちでないアクティブ
    なスレッド数との差を算出する算出工程と、 前記算出手段の演算結果が、当該コンピュータのI/O
    資源に基づいて予め設定された閾値を超えるか否かを判
    断する第1の判断工程と、 前記アクティブなスレッド数が、当該コンピュータの演
    算処理手段のハードウエア資源に基づいて予め設定され
    た閾値を超えるか否かを判断する第2の判断工程と、 前記第1及び第2の判断工程のいずれにおいても閾値以
    下であると判断された場合、前記ジョブを実行するため
    に当該スレッドに割り当てられたタスクを処理する工程
    と、を実行させることを特徴とするマルチスレッドプロ
    グラム。
  6. 【請求項6】 前記演算処理手段のハードウエア資源に
    基づいて設定される閾値aと、前記I/O資源に基づい
    て設定される閾値bと、当該マルチスレッドプログラム
    が前記ジョブを処理するために生成する全スレッド数c
    との間に、 b<a<c の関係が成り立つことを特徴とする請求項5記載のマル
    チスレッドプログラム。
  7. 【請求項7】 コンピュータのオペレーションシステム
    上において複数のスレッドを生成し、各スレッドが前記
    コンピュータで並列に処理されて所定のジョブを実行す
    るマルチスレッドプログラムであって、 各スレッドは、前記コンピュータを、 アクティブなスレッド数の情報を取得する手段と、 I/O待ちでないアクティブなスレッド数の情報を取得
    する手段と、 前記I/O待ちでないアクティブなスレッド数の情報と
    を基に、当該コンピュータのI/O資源が枯渇するか否
    かを判断する手段と、 前記アクティブなスレッド数の情報を基に当該コンピュ
    ータの演算処理手段のハーウエア資源が枯渇するか否か
    を判断する手段と、 前記演算処理手段のハードウエア資源及び前記I/O資
    源のいずれも枯渇しないと判断した場合、前記ジョブを
    実行するために当該スレッドに割り当てられたタスクを
    処理する手段と、として機能させることを特徴とするマ
    ルチスレッドプログラム。
  8. 【請求項8】 コンピュータのオペレーションシステム
    上において複数のスレッドを生成し、各スレッドが前記
    コンピュータで並列に処理されて所定のジョブを実行す
    るマルチスレッドプログラムであって、 各スレッドは、前記コンピュータを、 アクティブなスレッド数の情報を取得する手段と、 I/O待ちでないアクティブなスレッド数の情報を取得
    する手段と、 アクティブなスレッド数とI/O待ちでないアクティブ
    なスレッド数との差を算出する算出手段と、 前記算出手段の演算結果を基に、当該コンピュータのI
    /O資源が枯渇するか否かを判断する手段と、 前記アクティブなスレッド数の情報を基に、当該コンピ
    ュータの演算処理手段のハードウエア資源が枯渇するか
    否かを判断する手段と、 前記演算処理手段のハードウエア資源及び前記I/O資
    源のいずれも枯渇しないと判断した場合、前記ジョブを
    実行するために当該スレッドに割り当てられたタスクを
    処理する手段と、として機能させることを特徴とするマ
    ルチスレッドプログラム。
  9. 【請求項9】 コンピュータのオペレーションシステム
    上において複数のスレッドを生成し、各スレッドが前記
    コンピュータで並列に処理されて所定のジョブを実行す
    るマルチスレッドプログラムであって、 各スレッドは、前記コンピュータを、 アクティブなスレッド数の情報を取得する手段と、 I/O待ちでないアクティブなスレッド数の情報を取得
    する手段と、 前記I/O待ちでないアクティブなスレッド数が、当該
    コンピュータのI/O資源に基づいて予め設定された閾
    値を超えるか否かを判断する第1の判断手段と、 前記アクティブなスレッド数が、当該コンピュータの演
    算処理手段のハードウエア資源に基づいて予め設定され
    た閾値を超えるか否かを判断する第2の判断手段と、 前記第1及び第2の判断手段のいずれにおいても閾値以
    下であると判断された場合、前記ジョブを実行するため
    に当該スレッドに割り当てられたタスクを処理する手段
    と、として機能させることを特徴とするマルチスレッド
    プログラム。
  10. 【請求項10】 前記演算処理手段のハードウエア資源
    に基づいて設定される閾値aと、前記I/O資源に基づ
    いて設定される閾値bと、当該マルチスレッドプログラ
    ムが前記ジョブを実行するために生成する全スレッド数
    cとの間に、 a<b<c の関係が成り立つことを特徴とする請求項9記載のマル
    チスレッドプログラム。
  11. 【請求項11】 コンピュータのオペレーションシステ
    ム上において複数のスレッドを生成し、各スレッドが前
    記コンピュータで並列に処理されて所定のジョブを実行
    するマルチスレッドプログラムであって、 各スレッドは、前記コンピュータを、 アクティブなスレッド数の情報を取得する手段と、 I/O待ちでないアクティブなスレッド数を取得する手
    段と、 アクティブなスレッド数とI/O待ちでないアクティブ
    なスレッド数との差を算出する算出手段と、 前記算出手段の演算結果が、当該コンピュータのI/O
    資源に基づいて予め設定された閾値を超えるか否かを判
    断する第1の判断手段と、 前記アクティブなスレッド数が、当該コンピュータの演
    算処理手段のハードウエア資源に基づいて予め設定され
    た閾値を超えるか否かを判断する第2の判断手段と、 前記第1及び第2の判断手段のいずれにおいても閾値以
    下であると判断された場合、前記ジョブを実行するため
    に当該スレッドに割り当てられたタスクを処理する手段
    と、として機能させることを特徴とするマルチスレッド
    プログラム。
  12. 【請求項12】 前記演算処理手段のハードウエア資源
    に基づいて設定される閾値aと、前記I/O資源に基づ
    いて設定される閾値bと、当該マルチスレッドプログラ
    ムが前記ジョブを実行するために生成する全スレッド数
    cとの間に、 b<a<c の関係が成り立つことを特徴とする請求項11記載のマ
    ルチスレッドプログラム。
  13. 【請求項13】 少なくとも一つのクライアントが接続
    されるサーバのオペレーションシステム上において複数
    のスレッドを生成し、各スレッドが並列に処理されて前
    記クライアントから要求されたジョブを実行するマルチ
    スレッドプログラムであって、 各スレッドは、前記サーバの演算処理手段に、 前記クライアントから前記ジョブを実行するためのタス
    クの処理要求を取得する工程と、 I/O待ちでないアクティブなスレッド数の情報を取得
    する工程と、 前記I/O待ちでないアクティブなスレッド数の情報を
    基に、当該サーバのI/O資源が枯渇するか否かを判断
    する工程と、 アクティブなスレッド数の情報を取得する工程と、 前記アクティブなスレッド数の情報を基に当該演算処理
    手段のハーウエア資源が枯渇するか否かを判断する工程
    と、 当該演算処理手段のハードウエア資源及び前記I/O資
    源のいずれも枯渇しないと判断した場合、前記ジョブを
    実行するために当該スレッドに割り当てられたタスクを
    処理する業務処理工程と、 前記業務処理工程において処理されたデータを前記ジョ
    ブの処理要求の送信元であるクライアントへ送信する工
    程と、を実行させることを特徴とするマルチスレッドプ
    ログラム。
  14. 【請求項14】 少なくとも一つのクライアントが接続
    されるサーバのオペレーションシステム上において複数
    のスレッドに分割され、各スレッドが並列に処理されて
    前記クライアントから要求されたジョブを実行するマル
    チスレッドプログラムであって、 各スレッドは、前記サーバの演算処理手段に、 前記クライアントから前記ジョブを実行するためのタス
    クの処理要求を取得する工程と、 アクティブなスレッド数の情報を取得する工程と、 I/O待ちでないアクティブなスレッド数の情報を取得
    する工程と、 アクティブなスレッド数とI/O待ちでないアクティブ
    なスレッド数との差を算出する算出工程と、 前記算出手段の演算結果を基に、当該サーバのI/O資
    源が枯渇するか否かを判断する工程と、 前記アクティブなスレッド数の情報を基に、当該演算処
    理手段のハードウエア資源が枯渇するか否かを判断する
    工程と、 前記演算処理手段のハードウエア資源及び前記I/O資
    源のいずれも枯渇しないと判断した場合、前記ジョブを
    実行するために当該スレッドに割り当てられたタスクを
    処理する業務処理工程と、 前記業務処理工程において処理されたデータを前記ジョ
    ブの処理要求の送信元であるクライアントへ送信する工
    程と、を実行させることを特徴とするマルチスレッドプ
    ログラム。
  15. 【請求項15】 少なくとも一つのクライアントが接続
    されるサーバのオペレーションシステム上において複数
    のスレッドに分割され、各スレッドが並列に処理されて
    前記クライアントから要求されたジョブを実行するマル
    チスレッドプログラムであって、 各スレッドは、前記サーバの演算処理手段に、 前記クライアントから前記ジョブを実行するためのタス
    クの処理要求を取得する工程と、 I/O待ちでないアクティブなスレッド数の情報を取得
    する工程と、 前記I/O待ちでないアクティブなスレッド数が、当該
    サーバのI/O資源に基づいて予め設定された閾値を超
    えるか否かを判断する第1の判断工程と、 アクティブなスレッド数の情報を取得する工程と、 前記アクティブなスレッド数が、当該演算処理手段のハ
    ードウエア資源に基づいて予め設定された閾値を超える
    か否かを判断する第2の判断工程と、 前記第1及び第2の判断工程のいずれにおいても閾値以
    下であると判断された場合に、前記ジョブを実行するた
    めに当該スレッドに割り当てられたタスクを処理する業
    務処理工程と、 前記業務処理工程において処理されたデータを前記ジョ
    ブの処理要求の送信元であるクライアントへ送信する工
    程と、を実行させることを特徴とするマルチスレッドプ
    ログラム。
  16. 【請求項16】 前記演算処理手段のハードウエア資源
    に基づいて設定される閾値aと、前記I/O資源に基づ
    いて設定される閾値bと、当該マルチスレッドプログラ
    ムが前記ジョブを実行するために生成する全スレッド数
    cとの間に、 a<b<c の関係が成り立つことを特徴とする請求項15記載のマ
    ルチスレッドプログラム。
  17. 【請求項17】 少なくとも一つのクライアントが接続
    されるサーバのオペレーションシステム上において複数
    のスレッドに分割され、各スレッドが並列に処理されて
    前記クライアントから要求されたジョブを実行するマル
    チスレッドプログラムであって、 各スレッドは、前記サーバの演算処理手段に、 前記クライアントから前記ジョブを実行するためのタス
    クの処理要求を取得する工程と、 アクティブなスレッド数の情報を取得する工程と、 I/O待ちでないアクティブなスレッド数を取得する工
    程と、 アクティブなスレッド数とI/O待ちでないアクティブ
    なスレッド数との差を算出する算出工程と、 前記算出工程における演算結果が、当該サーバのI/O
    資源に基づいて予め設定された閾値を超えるか否かを判
    断する第1の判断工程と、 前記アクティブなスレッド数が、当該演算処理手段のハ
    ードウエア資源に基づいて予め設定された閾値を超える
    か否かを判断する第2の判断工程と、 前記第1及び第2の判断工程のいずれにおいても閾値以
    下であると判断された場合に、前記ジョブを実行するた
    めに当該スレッドに割り当てられたタスクを処理する業
    務処理工程と、 前記業務処理工程において処理されたデータを前記ジョ
    ブの処理要求の送信元であるクライアントへ送信する工
    程と、を実行させることを特徴とするマルチスレッドプ
    ログラム。
  18. 【請求項18】 前記演算処理手段のハードウエア資源
    に基づいて設定される閾値aと、前記I/O資源に基づ
    いて設定される閾値bと、当該マルチスレッドプログラ
    ムが前記ジョブを実行するために生成する全スレッド数
    cとの間に、 b<a<c の関係が成り立つことを特徴とする請求項17記載のマ
    ルチスレッドプログラム。
  19. 【請求項19】 少なくとも一つのクライアントが接続
    されるサーバのオペレーションシステム上において複数
    のスレッドを生成し、各スレッドが並列に処理されて前
    記クライアントから要求されたジョブを実行するマルチ
    スレッドプログラムであって、 各スレッドは、前記サーバの演算処理手段を、 前記クライアントから前記ジョブの処理要求を取得する
    手段と、 アクティブなスレッド数の情報を取得する手段と、 I/O待ちでないアクティブなスレッド数の情報を取得
    する手段と、 前記I/O待ちでないアクティブなスレッド数の情報を
    基に、当該サーバのI/O資源が枯渇するか否かを判断
    する手段と、 前記アクティブなスレッド数の情報を基に当該演算処理
    手段のハーウエア資源が枯渇するか否かを判断する手段
    と、 当該演算処理手段のハードウエア資源及び前記I/O資
    源のいずれも枯渇しないと判断した場合、前記ジョブを
    実行するために当該スレッドに割り当てられたタスクを
    処理する業務処理手段と、 前記業務処理手段が処理したデータを前記ジョブの処理
    要求の送信元であるクライアントへ送信する手段と、と
    して機能させることを特徴とするマルチスレッドプログ
    ラム。
  20. 【請求項20】 少なくとも一つのクライアントが接続
    されるサーバのオペレーションシステム上において複数
    のスレッドに分割され、各スレッドが並列に処理されて
    前記クライアントから要求されたジョブを実行するマル
    チスレッドプログラムであって、 各スレッドは、前記サーバの演算処理手段を、 前記クライアントから前記ジョブを実行するためのタス
    クの処理要求を取得する手段と、 アクティブなスレッド数の情報を取得する手段と、 I/O待ちでないアクティブなスレッド数の情報を取得
    する手段と、 アクティブなスレッド数とI/O待ちでないアクティブ
    なスレッド数との差を算出する算出手段と、 前記算出手段の演算結果を基に、当該サーバのI/O資
    源が枯渇するか否かを判断する手段と、 前記アクティブなスレッド数の情報を基に、当該演算処
    理手段のハードウエア資源が枯渇するか否かを判断する
    手段と、 前記演算処理手段のハードウエア資源及び前記I/O資
    源のいずれも枯渇しないと判断した場合、前記ジョブを
    実行するために当該スレッドに割り当てられたタスクを
    処理する業務処理手段と、 前記業務処理手段が処理したデータを前記ジョブの処理
    要求の送信元であるクライアントへ送信する手段と、と
    して機能させることを特徴とするマルチスレッドプログ
    ラム。
  21. 【請求項21】 少なくとも一つのクライアントが接続
    されるサーバのオペレーションシステム上において複数
    のスレッドに分割され、各スレッドが並列に処理されて
    前記クライアントから要求されたジョブを実行するマル
    チスレッドプログラムであって、 各スレッドは、前記サーバの演算処理手段を、 前記クライアントから前記ジョブを実行するためのタス
    クの処理要求を取得する手段と、 アクティブなスレッド数の情報を取得する手段と、 I/O待ちでないアクティブなスレッド数の情報を取得
    する手段と、 前記I/O待ちでないアクティブなスレッド数が、当該
    サーバのI/O資源に基づいて予め設定された閾値を超
    えるか否かを判断する第1の判断手段と、 前記アクティブなスレッド数が、当該演算処理手段のハ
    ードウエア資源に基づいて予め設定された閾値を超える
    か否かを判断する第2の判断手段と、 前記第1及び第2の判断手段のいずれにおいても閾値以
    下であると判断された場合に、前記ジョブを実行するた
    めに当該スレッドに割り当てられたタスクを処理する業
    務処理手段と、 前記業務処理手段が処理したデータを前記ジョブの処理
    要求の送信元であるクライアントへ送信する手段と、と
    して機能させることを特徴とするマルチスレッドプログ
    ラム。
  22. 【請求項22】 前記演算処理手段のハードウエア資源
    に基づいて設定される閾値aと、前記I/O資源に基づ
    いて設定される閾値bと、当該マルチスレッドプログラ
    ムが前記ジョブを実行するために生成する全スレッド数
    cとの間に、 a<b<c の関係が成り立つことを特徴とする請求項21記載のマ
    ルチスレッドプログラム。
  23. 【請求項23】 少なくとも一つのクライアントが接続
    されるサーバのオペレーションシステム上において複数
    のスレッドに分割され、各スレッドが並列に処理されて
    前記クライアントから要求されたジョブを実行するマル
    チスレッドプログラムであって、 各スレッドは、前記サーバの演算処理手段を、 前記クライアントから前記ジョブを実行するためのタス
    クの処理要求を取得する手段と、 アクティブなスレッド数の情報を取得する手段と、 I/O待ちでないアクティブなスレッド数を取得する手
    段と、 アクティブなスレッド数とI/O待ちでないアクティブ
    なスレッド数との差を算出する算出手段と、 前記算出手段の演算結果が、当該サーバのI/O資源に
    基づいて予め設定された閾値を超えるか否かを判断する
    第1の判断手段と、 前記アクティブなスレッド数が、当該演算処理手段のハ
    ードウエア資源に基づいて予め設定された閾値を超える
    か否かを判断する第2の判断手段と、 前記第1及び第2の判断手段のいずれにおいても閾値以
    下であると判断された場合に、前記ジョブを実行するた
    めに当該スレッドに割り当てられたタスクを処理する業
    務処理手段と、 前記業務処理手段が処理したデータを前記ジョブの処理
    要求の送信元であるクライアントへ送信する手段と、と
    して機能させることを特徴とするマルチスレッドプログ
    ラム。
  24. 【請求項24】 前記演算処理手段のハードウエア資源
    に基づいて設定される閾値aと、前記I/O資源に基づ
    いて設定される閾値bと、当該マルチスレッドプログラ
    ムが前記ジョブを実行するために生成する全スレッド数
    cとの間に、 b<a<c の関係が成り立つことを特徴とする請求項23記載のマ
    ルチスレッドプログラム。
JP2002119762A 2002-04-22 2002-04-22 マルチスレッドプログラム Expired - Fee Related JP3932965B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002119762A JP3932965B2 (ja) 2002-04-22 2002-04-22 マルチスレッドプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002119762A JP3932965B2 (ja) 2002-04-22 2002-04-22 マルチスレッドプログラム

Publications (2)

Publication Number Publication Date
JP2003316590A true JP2003316590A (ja) 2003-11-07
JP3932965B2 JP3932965B2 (ja) 2007-06-20

Family

ID=29536221

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002119762A Expired - Fee Related JP3932965B2 (ja) 2002-04-22 2002-04-22 マルチスレッドプログラム

Country Status (1)

Country Link
JP (1) JP3932965B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010211523A (ja) * 2009-03-10 2010-09-24 Ricoh Co Ltd 機器管理装置、機器管理システム、機器管理方法、機器管理プログラム、及びそのプログラムを記録した記録媒体
CN110781244A (zh) * 2014-12-03 2020-02-11 阿里巴巴集团控股有限公司 用于对数据库的并发操作进行控制的方法及装置
CN111475387A (zh) * 2019-01-24 2020-07-31 阿里巴巴集团控股有限公司 一种服务器过载判断方法及服务器

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103885837B (zh) * 2014-03-18 2017-07-14 上海大唐移动通信设备有限公司 一种多线程处理数据的方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010211523A (ja) * 2009-03-10 2010-09-24 Ricoh Co Ltd 機器管理装置、機器管理システム、機器管理方法、機器管理プログラム、及びそのプログラムを記録した記録媒体
CN110781244A (zh) * 2014-12-03 2020-02-11 阿里巴巴集团控股有限公司 用于对数据库的并发操作进行控制的方法及装置
CN110781244B (zh) * 2014-12-03 2023-06-13 阿里巴巴集团控股有限公司 用于对数据库的并发操作进行控制的方法及装置
CN111475387A (zh) * 2019-01-24 2020-07-31 阿里巴巴集团控股有限公司 一种服务器过载判断方法及服务器

Also Published As

Publication number Publication date
JP3932965B2 (ja) 2007-06-20

Similar Documents

Publication Publication Date Title
US7900210B2 (en) Application connector parallelism in enterprise application integration systems
US20200334183A1 (en) Event system and methods for using same
US7248603B1 (en) Asynchronous pattern
US7137115B2 (en) Method for controlling multithreading
US7975269B2 (en) Parallel processor methods and apparatus
KR101618476B1 (ko) 휴대용 컴퓨팅 디바이스에서 분산 리소스 관리
US20120297216A1 (en) Dynamically selecting active polling or timed waits
US9875141B2 (en) Managing pools of dynamic resources
US6993769B2 (en) System and method for replacing underlying connection-based communication mechanisms in real time systems at run-time
US11656902B2 (en) Distributed container image construction scheduling system and method
JP2009251708A (ja) I/oノード制御方式及び方法
US20140068165A1 (en) Splitting a real-time thread between the user and kernel space
CN109542642A (zh) 一种前端任务处理的方法及装置
US10733022B2 (en) Method of managing dedicated processing resources, server system and computer program product
Webb et al. Process networks as a high-level notation for metacomputing
JP2003316590A (ja) マルチスレッドプログラム
Tsenos et al. Amesos: A scalable and elastic framework for latency sensitive streaming pipelines
Torquati et al. Reducing message latency and CPU utilization in the CAF actor framework
KR20230063015A (ko) 가상화 서버에서 가상머신 cpu 자원을 관리하는 장치 및 방법
KR20180082560A (ko) 태스크의 시간-기반 스케줄링을 위한 방법 및 장치
WO2020031675A1 (ja) スケジューリング装置、スケジューリングシステム、スケジューリング方法、プログラム及び非一時的コンピュータ可読媒体
US7693988B2 (en) Subject/observer update control method and apparatus
Li Analytical modeling and optimization of an elastic cloud server system
Righi et al. On providing on-the-fly resizing of the elasticity grain when executing HPC applications in the cloud
Beineke et al. DXNet: Scalable Messaging for Multi-Threaded Java-Applications Processing Big Data in Clouds

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040426

A977 Report on retrieval

Effective date: 20060818

Free format text: JAPANESE INTERMEDIATE CODE: A971007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060829

A521 Written amendment

Effective date: 20061030

Free format text: JAPANESE INTERMEDIATE CODE: A523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070201

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: 20070227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070312

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees