(57)【要約】  【課題】  エンハンスされたステージ状イベント駆動アーキテクチャ（ＳＥＤＡ）ステージを提供する。  【解決手段】  エンハンスされたＳＥＤＡステージは、複数のイベントをエンキューするように構成されたイベントキューと、イベントキューにおけるイベントを処理するようにプログラムされたイベントハンドラと、イベントハンドラに結合されたスレッドプールとを含むことができる。更に、スレッドプールおよびイベントキューに、リソースマネージャを結合することができる。更に、リソースマネージャは、イベントキューにエンキューされたイベントの数が閾値を超えた場合、および、スレッドプールの全てのスレッドがビジーである場合に、スレッドプールに追加のスレッドを割り当てるようにプログラムすることができる。【選択図】  図１
2004310768.tif 000002
【特許請求の範囲】
【請求項１】
ステージ状イベント駆動アーキテクチャ（ＳＥＤＡ）ステージであって、
複数のイベントをエンキューするように構成されたイベントキューと、
前記イベントキューにおけるイベントを処理するようにプログラムされたイベントハンドラと、
前記イベントハンドラに結合されたスレッドプールと、
前記スレッドプールおよび前記イベントキューに結合され、前記イベントキューにエンキューされたイベントの数が閾値を超えた場合、および、前記スレッドプールの全てのスレッドがビジーである場合に、前記スレッドプールに追加のスレッドを割り当てるようにプログラムされたリソースマネージャと、
を具備することを特徴とする、ＳＥＤＡステージ。
【請求項２】
前記スレッドプールはグローバルスレッドプールに結合された論理スレッドプールであることを特徴とする、請求項１のＳＥＤＡステージ。
【請求項３】
前記ＳＥＤＡステージは、前記スレッドプールにおけるスレッドの最大および最小の数がゼロに設定されている呼び出し可能ステージを具備することを特徴とする、請求項１のＳＥＤＡステージ。
【請求項４】
前記ＳＥＤＡステージは、前記スレッドプールにスレッドを有しない呼び出し可能ステージを具備することを特徴とする、請求項１のＳＥＤＡステージ。
【請求項５】
前記イベントハンドラはアプリケーションサーバの一部として組み込まれていることを特徴とする、請求項１のＳＥＤＡステージ。
【請求項６】
前記イベントハンドラはウエブサーバの一部として組み込まれていることを特徴とする、請求項１のＳＥＤＡステージ。
【請求項７】
ステージ状イベント駆動アーキテクチャ（ＳＥＤＡ）ステージにおいてスレッドプールを管理するための方法であって、
結合されたイベントキューにおけるイベント数および結合されたスレッドプールにおけるスレッドのビジーのレベルの双方を監視するステップと、
前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記スレッドの前記ビジーのレベルが閾値を超えた場合に、前記結合されたスレッドプールに少なくとも１つの追加のスレッドを加えるステップと、
を具備することを特徴とする、方法。
【請求項８】
前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記全てのスレッドがビジーである場合に、前記結合されたスレッドプールに少なくとも１つの追加のスレッドを加えるステップを具備することを特徴とする、請求項７の方法。
【請求項９】
結合されたスレッドプールは論理スレッドプールであり、前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記スレッドの前記ビジーのレベルが閾値を超えた場合に、前記論理スレッドプールによって用いるためにグローバルスレッドプールから追加スレッドを加えるステップを具備することを特徴とする、請求項７の方法。
【請求項１０】
結合されたスレッドプールは論理スレッドプールであり、前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記全てのスレッドがビジーである場合に、前記論理スレッドプールによって用いるためにグローバルスレッドプールから追加スレッドを加えるステップを具備することを特徴とする、請求項７の方法。
【請求項１１】
ステージ状イベント駆動アーキテクチャ（ＳＥＤＡ）ステージにおいてスレッドプールを管理するためのコンピュータプログラムが格納された機械読み取り可能ストレージであって、前記コンピュータプログラムは、
結合されたイベントキューにおけるイベント数および結合されたスレッドプールにおけるスレッドのビジーのレベルの双方を監視するステップと、
前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記スレッドの前記ビジーのレベルが閾値を超えた場合に、前記結合されたスレッドプールに少なくとも１つの追加のスレッドを加えるステップと、
を前記機械に実行させるためのルーチン命令集合を具備することを特徴とする、機械読み取り可能ストレージ。
【請求項１２】
前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記全てのスレッドがビジーである場合にのみ、前記結合されたスレッドプールに少なくとも１つの追加のスレッドを加えるステップを具備することを特徴とする、請求項１１の機械読み取り可能ストレージ。
【請求項１３】
結合されたスレッドプールは論理スレッドプールであり、前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記スレッドの前記ビジーのレベルが閾値を超えた場合にのみ、前記論理スレッドプールによって用いるためにグローバルスレッドプールから追加スレッドを加えるステップを具備することを特徴とする、請求項１１の機械読み取り可能ストレージ。
【請求項１４】
結合されたスレッドプールは論理スレッドプールであり、前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記全てのスレッドがビジーである場合にのみ、前記論理スレッドプールによって用いるためにグローバルスレッドプールから追加スレッドを加えるステップを具備することを特徴とする、請求項１１の機械読み取り可能ストレージ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スケーラブルな分散型サービスの分野に関し、更に特定すれば、ステージ状イベント駆動アーキテクチャ（ＳＥＤＡ：Ｓｔａｇｅｄ  Ｅｖｅｎｔ  Ｄｒｉｖｅｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ）に関する。
【背景技術】
【０００２】
分散型ソフトウエア開発分野において、スケーラブルな分散型サービスは、ソフトウエア設計の重要な側面となっている。特に、分散型アプリケーションを拡張して大きな負荷を処理する能力は、分散型アプリケーションの普及および一般化に対する大きな課題である。この点に関して、この課題が達成されないままであると、拡張性の問題はおそらく、インターネットに基づくウエブサービスを含む分散型ソフトウエアアプリケーションの成長を妨げるであろう。従って、前述の課題に対処するため、分散型アプリケーションの拡張性の問題に、いくつかの性能最適化技法が適用されている。
【０００３】
技術的向上の最前線では、分散型アプリケーション設計にスレッドプーリングの概念を適用して、高レベルのアプリケーションタスクの並行処理を行っている。例を挙げると、米国特許第６，４２７，１６１Ｂ１号、６，３７７，９３９号、および５，９９１，７９２号に開示された技法、ならびに、米国特許出願第２００１／００１８７０１号および２００１／０００５８５３号、および、「Ｃｏｎｔｒｏｌ  ｏｆ  Ｄｙｎａｍｉｃ  Ｔｈｒｅａｄｓ  Ｐｏｏｌ  ｆｏｒ  Ｃｏｎｃｕｒｒｅｎｔ  Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌｓ」、ＩＢＭ  Ｔｅｃｈｎｉｃａｌ  Ｄｉｓｃｌｏｓｕｒｅ  Ｂｕｌｌｅｔｉｎ、Ｖｏｌ．３８、Ｎｏ．０５（１９９５年５月）がある。前述の文献の各々においては、スレッドプールで利用可能なスレッドの数を、アプリケーションにかかる負荷に応じて増減することができる。しかしながら、動的に構成されたスレッドプールのみでは、アプリケーションサーバにかかるような特に変わりやすい負荷のもとで生じる性能的な欠陥を克服することはできない。
【０００４】
このため、バークレーのカリフォルニア大学において、充分に調整されたサービスの構築を簡略化しながら大量の同時処理要求をサポートするため、ステージ状イベント駆動アーキテクチャ（ＳＥＤＡ）が開発された。Ｍａｔｔ  Ｗｅｌｓｈ、Ｄａｖｉｄ  Ｃｕｌｌｅｒ、およびＥｒｉｃ  Ｂｒｅｗｅｒによる独創的なＳＥＤＡ論文、「ＳＥＤＡ：Ａｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｗｅｌｌ−Ｃｏｎｄｉｔｉｏｎｅｄ  Ｃａｌｌａｂｌｅ  Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅｓ」、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｐｒｉｎｃｉｐｌｅｓの第１８回シンポジウム（ＳＯＳＰ−１８）（シャトーレイクルイーズ、カナダ（２００１年１０月２１〜２４日））で論じられたように、ＳＥＤＡにおいては、アプリケーションを、一連の相互接続されたイベント駆動のステージによって構成し、各ステージはステージキューと結合されている。各ステージ内で、スレッドプールを割り当てて、ステージ内の処理をサポートすることができる。このキューに入れたイベント駆動ステージおよびスレットプールの固有の組み合わせによって、サービスを負荷に対して充分に調整することができ、需要がサービス容量を超えた場合にリソースが過大割り当てされるのを防ぐ。
【０００５】
この点に関して、ＳＥＤＡ設計は、動的リソースコントローラ集合を利用して、負荷の変動が大きいにもかかわらず、ステージを特定の動作範囲内に保持する。更に具体的には、各リソースコントローラは、関連するステージによってかかる負荷を監視することができる。負荷が閾値レベルを超えたと判定されると、スレッドプールを増大することができる。反対に、負荷が小さくなったと判定されると、スレッドプールのスレッド数を減らすことができる。同様に、ステージのイベントハンドラにおけるイベントのバッチングに関して、イベントハンドラの各繰り返しによって処理されるイベント数は、測定される処理スループットに基づいて調節することができる。
【０００６】
ＳＥＤＡ設計の結果、Ｓａｎｄｓｔｏｒｍ（登録商標）アプリケーションサーバを含めて、いくつかの試作品が組み立てられた。このＳａｎｄｓｔｏｒｍ（登録商標）アプリケーションサーバは、Ｊａｖａ（登録商標）プログラミング言語でコード化されているが、ＣおよびＣ＋＋に基づくアプリケーションサーバのものに匹敵する性能を示す。他の試作品アプリケーションには、当技術分野において「ａＴＬＳ」として知られるＳＳＬおよびＴＬＳプロトコルライブラリ、Ｇｎｕｔｅｌｌａ（登録商標）パケットルータ、および、Ｙａｈｏｏ！（登録商標）メールに類似したウエブに基づくｅメールサービスであるＡｒａｓｈｉ（登録商標）が含まれる。最後に、Ｈａｂｏｏｂ（登録商標）高性能ウエブサーバも、ＳＥＤＡ設計を組み込んでおり、かかる設計の結果、Ａｐａｃｈｅ（登録商標）およびＦｌａｓｈ（登録商標）ウエブサーバの双方よりも優れた性能を有する。
【特許文献１】米国特許第６，４２７，１６１Ｂ１号
【特許文献２】米国特許第６，３７７，９３９号
【特許文献３】米国特許第５，９９１，７９２号
【特許文献４】米国特許出願第２００１／００１８７０１号
【特許文献５】米国特許出願第２００１／０００５８５３号
【非特許文献１】「Ｃｏｎｔｒｏｌ  ｏｆ  Ｄｙｎａｍｉｃ  Ｔｈｒｅａｄｓ  Ｐｏｏｌ  ｆｏｒ  Ｃｏｎｃｕｒｒｅｎｔ  Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌｓ」、ＩＢＭ  Ｔｅｃｈｎｉｃａｌ  Ｄｉｓｃｌｏｓｕｒｅ  Ｂｕｌｌｅｔｉｎ、Ｖｏｌ．３８、Ｎｏ．０５（１９９５年５月）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ステージ状イベント駆動アーキテクチャ・ステージにおいてスレッドプールを管理する方法、ＳＥＤＡステージ及びストレージを提供する。
【課題を解決するための手段】
【０００８】
本発明は、エンハンスされたＳＥＤＡステージである。エンハンスされたＳＥＤＡステージは、複数のイベントをエンキューするように構成されたイベントキューと、イベントキューにおけるイベントを処理するようにプログラムされたイベントハンドラと、イベントハンドラに結合されたスレッドプールと、を含むことができる。更に、スレッドプールおよびイベントキューに、リソースマネージャを結合することができる。更に、リソースマネージャは、イベントキューにエンキューされたイベントの数が閾値を超えた場合、および、スレッドプールの全てのスレッドがビジーである場合に、スレッドプールに追加のスレッドを割り当てるようにプログラムすることができる。
【０００９】
本発明の１つの好適な態様において、スレッドプールは、グローバルスレッドプールに結合された論理スレッドプールとすることができる。本発明の別の好適な態様では、ＳＥＤＡステージは、特にＳＥＤＡステージの基礎となる機能が重要でないと見なされた場合に、スレッドプールにスレッドを有しないように構成することができる。このため、ＳＥＤＡステージは、スレッドプールにおけるスレッドの最大および最小の数がゼロに設定されている呼び出し可能イベントハンドラを含むことができる。最後に、ＳＥＤＡステージのイベントハンドラは、アプリケーションサーバまたはウエブサーバの一部として組み込むことができることを注記しておく。
【００１０】
ＳＥＤＡステージにおいてスレッドプールを管理するための方法は、結合されたイベントキューにおけるイベント数および結合されたスレッドプールにおけるスレッドのビジーのレベルの双方を監視するステップを含むことができる。結合されたイベントキューのイベント数が閾値を超えた場合、および、スレッドプールのスレッドのビジーのレベルが閾値を超えた場合にのみ、結合されたスレッドプールに少なくとも１つの追加のスレッドを加えることができる。特に、好適な実施形態において、結合されたイベントキューのイベント数が閾値を超えた場合、および、スレッドプールの全てのスレッドがビジーである場合にのみ、結合されたスレッドプールに少なくとも１つの追加のスレッドを加えることができる。
【００１１】
現在好適な実施形態を図面に示すが、本発明は、図示した明確な構成および手段に限定されないことは理解されよう。
【発明を実施するための最良の形態】
【００１２】
本発明は、エンハンスされたＳＥＤＡステージである。エンハンスされたＳＥＤＡステージは、論理スレッドプールを管理するように構成することができ、関連するステージキューにおけるキューイベントの数が閾値を超えた場合、および、論理スレッドプールにおいてすでに割り当てられたスレッドがビジーである場合に、新たなスレッドをプールに加える。注記しておくが、従来のＳＥＤＡ実施とは異なり、ＳＥＤＡステージにおいて管理されるスレッドプールは、ＳＥＤＡステージに専用のスレッドランナブルを含む必要はない。反対に、スレッドランナブルは、多くのＳＥＤＡステージ間で共有可能なグローバルスレッドプールに専用とすることができる。最終的に、ＳＥＤＡステージは、スレッドプールを全く含む必要がない。むしろ、特に、より重要でないアプリケーション機能に対応するために、ＳＥＤＡステージを直接呼び出し可能なステージとして構成することができる。
【００１３】
図１は、本発明のいくつかの態様に従って構成されたＳＥＤＡステージの概略図である。ＳＥＤＡステージ１００は、イベントキュー１１０を含むことができ、ここに、ＳＥＤＡステージ１００における処理を待つ間に入来するイベントをエンキューすることができる。ＳＥＤＡステージ１００は、更に、１つ以上のコンピューティングイベントを処理するように構成されたイベントハンドラ１２０を含むことができる。注記しておくが、イベントハンドラ１２０は、ＳＥＤＡ設計に準拠するアプリケーションによって提供することができる。ＳＥＤＡステージ１００は、更に、ランナブルスレッドのスレッドプール１３０を含むことができる。この点に関して、ランナブルスレッドを割り当てて、イベントハンドラ１２０内のイベントの処理を扱うことができる。
【００１４】
重要なことは、従来のＳＥＤＡ実施においては各イベント駆動ステージを固有のスレッドプールに結合することができるが、本発明の構成の一態様によれば、ＳＥＤＡステージ１００をグローバルなスレッドプール１５０に結合し、これが、例えば図１に示すＳＥＤＡステージ１００Ａのような１つ以上の他のＳＥＤＡステージに対して基礎となるランナブルスレッドを提供することができる。このように、グローバルスレッドプール１５０に結合された各ＳＥＤＡステージ１００、１００Ａは、ランナブルスレッドの専用プールとして現れる論理スレッドプールを維持することができるが、論理プール内の各ランナブルスレッドは、実際にはグローバルスレッドプール１５０内のスレッドとすることができる。この結果、ＳＥＤＡに準拠するアプリケーションにおいて、非常に大きなオーバーヘッドの軽減を達成することができる。
【００１５】
従来のＳＥＤＡ実施と同様、ＳＥＤＡステージ１００は、リソースマネージャ１４０に結合することができる。従来のＳＥＤＡ実施においてと同様に、リソースマネージャ１４０は、関連するイベントキューにエンキューされるイベントの数を監視することができる。イベントキュー１１０内にエンキューされたイベントの数が閾値を超えると、スレッドプール１３０に追加のスレッドを加える。更に、イベントが処理されて他のイベントキュー１１０Ａ、１１０Ｂ、１１０Ｃ、すなわち他のＳＥＤＡステージ１００Ａ、１００Ｂ、１００Ｃに渡されると、リソースマネージャ１４０は、イベントハンドラ１２０のバッチング比を監視することができる。バッチング比が閾値を超えると、イベントハンドラ１２０の単一の繰り返しの間に同時に処理されるイベントの数を変更することができる。
【００１６】
重要なことは、本発明によれば、そして、従来のＳＥＤＡ実施とは異なり、イベントキュー１１０にエンキューされたイベントの数が過剰であることを検出すると、スレッドプール１３０内の全てのスレッドが「ビジー」であると見なされた場合にのみ、ＳＥＤＡステージ１００のリソースマネージャ１４０は、追加のスレッドをスレッドプール１３０に追加することができる。この点に関して、図２は、図１のＳＥＤＡステージにおいて論理スレッドプールを管理するためのプロセスを示すフローチャートである。ブロック２１０から開始して、エンキューされたイベントの数を測定することができる。その場合、判定ブロック２２０において、エンキューされたイベントの数が閾値を超えた場合、決定ブロック２３０において、全てのスレッドがビジーであるか否かを判定することができる。
【００１７】
ブロック２４０において、全てのスレッドがビジーである場合にのみ、スレッドプールに新しいスレッドを加えることができる。その他の場合、ブロック２５０において、プロセスを繰り返す前に遅延を入れることができる。このように、エンキューされたイベントの数が閾値を超える場合があるが、その他のアイドルなスレッドがあるにもかかわらず新たなスレッドを加えると、結果として性能の劣化が生じる恐れがある。従って、本発明におけるような条件付きのスレッドの追加によって、従来のＳＥＤＡ設計よりもオーダーが１つ大きい性能上の利点を達成することができる。
【００１８】
重要なことは、従来のＳＥＤＡ実施においては、全てのＳＥＤＡステージが、イベントハンドラ１２０によって利用可能な少なくとも１つのスレッドを有するスレッドプールを含む。このため、従来のＳＥＤＡ実施では、ＳＥＤＡステージに割り当てられた基礎となる機能が重要でないことには関係なく、全てのＳＥＤＡステージが「スレッドになっている」。しかしながら、本発明においては、全てのＳＥＤＡステージがスレッドになっている必要はない。反対に、図１のＳＥＤＡステージ１００ＢのようないずれかのＳＥＤＡステージを、スレッドを有しない呼び出し可能イベントステージとすることも可能である。この点に関して、ＳＥＤＡステージ１００Ｂに割り当てられる最大および最小のスレッドは、ゼロに設定することができる。呼び出し可能ＳＥＤＡステージ１００Ｂのスレッドプール１５０に割り当てられるスレッドの数を設定可能とすることによって、ＳＥＤＡステージ１００Ｂは、開発の間または展開時のいずれかに呼び出し可能と規定することができる。
【００１９】
本発明は、ハードウエア、ソフトウエア、またはハードウエアおよびソフトウエアの組み合わせによって実現可能である。本発明の方法およびシステムの実施は、１つのコンピュータシステムにおいて集中型で、または、いくつかの相互接続されたコンピュータシステム間に異なる要素を分布させた分散型で、実現することができる。コンピュータシステム、または、ここに記載した方法を実行するために適合させた他の装置のいずれの種類も、ここに記載した機能を実行するように適応させる。
【００２０】
ハードウエアおよびソフトウエアの典型的な組み合わせは、コンピュータプログラムを有する汎用コンピュータシステムであり、このプログラムをロードして実行すると、コンピュータシステムを管理して、ここに記載した方法を実行する。また、本発明は、ここに記載した方法の実施を可能とする全ての機構を備え、コンピュータシステムにロードされるとこれらの方法を実行することができるコンピュータプログラムプロダクトに埋め込むことも可能である。
【００２１】
この文脈におけるコンピュータプログラムまたはアプリケーションは、いずれかの言語、コード、または表記において、直接、または別の言語、コード、または表記への変換、および異なる物質形態における再生、のいずれかもしくは双方の後に、情報処理能力を有するシステムに特定の機能を実行させるように意図された命令集合のいずれかの表現を意味する。重要なことは、本発明は、その精神または本質的な特性から逸脱することなく他の具体的な形態において具現化することができ、従って、本発明の範囲を示すものとして、前述の明細書よりもむしろ特許請求の範囲を参照しなければならない。
【００２２】
まとめとして、本発明の構成に関して以下の事項を開示する。
（１）ステージ状イベント駆動アーキテクチャ（ＳＥＤＡ）ステージであって、
複数のイベントをエンキューするように構成されたイベントキューと、
前記イベントキューにおけるイベントを処理するようにプログラムされたイベントハンドラと、
前記イベントハンドラに結合されたスレッドプールと、
前記スレッドプールおよび前記イベントキューに結合され、前記イベントキューにエンキューされたイベントの数が閾値を超えた場合、および、前記スレッドプールの全てのスレッドがビジーである場合に、前記スレッドプールに追加のスレッドを割り当てるようにプログラムされたリソースマネージャと、
を具備することを特徴とする、ＳＥＤＡステージ。
（２）前記スレッドプールはグローバルスレッドプールに結合された論理スレッドプールであることを特徴とする、（１）のＳＥＤＡステージ。
（３）前記ＳＥＤＡステージは、前記スレッドプールにおけるスレッドの最大および最小の数がゼロに設定されている呼び出し可能ステージを具備することを特徴とする、（１）のＳＥＤＡステージ。
（４）前記ＳＥＤＡステージは、前記スレッドプールにスレッドを有しない呼び出し可能ステージを具備することを特徴とする、（１）のＳＥＤＡステージ。
（５）前記イベントハンドラはアプリケーションサーバの一部として組み込まれていることを特徴とする、（１）のＳＥＤＡステージ。
（６）前記イベントハンドラはウエブサーバの一部として組み込まれていることを特徴とする、（１）のＳＥＤＡステージ。
（７）ステージ状イベント駆動アーキテクチャ（ＳＥＤＡ）ステージにおいてスレッドプールを管理するための方法であって、
結合されたイベントキューにおけるイベント数および結合されたスレッドプールにおけるスレッドのビジーのレベルの双方を監視するステップと、
前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記スレッドの前記ビジーのレベルが閾値を超えた場合に、前記結合されたスレッドプールに少なくとも１つの追加のスレッドを加えるステップと、
を具備することを特徴とする、方法。
（８）前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記全てのスレッドがビジーである場合に、前記結合されたスレッドプールに少なくとも１つの追加のスレッドを加えるステップを具備することを特徴とする、（７）の方法。
（９）結合されたスレッドプールは論理スレッドプールであり、前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記スレッドの前記ビジーのレベルが閾値を超えた場合に、前記論理スレッドプールによって用いるためにグローバルスレッドプールから追加スレッドを加えるステップを具備することを特徴とする、（７）の方法。
（１０）結合されたスレッドプールは論理スレッドプールであり、前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記全てのスレッドがビジーである場合に、前記論理スレッドプールによって用いるためにグローバルスレッドプールから追加スレッドを加えるステップを具備することを特徴とする、（７）の方法。
（１１）ステージ状イベント駆動アーキテクチャ（ＳＥＤＡ）ステージにおいてスレッドプールを管理するためのコンピュータプログラムが格納された機械読み取り可能ストレージであって、前記コンピュータプログラムは、
結合されたイベントキューにおけるイベント数および結合されたスレッドプールにおけるスレッドのビジーのレベルの双方を監視するステップと、
前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記スレッドの前記ビジーのレベルが閾値を超えた場合に、前記結合されたスレッドプールに少なくとも１つの追加のスレッドを加えるステップと、
を前記機械に実行させるためのルーチン命令集合を具備することを特徴とする、機械読み取り可能ストレージ。
（１２）前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記全てのスレッドがビジーである場合に、前記結合されたスレッドプールに少なくとも１つの追加のスレッドを加えるステップを具備することを特徴とする、（１１）の機械読み取り可能ストレージ。
（１３）結合されたスレッドプールは論理スレッドプールであり、前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記スレッドの前記ビジーのレベルが閾値を超えた場合に、前記論理スレッドプールによって用いるためにグローバルスレッドプールから追加スレッドを加えるステップを具備することを特徴とする、（１１）の機械読み取り可能ストレージ。
（１４）結合されたスレッドプールは論理スレッドプールであり、前記追加するステップは、前記結合されたイベントキューの前記イベント数が閾値を超えた場合、および、前記スレッドプールの前記全てのスレッドがビジーである場合に、前記論理スレッドプールによって用いるためにグローバルスレッドプールから追加スレッドを加えるステップを具備することを特徴とする、（１１）の機械読み取り可能ストレージ。
【図面の簡単な説明】
【００２３】
【図１】本発明のいくつかの態様に従って構成されたＳＥＤＡステージの概略図である。
【図２】図１のＳＥＤＡステージにおいて論理スレッドプールを管理するためのプロセスを示すフローチャートである。
【図１】
2004310768.tif 000003
【図２】
2004310768.tif 000004