JP2007529079A - 自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法 - Google Patents
自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法 Download PDFInfo
- Publication number
- JP2007529079A JP2007529079A JP2007503125A JP2007503125A JP2007529079A JP 2007529079 A JP2007529079 A JP 2007529079A JP 2007503125 A JP2007503125 A JP 2007503125A JP 2007503125 A JP2007503125 A JP 2007503125A JP 2007529079 A JP2007529079 A JP 2007529079A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- server
- threads
- requests
- queue
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/504—Resource capping
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法を提供する。
【解決手段】自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法。サーバ待ち行列は、優先順位スキームとして用いられ、受信した要求に関連するいくつかのエントリをそこに含み、これによってエントリは、単にスレッドの数だけよりも明示的な優先順位又はシェア値を有することができる。必要と考えられる場合はいつでもスレッドを生の数値データで表すか又は利用可能にされるスレッドの数に対する制約を表すための柔軟性が保持される。
【選択図】図2
【解決手段】自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法。サーバ待ち行列は、優先順位スキームとして用いられ、受信した要求に関連するいくつかのエントリをそこに含み、これによってエントリは、単にスレッドの数だけよりも明示的な優先順位又はシェア値を有することができる。必要と考えられる場合はいつでもスレッドを生の数値データで表すか又は利用可能にされるスレッドの数に対する制約を表すための柔軟性が保持される。
【選択図】図2
Description
著作権の通知
この特許文書の開示の一部分は、著作権の保護を受ける内容を含んでいる。著作権所有者は、特許商標事務局の特許ファイル又は記録にあるような特許文書又は特許開示のファクシミリ複製を誰が行っても異論はないが、それ以外はあらゆる著作権を保持するものである。
優先権の請求
アンノ・ランゲン及びナレシュ・レバヌルにより2004年5月20日出願で本明細書において引用により組み込まれている「自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法」という名称の米国特許仮出願第60/572,938号(代理人整理番号:BEAS−01560US0)。
アンノ・ランゲン及びナレシュ・レバヌルにより2005年5月19日出願で本明細書において引用により組み込まれている「自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法」という名称の米国特許出願第_____号(代理人整理番号:BEAS−01560US1)。
この特許文書の開示の一部分は、著作権の保護を受ける内容を含んでいる。著作権所有者は、特許商標事務局の特許ファイル又は記録にあるような特許文書又は特許開示のファクシミリ複製を誰が行っても異論はないが、それ以外はあらゆる著作権を保持するものである。
優先権の請求
アンノ・ランゲン及びナレシュ・レバヌルにより2004年5月20日出願で本明細書において引用により組み込まれている「自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法」という名称の米国特許仮出願第60/572,938号(代理人整理番号:BEAS−01560US0)。
アンノ・ランゲン及びナレシュ・レバヌルにより2005年5月19日出願で本明細書において引用により組み込まれている「自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法」という名称の米国特許出願第_____号(代理人整理番号:BEAS−01560US1)。
本発明は、一般的にはアプリケーションサーバ及びメッセージングシステムに関し、具体的には、自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法に関する。
典型的なアプリケーションサーバ又はウェブサーバ環境においては、恐らく何百又は何千の同時ユーザ(クライアント)が存在し、これらのクライアントの各々がサーバに要求を送信する可能性がある。図1は、このような環境の例を示している。最新サーバ100は、多くのプロセッサ及びこれらのプロセッサに情報を提供する多くのスレッド102を有することができる。スレッドは、クライアント104、106、108から要求110、112、114を取り出し、それらを待ち行列のような方式でプロセッサに付加する。用いられるスレッドの実際の数は、サーバの性能、及び多数のユーザに対処するその機能に大きな影響を及ぼす。しかし、最適な数のスレッドを計算することは複雑な処理である。
この問題に対する1つの手法は、スレッドの数がプロセッサの数を大きく超えるように更に多くのスレッドを追加することであった。これによって要求がほぼ直ちにスレッドの中に送られることが保証されるが、これらの要求がプロセッサによって迅速に取り上げられることは保証されない。より最新の代替法は、変動する数のスレッドが内部で作動するスレッドプールを作成することである。スレッドの実際の数は、次に管理者によって微調整され、特定のランタイム環境に対して最良の性能をもたらすことができる。しかし、この処理は、管理者の技術に大きく依存し、それが非常に環境依存的かつ静的であるために、最も役に立つのは、テスト・ベンチング及びマーケティング目的のみである。現実の状況では、環境は非常に変化するので、この静的手法は満足できるものではない。
従って、必要とされるものは、サーバが作業負荷の客観的予測に基づき同時スレッドの最適数を自動的に判断して実施することを可能にするための手段である。アプリケーションサーバが位置する場所(オペレーティングシステムよりも上位)の制限のために、このスレッド制御は、オペレーティングシステム内に組み込むことはできないが、より高いレベルに存在することができるべきである。従って、アプリケーションサーバ内のスレッドの数及びこれらを送る待ち行列を制御するための手段があるべきである。
本発明の実施形態により、自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法が提供される。実施形態によると、サーバ待ち行列は、優先順位スキームとして用いられ、受信した要求に関連するいくつかのエントリをそこに含み、これによってエントリは、単にスレッドの数だけよりもビジネスユーザに自然で身近な明示的な優先順位を有することができる。必要と考えられる場合に生の数値データでスレッドを表し(例えば、特定数のスレッドが利用可能にされなければデッドロックすると考えられる既知の呼び出しシーケンスがある場合)、又はシステムを通じて又は作業負荷ベースで利用可能とされるスレッドの数に対する制約を表す柔軟性は、依然として保持される。
実施形態により、優先順位は、「シェア」つまり要求を受信することになるエンティティ間の比例優先順位を反映する抽象的表現として特定することができる。その総数は任意であり、恐らく100シェアよりも多い場合があるので、シェアは、百分率のスレッド使用と同一ではないが、それらは類似している。シェアは、各エンティティに割り当てられたスレッド使用(スレッド数による)を判断するものである。システム(又は、その上で作動するアルゴリズム)は、次に、長期間にわたってスレッドの使用(スレッドタイムによる)がこれらのシェアによって分配されることになることを保証する。例えば、エンティティに割り当てられた2倍の時間又はスレッド分を使用するいかなるエンティティも、次に、相対使用割合を均衡状態に戻すようにペナルティを科せられることになる。
実施形態により、ランタイム中にアルゴリズムもまた用いられて、スレッドプールの大きさを定め、次に、スレッドをプール内に割り当てることができる。
実施形態により、優先待ち行列が維持される。各要求しているエンティティ、例えばクライアントは、待ち行列の中に入って相対シェアに従って離間した要求を出すことができる。従って、例えば、エンティティがその割り当てを超えていなければ、割り当てを使い果たしたか又はより低い時間ベースの割り当て又はシェアを有する別のエンティティに比較して、その要求は、待ち行列の比較的高位置に配置することができ、スレッドの獲得を直ちに開始することになる。
実施形態により、優先待ち行列が維持される。各要求しているエンティティ、例えばクライアントは、待ち行列の中に入って相対シェアに従って離間した要求を出すことができる。従って、例えば、エンティティがその割り当てを超えていなければ、割り当てを使い果たしたか又はより低い時間ベースの割り当て又はシェアを有する別のエンティティに比較して、その要求は、待ち行列の比較的高位置に配置することができ、スレッドの獲得を直ちに開始することになる。
実施形態により、最大スレッド制約に対して、システムは、優先待ち行列内及び最大スレッド制約待ち行列内にも要求を保持するために別々の待ち行列を維持することができる。最大スレッド制約待ち行列が消去されると、優先待ち行列内のあらゆる同様の項目(すなわち、同じ制約に関する何か)を実行することが許されることになる。
実施形態により、スレッドプールのサイズ設定は、既存プールの1つによる増分又は減分にまで導くことができる。これは、定期的に、例えば1秒又は2秒毎に実施される。
自己調節スレッド化モデルの全体的結果は、すぐに使える性能におけるサーバの劇的改善である。スレッド特性は、特定の必要性に適するように更に調整することができる。この特徴はまた、サーバ顧客が彼らのシステムの設定により柔軟性を有することを可能にし、彼らに特定のビジネス論理又は顧客必要性の組などに対して彼らのスレッド化モデルに優先順位を付ける方法を提供する。
実施形態により、スレッドプールのサイズ設定は、既存プールの1つによる増分又は減分にまで導くことができる。これは、定期的に、例えば1秒又は2秒毎に実施される。
自己調節スレッド化モデルの全体的結果は、すぐに使える性能におけるサーバの劇的改善である。スレッド特性は、特定の必要性に適するように更に調整することができる。この特徴はまた、サーバ顧客が彼らのシステムの設定により柔軟性を有することを可能にし、彼らに特定のビジネス論理又は顧客必要性の組などに対して彼らのスレッド化モデルに優先順位を付ける方法を提供する。
現在、アプリケーションサーバ顧客は、デッドロックを回避して差異化サービスをもたらすための新たなスレッドプールを定めてその大きさを設定する。これは、かなり困難な処理である。有能なソフトウエア管理者チームが、最適な性能のための設定の解明に数日を費やす場合がある。
本発明の実施形態により、自己調節サーバは、スレッドの数を動的に調整してデッドロックを回避し、並行制約による最適な処理量を達成する。これはまた、差異化サービスの目的も満たすものである。これらの目的は、応答時間ゴール、シェア、及び優先順位で表される。
本発明の実施形態により、自己調節サーバは、スレッドの数を動的に調整してデッドロックを回避し、並行制約による最適な処理量を達成する。これはまた、差異化サービスの目的も満たすものである。これらの目的は、応答時間ゴール、シェア、及び優先順位で表される。
実施形態により、システムは、作業負荷管理に関する要件、実行待ち行列の一掃、スレッドカウント調節、及び過負荷保護に対処する。サーバ内の多くの実行待ち行列が崩壊して、単一の優先順位ベース待ち行列になることができる。システムは、優先順位が高い作業が待ち行列でより少ない時間を費やす優先順位ベースの作業スケジューリング方式を実施する。スケジューリングは、リソース制約を考慮する。主に着目する点は、拡張可能なスケジューリングモデルを作り、管理者が作業負荷管理規則を指定することを可能にすることである。
本発明の実施形態により、自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法が提供される。実施形態によると、サーバ待ち行列は、優先順位スキームとして用いられ、受信した要求に関連するいくつかのエントリをそこに含み、これによってエントリは、単にスレッドの数だけよりもビジネスユーザに自然で身近な明示的な優先順位を有することができる。必要な場合に生の数値データでスレッドを表し(例えば、特定数のスレッドが利用可能にされなければデッドロックすると考えられる既知の呼び出しシーケンスがある場合)、又はシステムを通じて又は作業負荷ベースで利用可能とされるスレッドの数に対する制約を表す柔軟性は、依然として保持される。
実施形態により、優先順位は、「シェア」つまり要求を受信することになるエンティティ間の比例優先順位を反映する抽象的表現として特定することができる。その総数は任意であり、恐らく100シェアよりも多い場合があるので、シェアは、百分率のスレッド使用と同一ではないが、それらは類似している。シェアは、各エンティティに割り当てられたスレッド使用(スレッド数による)を判断するものである。システム(又は、その上で作動するアルゴリズム)は、次に、長期間にわたってスレッドの使用(スレッドタイムによる)がこれらのシェアによって分配されることになることを保証する。例えば、エンティティに割り当てられた2倍の時間又はスレッド分を使用するいかなるエンティティも、次に、相対使用割合を均衡状態に戻すようにペナルティを科せられることになる。
実施形態により、ランタイム中にアルゴリズムもまた用いられて、スレッドプールの大きさを定め、次に、スレッドをプール内に割り当てることができる。
実施形態により、優先待ち行列が維持される。各要求しているエンティティ、例えばクライアントは、待ち行列の中に入って相対シェアに従って離間した要求を出すことができる。従って、例えば、エンティティがその割り当てを超えていなければ、割り当てを使い果たしたか又はより低い時間ベースの割り当て又はシェアを有する別のエンティティに比較して、その要求は、待ち行列の比較的高位置に配置することができ、スレッドの獲得を直ちに開始することになる。
実施形態により、優先待ち行列が維持される。各要求しているエンティティ、例えばクライアントは、待ち行列の中に入って相対シェアに従って離間した要求を出すことができる。従って、例えば、エンティティがその割り当てを超えていなければ、割り当てを使い果たしたか又はより低い時間ベースの割り当て又はシェアを有する別のエンティティに比較して、その要求は、待ち行列の比較的高位置に配置することができ、スレッドの獲得を直ちに開始することになる。
実施形態により、最大スレッド制約に対して、システムは、優先待ち行列内及び最大スレッド制約待ち行列内にも要求を保持するために別々の待ち行列を維持することができる。最大スレッド制約待ち行列が消去されると、優先待ち行列内のあらゆる同様の項目(すなわち、同じ制約に関する何か)を実行することが許されることになる。
実施形態により、スレッドプールのサイズ設定は、既存プールの1つによる増分又は減分にまで導くことができる。これは、定期的に、例えば1秒又は2秒毎に実施される。
自己調節スレッド化モデルの全体的結果は、すぐに使える性能におけるサーバの劇的改善である。スレッド特性は、特定の必要性に適するように更に調整することができる。この特徴はまた、サーバ顧客が彼らのシステムの設定により柔軟性を有することを可能にし、彼らに特定のビジネス論理又は顧客必要性の組などに対して彼らのスレッド化モデルに優先順位を付ける方法を提供する。
実施形態により、スレッドプールのサイズ設定は、既存プールの1つによる増分又は減分にまで導くことができる。これは、定期的に、例えば1秒又は2秒毎に実施される。
自己調節スレッド化モデルの全体的結果は、すぐに使える性能におけるサーバの劇的改善である。スレッド特性は、特定の必要性に適するように更に調整することができる。この特徴はまた、サーバ顧客が彼らのシステムの設定により柔軟性を有することを可能にし、彼らに特定のビジネス論理又は顧客必要性の組などに対して彼らのスレッド化モデルに優先順位を付ける方法を提供する。
図2は、本発明の実施形態により、複数のクライアントがスレッド及び優先待ち行列を用いてサーバにアクセスする環境の図を示している。図2に示すように、サーバ120は、多くのプロセッサ及びこれらのプロセッサに情報を提供する多くのスレッド122を有することができる。優先待ち行列124は、クライアント104、106、108から要求110、112、114を取り出し、エントリを待ち行列に入れ、エントリをその後プロセッサに付加するスレッドにエントリを送信する(126)前に、予め設定されたあらゆるシェア値又は制約によってエントリに優先順位を付ける。
図3は、本発明の実施形態によってスレッドを用いてサーバにアクセスする処理の流れ図を示している。図3に示すように、段階130において、サーバは、シェア値に従ってエンティティ間でスレッドリソースを共有するように設定される。これは、管理者がシェア値を数値的に入力するコンソール入力を通して又は何らかの他のタイプの装置を通して行うことができる。段階132において、サーバは、クライアントから要求を受信する。段階134において、要求は、シェア値によって及び各エンティティがスレッドタイムを既にどれくらい使用したかに基づいて優先待ち行列に入れられる。段階136において、要求が優先待ち行列から取り出され、プロセッサによって処理するためにスレッドに呈示される。
実施の詳細
作業技術者及びアプリケーション管理者は、これらの特徴の主要なユーザである。管理者は、公平なシェア及び応答時間ゴールのようなアプリケーションのスケジューリング目的を表明する。この節の関連で用いられる場合、以下の定義が用いられる。
制約作業セット−作業は、共有するリソースに基づき分類することができる。このセットにおける全ての作業の性能は、共有リソースの容量によって制約される。
エントリポイント−例には、RMI方式記述子、HTTP、URI、MDB、及び「JCA 1.5 WorkManager」インスタンスが含まれる。
フェアシェア(fair share)−スレッドを使用する権利。サービスクラスがスレッドを求めて競合すると、それらは、そのそれぞれのシェアに比例してスレッドを割り当てられることになる。この比率は、サービスクラスが競合する間の十分に長い期間の平均としてのみ実現されるものである。他にアクティブなものがなければ、全てのスレッドは、ある一定のサービスクラスに割り当てることができる。
作業技術者及びアプリケーション管理者は、これらの特徴の主要なユーザである。管理者は、公平なシェア及び応答時間ゴールのようなアプリケーションのスケジューリング目的を表明する。この節の関連で用いられる場合、以下の定義が用いられる。
制約作業セット−作業は、共有するリソースに基づき分類することができる。このセットにおける全ての作業の性能は、共有リソースの容量によって制約される。
エントリポイント−例には、RMI方式記述子、HTTP、URI、MDB、及び「JCA 1.5 WorkManager」インスタンスが含まれる。
フェアシェア(fair share)−スレッドを使用する権利。サービスクラスがスレッドを求めて競合すると、それらは、そのそれぞれのシェアに比例してスレッドを割り当てられることになる。この比率は、サービスクラスが競合する間の十分に長い期間の平均としてのみ実現されるものである。他にアクティブなものがなければ、全てのスレッドは、ある一定のサービスクラスに割り当てることができる。
自己調節−自動的に低レベルカーネルパラメータを設定するサーバの機能。管理者は、管理者が理解するアプリケーション要件、例えば応答時間ゴールを定義することができ、サーバは、相応にその低レベルパラメータを調節することになる。
応答時間ゴール−サーバ内のエントリポイントに到達する要求と送信されている応答との間に経過する可能性があるミリ秒の最大数に対するゴール。
サービスクラス−サービスクラスは、サーバ内の作業を分類するものである。目的は、個々の要求ではなくサービスクラスに対して表されて追跡される。システムは、それが待機状態になる前に要求のサービスクラスを判断することができるべきである。一部の有用なサービスクラスは、エントリポイント、J2EEモジュール、トランザクション名、現行ユーザ、又は何らかの指定作業域に従って分類することで発生する。
スケジューリングポリシー−要求の待機継続期間をそのサービスクラス及び競合サービスクラスからの要求に基づき判断する。
応答時間ゴール−サーバ内のエントリポイントに到達する要求と送信されている応答との間に経過する可能性があるミリ秒の最大数に対するゴール。
サービスクラス−サービスクラスは、サーバ内の作業を分類するものである。目的は、個々の要求ではなくサービスクラスに対して表されて追跡される。システムは、それが待機状態になる前に要求のサービスクラスを判断することができるべきである。一部の有用なサービスクラスは、エントリポイント、J2EEモジュール、トランザクション名、現行ユーザ、又は何らかの指定作業域に従って分類することで発生する。
スケジューリングポリシー−要求の待機継続期間をそのサービスクラス及び競合サービスクラスからの要求に基づき判断する。
作業負荷の管理
この特徴は、サーバがサービスクラス、制約、及びサーバ内で観察された負荷状況を用いて作業をスケジュールに入れる方法を説明する。サーバは、優先待ち行列で待機状態になった作業の様々なクラスに対して異なるスケジューリングポリシーを許すものである。これは、サービスクラスを提出した作業によって特定することによって可能である。この特徴は、システムに対して、優先順位が高い作業が後で到着する時でさえも、重要でない作業の前に優先順位の高い作業をスケジュールに入れさせる。競合期間中、所定のサービスクラスに情報提供するスレッドの数は、その表明した目的に依存する。制約は、デッドロック及び過負荷条件中にカーネルが作業を処理すべき方法を定める。
この特徴は、サーバがサービスクラス、制約、及びサーバ内で観察された負荷状況を用いて作業をスケジュールに入れる方法を説明する。サーバは、優先待ち行列で待機状態になった作業の様々なクラスに対して異なるスケジューリングポリシーを許すものである。これは、サービスクラスを提出した作業によって特定することによって可能である。この特徴は、システムに対して、優先順位が高い作業が後で到着する時でさえも、重要でない作業の前に優先順位の高い作業をスケジュールに入れさせる。競合期間中、所定のサービスクラスに情報提供するスレッドの数は、その表明した目的に依存する。制約は、デッドロック及び過負荷条件中にカーネルが作業を処理すべき方法を定める。
自動スレッドカウント調節
サーバは、最大処理量を得るためにかつ最小並行性保証を実施するためにそのスレッドカウントを自動的に調節する。「threadsIncrease」又は「threadsMaximum」のようなパラメータは、もはや必要ない。
サーバは、最大処理量を得るためにかつ最小並行性保証を実施するためにそのスレッドカウントを自動的に調節する。「threadsIncrease」又は「threadsMaximum」のようなパラメータは、もはや必要ない。
起動時に作成される実行待ち行列の低減
従来の実施では、サブシステムは、デッドロック防止、最小スレッド保証などのような様々な理由でそれ自身の実行待ち行列を作成する。自己調節は、複数の実行待ち行列を作成してサービスクラス及び制約を用いてこれらの要件を満たす必要性を取り除くものである。
従来の実施では、サブシステムは、デッドロック防止、最小スレッド保証などのような様々な理由でそれ自身の実行待ち行列を作成する。自己調節は、複数の実行待ち行列を作成してサービスクラス及び制約を用いてこれらの要件を満たす必要性を取り除くものである。
過負荷保護
過負荷保護は、重負荷の下でのサービスの低下からサーバを保護するものである。過負荷条件において、サーバは、設定可能な方法で要求を拒絶する。管理者は、後でサーバが要求を拒絶する場合がある閾値待ち行列長さを指定することができる。優先順位の低い要求のバーストは、拒絶される可能性が最も高い。彼らはまた、個々のサービスクラスに対してより具体的な閾値を指定することができる。
過負荷保護は、重負荷の下でのサービスの低下からサーバを保護するものである。過負荷条件において、サーバは、設定可能な方法で要求を拒絶する。管理者は、後でサーバが要求を拒絶する場合がある閾値待ち行列長さを指定することができる。優先順位の低い要求のバーストは、拒絶される可能性が最も高い。彼らはまた、個々のサービスクラスに対してより具体的な閾値を指定することができる。
JCA 1.5 WorkManager
「JCA 1.5 WorkManager」APIは、サーバの作業をスケジュールに入れるアダプタに対する方法を提供する。このAPIは、スレッドスケジューリング機能性を公開するものである。アプリケーションは、「WorkManager」APIを用いて非同期的に作業を実行し、実行状態に関する通知を受信することができる。
「JCA 1.5 WorkManager」APIは、サーバの作業をスケジュールに入れるアダプタに対する方法を提供する。このAPIは、スレッドスケジューリング機能性を公開するものである。アプリケーションは、「WorkManager」APIを用いて非同期的に作業を実行し、実行状態に関する通知を受信することができる。
作業負荷管理の機能説明
管理者は、以下の例に示すように、特別の目的を表明するためにスケジューリングポリシーを定めることができ、かつ制約を表すことができる。
配備記述子及びRMI記述子は、次に、「ContextShopping」及び「minThreadsForPluginMaxProcesses」のような名称を参照し、これらをエントリポイントに付加することができる。
管理者は、以下の例に示すように、特別の目的を表明するためにスケジューリングポリシーを定めることができ、かつ制約を表すことができる。
配備記述子及びRMI記述子は、次に、「ContextShopping」及び「minThreadsForPluginMaxProcesses」のような名称を参照し、これらをエントリポイントに付加することができる。
フェアシェアは、複数のサービスクラスが競合する限り、各々によって用いられるスレッドの平均数がそのフェアシェアに比例するように、スケジューリング論理に反映される。例えば、2つのサービスクラスA及びBのみがあり、それぞれ80及び20のフェアシェアを有する状況を考える。両方のサービスクラスが十分に要求される、つまりゼロ思考時間かつスレッドよりもクライアントが多い期間中に、A又はBを代表してスレッドが作業することになる確率は、それぞれ80%又は20%になる傾向があることになる。スケジューリング論理は、AがBよりも遙かに長くスレッドを用いる傾向がある時でさえもこれを保証する。
応答時間ゴールは、サービスクラスを差異化することができる。システムは、個々の要求に対して応答時間ゴールを満たそうとしない。むしろそれは、観察された平均スレッド使用時間を差し引くことによってサービスクラスに対する許容待機時間を計算する。次に、それは、各サービスクラスに対する平均待機がその許容待機時間に比例するように要求をスケジュールに入れることができる。例えば、2つのサービスクラスA及びBのみがあり、それぞれ応答時間ゴールが2000ms及び5000msであり、かつ個々の要求がスレッドを用いる時間がこれよりも遙かに短い状況を考える。両方のサービスクラスが十分に要求される、つまりゼロ思考時間かつスレッドよりもクライアントが多い期間中では、システムは、平均応答時間を2:5の比率に保つようにスケジュールに入れ、それによってそれが、表明したゴールの常分数又は公倍数になるようにすることができる。
スケジューリング実行の理解は、スケジューリングポリシーの理解に役立つものである。各サービスクラスは増分を有し、その間隔で離間した仮想時間スタンプでイベント待ち行列に要求を入力することができる。優先順位の高いものは、小さな増分によって実行される。スケジューリングポリシーは、以下のように説明することができる。
応答時間
属性「goal−ms」をミリ秒で表すと、増分は、以下のようになる。
((goal−T)Cr)/R
ここで、Tは、平均スレッド使用時間、Rは到着率、Crは、フェアシェアに対して応答時間ゴールに優先順位を付ける係数である。
属性「goal−ms」をミリ秒で表すと、増分は、以下のようになる。
((goal−T)Cr)/R
ここで、Tは、平均スレッド使用時間、Rは到着率、Crは、フェアシェアに対して応答時間ゴールに優先順位を付ける係数である。
フェアシェア
属性をデフォルトシェアの百分率で表す。従って、デフォルトは100である。増分は、以下のようになる。
Cf/(PRT)
ここで、Pは百分率、Rは到着率、Tは、平均スレッド使用時間、Cfは、応答時間ゴールよりも低くフェアシェアの優先順位を付けるフェアシェアに対する係数である。
属性をデフォルトシェアの百分率で表す。従って、デフォルトは100である。増分は、以下のようになる。
Cf/(PRT)
ここで、Pは百分率、Rは到着率、Tは、平均スレッド使用時間、Cfは、応答時間ゴールよりも低くフェアシェアの優先順位を付けるフェアシェアに対する係数である。
コンテキスト
現行ユーザ又はその役割、クッキー、又は作業域フィールドのようなコンテキスト情報を指名サービスクラスにマップする複数の場合がある。
現行ユーザ又はその役割、クッキー、又は作業域フィールドのようなコンテキスト情報を指名サービスクラスにマップする複数の場合がある。
SubordinateStepResponseTime
「PrimaryStepResponseTime」を指名する属性「primary」を有する。
「PrimaryStepResponseTime」を指名する属性「primary」を有する。
PrimaryStepResponseTime
属性「goal−ms」をミリ秒で表すと、増分は、応答時間ゴールと同様に計算される。主要段階に対する下位段階の比率を用い、許容待機を得るために下位段階のその多くの平均スレッド使用を差し引く。主要段階に下位段階を加えた全ての段階に対する到着率で許容待機を割算し、応答時間係数で乗算する。
属性「goal−ms」をミリ秒で表すと、増分は、応答時間ゴールと同様に計算される。主要段階に対する下位段階の比率を用い、許容待機を得るために下位段階のその多くの平均スレッド使用を差し引く。主要段階に下位段階を加えた全ての段階に対する到着率で許容待機を割算し、応答時間係数で乗算する。
固定増分
属性「increment」を有する。
フェアシェア係数は、到着率及び平均スレッド使用時間の最大積の約1000倍になるように選択される。応答時間係数は、応答時間ポリシーの平均増分がフェアシェアポリシーの平均増分の10分の1でしかないように選択される。
属性「increment」を有する。
フェアシェア係数は、到着率及び平均スレッド使用時間の最大積の約1000倍になるように選択される。応答時間係数は、応答時間ポリシーの平均増分がフェアシェアポリシーの平均増分の10分の1でしかないように選択される。
制約
制約を定義してエントリポイントのセットに適用することができ、これは、本明細書で制約作業セットと呼ぶ。
制約を定義してエントリポイントのセットに適用することができ、これは、本明細書で制約作業セットと呼ぶ。
max−threads
制約作業セットからの要求を実行する並行スレッドの数を制限する。デフォルトは無制限である。例えば、10の最大スレッドで定められ、3つのエントリポイントによって共有された制約を考える。スケジューリング論理は、10を超えないスレッドが3つのエントリポイントを組合せたものからの要求を実行していることを保証する。
制約作業セットからの要求を実行する並行スレッドの数を制限する。デフォルトは無制限である。例えば、10の最大スレッドで定められ、3つのエントリポイントによって共有された制約を考える。スケジューリング論理は、10を超えないスレッドが3つのエントリポイントを組合せたものからの要求を実行していることを保証する。
min−threads
デッドロックを回避するためにサーバが制約作業セットの要求に割り当てることになるスレッドの数を保証する。デフォルトはゼロである。「min−threads」値の1は、例えば、ピアから同期的に呼び出される複製更新要求に有用である。
デッドロックを回避するためにサーバが制約作業セットの要求に割り当てることになるスレッドの数を保証する。デフォルトはゼロである。「min−threads」値の1は、例えば、ピアから同期的に呼び出される複製更新要求に有用である。
容量
サーバは、その容量に達した時のみに要求を拒絶し始める。デフォルトはゼロである。容量は、待ち行列に入れられているか又は実行されている制約作業セットからの全ての要求を含むことに注意されたい。この制約は、主としてそれ自身のフロー制御を行うJMSのようなサブシステムを意図したものである。この制約は、全体的な待ち行列閾値から独立している。
サーバは、その容量に達した時のみに要求を拒絶し始める。デフォルトはゼロである。容量は、待ち行列に入れられているか又は実行されている制約作業セットからの全ての要求を含むことに注意されたい。この制約は、主としてそれ自身のフロー制御を行うJMSのようなサブシステムを意図したものである。この制約は、全体的な待ち行列閾値から独立している。
異なるスケジューリングポリシー及び制約は、以下のように相互作用する。
上記では、スケジューリングポリシーは、スケジューリングを同じポリシーを用いる他の作業に関連付けることによってフェアシェア及び応答時間に基づくことができると説明した。フェアシェア及び応答時間ポリシーの混合は、応答時間スケジューリングに好ましい顕著なバイアスでスケジュールに入れられる。
最小スレッド制約は、フェアシェアを増加させない。それは、ほぼデッドロックされたサーバに対してのみ問題になる。しかし、次に、それは、システムがそのサービスクラスが最近そのフェアシェアよりも多く得ている時でさえも最小スレッド制約作業セットからの要求をスケジュールに入れるという意味で、切り札を出すことになる。
上記では、スケジューリングポリシーは、スケジューリングを同じポリシーを用いる他の作業に関連付けることによってフェアシェア及び応答時間に基づくことができると説明した。フェアシェア及び応答時間ポリシーの混合は、応答時間スケジューリングに好ましい顕著なバイアスでスケジュールに入れられる。
最小スレッド制約は、フェアシェアを増加させない。それは、ほぼデッドロックされたサーバに対してのみ問題になる。しかし、次に、それは、システムがそのサービスクラスが最近そのフェアシェアよりも多く得ている時でさえも最小スレッド制約作業セットからの要求をスケジュールに入れるという意味で、切り札を出すことになる。
最大スレッド制約は、必ずというわけではないが、サービスクラスがそのフェアシェアを取り出すこと又はその応答時間ゴールを満たすことを防ぐ場合があると考えられる。最大スレッド制約に達した状態で、サーバは、並行実行の数が限度よりも低くなるまでこの制約タイプの要求をスケジュールに入れないことになる。サーバは、その後にフェアシェア又は応答時間ゴールに基づき作業をスケジュールに入れることになる。
「admin_rmi」及び「admin_html」待ち行列要件は、最小スレッド制約及びデフォルトフェアシェアによって対処することができる。システム待ち行列要件もまた、最小スレッド制約によって満足される。マルチキャスト待ち行列要件は、最大スレッドも最小スレッドも1に等しく設定することによって満足される。これは、マルチキャスト要求を処理している、従って、順序付けを保証している唯一のスレッドが存在することを保証するものである。
機能要件
ディスパッチポリシー及び制約は、3レベル、すなわち、「config.xml」で全体的に、「weblogic−application.xml」でアプリケーション毎に、又は「weblogic」配備記述子の「weblogic−ejb−jar.xml」及び「weblogic.xml」で特定の「J2EE」モジュールに対して定義することができる。これらの名称は、対応するタグの「dispatch−policy」、「max−threads」、及び「min−threads」から用いることができる。「max−threads」及び「min−threads」タグは、それぞれ「max−threads−constraint」又は「min−threads−constraint」の名称、又はある一定の番号のいずれかである値をとる。「weblogic−application.xml」においては、これらのタグは、アプリケーションを通じたデフォルトを指定する。「weblogic.xml」及び「weblogic−ejb−jar.xml」においては、それらは、構成要素を通じたデフォルトを最上位レベルで指定する。「weblogic.xml」においては、マッピングは、指名「dispatch−policy」、「max−threads」、又は「min−threads」が「uri−patterns」又はサーブレット名に対してマップされる「web.xml」のフィルタマッピングとの類似が許される。「max−threads−mapping」及び「min−threads−mapping」もまた数値を許容する。「weblogic−ejb−jar.xml」においては、「weblogic−enterprise−bean」の下での既存の「dispatch−policy」タグの値は、指名された「dispatch−policy」とすることができる。下位互換性に対して、それはまた、「ExecuteQueue」を指名することができる。更に、システムはまた、「dispatch−policy」、「max−threads」、及び「min−threads」が、現在の「isolation−level」タグと同様に方法のリストに対して指名された(又は、制約に対する数値を用いて無指名の)ポリシー及び制約を指定することを可能にすることができる。
ディスパッチポリシー及び制約は、3レベル、すなわち、「config.xml」で全体的に、「weblogic−application.xml」でアプリケーション毎に、又は「weblogic」配備記述子の「weblogic−ejb−jar.xml」及び「weblogic.xml」で特定の「J2EE」モジュールに対して定義することができる。これらの名称は、対応するタグの「dispatch−policy」、「max−threads」、及び「min−threads」から用いることができる。「max−threads」及び「min−threads」タグは、それぞれ「max−threads−constraint」又は「min−threads−constraint」の名称、又はある一定の番号のいずれかである値をとる。「weblogic−application.xml」においては、これらのタグは、アプリケーションを通じたデフォルトを指定する。「weblogic.xml」及び「weblogic−ejb−jar.xml」においては、それらは、構成要素を通じたデフォルトを最上位レベルで指定する。「weblogic.xml」においては、マッピングは、指名「dispatch−policy」、「max−threads」、又は「min−threads」が「uri−patterns」又はサーブレット名に対してマップされる「web.xml」のフィルタマッピングとの類似が許される。「max−threads−mapping」及び「min−threads−mapping」もまた数値を許容する。「weblogic−ejb−jar.xml」においては、「weblogic−enterprise−bean」の下での既存の「dispatch−policy」タグの値は、指名された「dispatch−policy」とすることができる。下位互換性に対して、それはまた、「ExecuteQueue」を指名することができる。更に、システムはまた、「dispatch−policy」、「max−threads」、及び「min−threads」が、現在の「isolation−level」タグと同様に方法のリストに対して指名された(又は、制約に対する数値を用いて無指名の)ポリシー及び制約を指定することを可能にすることができる。
以下は、サービスクラスを構成要素レベルで定義するRMI記述子からの例である。
「max−threads」値は、番号、指名「max−threads−constraint」、又は指名接続プール(JDBC又はJCA)とすることができる。リソースの大きさが動的であれば、関連する最小又は最大スレッド制約もまた動的であることになり、リソースの大きさが変わると変化する。
「max−threads」値は、番号、指名「max−threads−constraint」、又は指名接続プール(JDBC又はJCA)とすることができる。リソースの大きさが動的であれば、関連する最小又は最大スレッド制約もまた動的であることになり、リソースの大きさが変わると変化する。
自動スレッドカウント調節の機能説明
優先待ち行列に情報提供するスレッドプールは、処理量を最大にするように自動的にその大きさを変化させる。管理者は、もはや「threadsIncrease」及び「threadsMaximum」のような「ExecuteQueueMBean」属性を指定する必要はない。優先待ち行列は、2秒毎に処理量をモニタし、収集されたデータを用いてスレッドカウントを変える必要があるかを判断する。例えば、過去にスレッドが多いほど処理量がよかったならば、サーバは、スレッドカウントを増加させることになる。同様に、過去に少ない数のスレッドが同じ処理量をもたらした場合は、サーバは、スレッドカウントを低減することになる。
優先待ち行列に情報提供するスレッドプールは、処理量を最大にするように自動的にその大きさを変化させる。管理者は、もはや「threadsIncrease」及び「threadsMaximum」のような「ExecuteQueueMBean」属性を指定する必要はない。優先待ち行列は、2秒毎に処理量をモニタし、収集されたデータを用いてスレッドカウントを変える必要があるかを判断する。例えば、過去にスレッドが多いほど処理量がよかったならば、サーバは、スレッドカウントを増加させることになる。同様に、過去に少ない数のスレッドが同じ処理量をもたらした場合は、サーバは、スレッドカウントを低減することになる。
機能要件
ユーザ入力は必要ではない。サーバは、処理量履歴及び待ち行列の大きさに全体的に基づいてスレッドカウントを判断する。
ユーザ入力は必要ではない。サーバは、処理量履歴及び待ち行列の大きさに全体的に基づいてスレッドカウントを判断する。
開始機能説明上に作成された実行待ち行列の低減
異なる実行待ち行列を崩壊させて単一優先待ち行列にする。過去においては、デッドロックを防ぎ(admin_rmi、非ブロッキング)、作業に優先順位を付け(システム)、順序付けを達成する(マルチキャスト)ために異なる実行待ち行列を作成することが必要であった。これらの要件は、サービスクラスを待機状態の作業に関連付けることによって満足される。全ての作業は、優先待ち行列に提出することができ、スレッド使用時間は、待ち行列に存在するサービスクラスのタイプに基づいている。
異なる実行待ち行列を崩壊させて単一優先待ち行列にする。過去においては、デッドロックを防ぎ(admin_rmi、非ブロッキング)、作業に優先順位を付け(システム)、順序付けを達成する(マルチキャスト)ために異なる実行待ち行列を作成することが必要であった。これらの要件は、サービスクラスを待機状態の作業に関連付けることによって満足される。全ての作業は、優先待ち行列に提出することができ、スレッド使用時間は、待ち行列に存在するサービスクラスのタイプに基づいている。
過負荷保護の機能説明
管理者は、サーバがその後要求を抑制し始める過負荷閾値を計算することができる。抑制は、以下のように行われる。
サーバが、最小スレッド制約セットを具備しない低次のフェアシェアから始めて要求を拒絶する。優先順位が高いサービスクラス又は最小スレッド制約を有するサービスクラスは、依然として受け入れられる。
過負荷条件が支配を続ける場合、サーバが過負荷条件から回復することができないので、優先順位の高い要求もまた拒絶されることになる。最小スレッド制約を有する要求及び管理要求は、依然として受け入れられることになる。
作業が拒絶された場合、明確なエラー応答が送信される。「503:サーバ使用中」エラーがHTTPに送信され、遠隔例外がRMIに対して投入され、これによってクラスターは、フェイルオーバーするクライアントを知ることができると考えられる。
管理者は、サーバがその後要求を抑制し始める過負荷閾値を計算することができる。抑制は、以下のように行われる。
サーバが、最小スレッド制約セットを具備しない低次のフェアシェアから始めて要求を拒絶する。優先順位が高いサービスクラス又は最小スレッド制約を有するサービスクラスは、依然として受け入れられる。
過負荷条件が支配を続ける場合、サーバが過負荷条件から回復することができないので、優先順位の高い要求もまた拒絶されることになる。最小スレッド制約を有する要求及び管理要求は、依然として受け入れられることになる。
作業が拒絶された場合、明確なエラー応答が送信される。「503:サーバ使用中」エラーがHTTPに送信され、遠隔例外がRMIに対して投入され、これによってクラスターは、フェイルオーバーするクライアントを知ることができると考えられる。
機能要件
待ち行列限界は、全体レベルで又は作業クラス毎に指定することができる。全体的閾値は、「KernelMBean」属性として公開することができる。作業のクラスは、「制約」内の容量要素を用いて閾値を定義することができる。容量要素を設定する方法の例を以下に示している。
容量制約は、全体的閾値を無効にする。これは、サーバが、全体的閾値に達した時でさえ要求を受け入れ続けることになることを意味する。作業は、容量制約に達した時にのみ拒絶されることになる。これは、自身のフロー制御を実行して全体的待ち行列閾値を用いることができないサブシステムに有用である。
待ち行列限界は、全体レベルで又は作業クラス毎に指定することができる。全体的閾値は、「KernelMBean」属性として公開することができる。作業のクラスは、「制約」内の容量要素を用いて閾値を定義することができる。容量要素を設定する方法の例を以下に示している。
容量制約は、全体的閾値を無効にする。これは、サーバが、全体的閾値に達した時でさえ要求を受け入れ続けることになることを意味する。作業は、容量制約に達した時にのみ拒絶されることになる。これは、自身のフロー制御を実行して全体的待ち行列閾値を用いることができないサブシステムに有用である。
HTTP過負荷アクション
システムは、サーバがクラスター内にある場合、503エラーコードを送信することになる。これは、プラグインにフェイルオーバーさせることになる。サーバがクラスターに属さない場合、システムは、顧客が過負荷応答として用いられることになるエラーJSPを設定することを可能にすることができる。顧客はまた、過負荷アクションとして宛先変更を指定することにより、過負荷期間中に別のサーバに要求を宛先変更することができる。
システムは、サーバがクラスター内にある場合、503エラーコードを送信することになる。これは、プラグインにフェイルオーバーさせることになる。サーバがクラスターに属さない場合、システムは、顧客が過負荷応答として用いられることになるエラーJSPを設定することを可能にすることができる。顧客はまた、過負荷アクションとして宛先変更を指定することにより、過負荷期間中に別のサーバに要求を宛先変更することができる。
RMI過負荷アクション
サーバがクラスター内にある場合、システムは、「RemoteException」のサブクラスである「ServerOverloadedException」を投入する。クライアントは、これを回復可能な例外と解釈し、別のクラスターノードにフェイルオーバーすることになる。非クラスターシナリオでは、顧客は、宛先変更のために代替的なサーバを指定することができる。過負荷期間中のRMI要求は、この代替的なサーバに宛先変更されることになる。
サーバがクラスター内にある場合、システムは、「RemoteException」のサブクラスである「ServerOverloadedException」を投入する。クライアントは、これを回復可能な例外と解釈し、別のクラスターノードにフェイルオーバーすることになる。非クラスターシナリオでは、顧客は、宛先変更のために代替的なサーバを指定することができる。過負荷期間中のRMI要求は、この代替的なサーバに宛先変更されることになる。
サーバは、拒絶応答を送信するために読取スレッドを用いないことになる。応答の書込みは、遅い可能性があるI/Oを伴っている。応答を書き込むために読取スレッドを用いることは、読取スレッド全てを遮断して到着するソケット多重化を防ぐことができる。
サブシステムは、過負荷通知のためにカーネルに登録することができる。全体的待ち行列閾値が超過すると、カーネルは、その聴取者に通知することになる。この通知を使用して、作業を抑制してサブシステムレベルに戻すことができる。
サブシステムは、過負荷通知のためにカーネルに登録することができる。全体的待ち行列閾値が超過すると、カーネルは、その聴取者に通知することになる。この通知を使用して、作業を抑制してサブシステムレベルに戻すことができる。
機能要件
「WorkManager」は、アプリケーションスコープ又はグローバルとすることができる。アプリケーションスコープ「WorkManager」は、以下のような「weblogic−application.xml」内に定義することができる。
「WorkManager」は、アプリケーションスコープ又はグローバルとすることができる。アプリケーションスコープ「WorkManager」は、以下のような「weblogic−application.xml」内に定義することができる。
アプリケーションから「WorkManager」にアクセスするために、ローカル環境(java:comp/env)内にその名称を探すことになる。例えば、以下のようになる。
システムは、各「WorkManager」定義に対してスレッド群を作成しない。全ての「WorkManager」インスタンスは、デフォルト待ち行列を共有する。それらは、その「fair−share」又は「response−time−goal」に基づき優先順位を付けられる。
システムは、各「WorkManager」定義に対してスレッド群を作成しない。全ての「WorkManager」インスタンスは、デフォルト待ち行列を共有する。それらは、その「fair−share」又は「response−time−goal」に基づき優先順位を付けられる。
本発明は、本開示の教示に従ってプログラムされた従来の汎用又は専用デジタルコンピュータ又はマイクロプロセッサを使用して好都合に実施することができる。ソフトウエア技術の当業者には明らかなように、熟達したプログラマーは、本開示の教示に基づいて適切なソフトウエアコーディングを容易に作成することができる。
一部の実施形態では、本発明は、コンピュータプログラム製品を含み、これは、本発明の処理のいずれかを実行するようにコンピュータをプログラムするのに使用することができる命令をそこに/その上に記憶した記憶媒体(又は複数の媒体)である。記憶媒体は、以下に限定されるものではないが、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、及び光磁気ディスクを含むあらゆるタイプのディスクと、ROMと、RAMと、EPROMと、EEPROMと、DRAMと、VRAMと、フラッシュメモリデバイスと、磁気又は光学式カードと、ナノシステム(分子メモリICを含む)と、あるいは命令及び/又はデータを記憶するのに適するあらゆるタイプの媒体又はデバイスとを含むことができる。
一部の実施形態では、本発明は、コンピュータプログラム製品を含み、これは、本発明の処理のいずれかを実行するようにコンピュータをプログラムするのに使用することができる命令をそこに/その上に記憶した記憶媒体(又は複数の媒体)である。記憶媒体は、以下に限定されるものではないが、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、及び光磁気ディスクを含むあらゆるタイプのディスクと、ROMと、RAMと、EPROMと、EEPROMと、DRAMと、VRAMと、フラッシュメモリデバイスと、磁気又は光学式カードと、ナノシステム(分子メモリICを含む)と、あるいは命令及び/又はデータを記憶するのに適するあらゆるタイプの媒体又はデバイスとを含むことができる。
本発明の以上の説明は、例示及び説明のために提供したものである。網羅的であること又は本発明を開示した通りの形に限定することを意図していない。実施形態は、本発明の原理及びその実用的応用を最も良く説明し、それによって当業者が様々な実施形態に関して及び考えられる特定用途に適する様々な修正を用いて本発明を理解することを可能にするように選択して説明したものである。本発明の範囲は、特許請求の範囲及びその均等物により規定されるものとする。
104、106、108 クライアント
110、112、114 要求
120 サーバ
122 スレッド
124 優先待ち行列
110、112、114 要求
120 サーバ
122 スレッド
124 優先待ち行列
Claims (18)
- アプリケーションサーバにおける自己調節スレッド化モデルのためのシステムであって、
1つ又はそれ以上のプロセッサを含むサーバと、
クライアントからの要求を受信し、それらの要求をプロセッサに通信する1つ又はそれ以上のスレッドと、
前記スレッドの性能を最適化するために、スレッドをシェア値に従って複数の要求に割り当てるための優先待ち行列と、
を含むことを特徴とするシステム。 - 前記サーバは、複数のプロセッサを含むことを特徴とする請求項1に記載のシステム。
- エントリが、比例配分された時間値に従って前記優先待ち行列に入れられることを特徴とする請求項1に記載のシステム。
- 前記エントリは、前記時間値に比較して既に使用した計算されたスレッド使用時間に従って待ち行列に入れられることを特徴とする請求項3に記載のシステム。
- 前記エントリは、付加的に設定された制約に従って待ち行列に入れることができることを特徴とする請求項1に記載のシステム。
- 前記制約は、前記エントリを付加的な制約待ち行列に入れることによって判断されることを特徴とする請求項5に記載のシステム。
- アプリケーションサーバにおける自己調節スレッド化モデルのための方法であって、
エンティティ間でスレッドリソースを共有するようにシェア値に従ってサーバを設定する段階と、
前記サーバにおいてクライアントから要求を受信する段階と、
前記シェア値に従って及び各エンティティが既にスレッドタイムを使用した量に基づいて要求を優先待ち行列に入れる段階と、
前記優先待ち行列から前記要求を取り出し、プロセッサによって処理するためにそれらを前記スレッドに呈示する段階と、
を含むことを特徴とする方法。 - 前記サーバは、複数のプロセッサを含むことを特徴とする請求項7に記載の方法。
- エントリが、比例配分された時間値に従って前記優先待ち行列に入れられることを特徴とする請求項7に記載の方法。
- 前記エントリは、前記時間値に比較して既に使用した計算されたスレッド使用時間に従って待ち行列に入れられることを特徴とする請求項9に記載の方法。
- エントリを、付加的に設定された制約に従って待ち行列に入れることができることを特徴とする請求項7に記載の方法。
- 前記制約は、前記エントリを付加的な制約待ち行列に入れることによって判断されることを特徴とする請求項11に記載の方法。
- 命令を含んだコンピュータ読み取り可能な記録媒体であって、
前記命令は、実行された時に、
エンティティ間でスレッドリソースを共有するようにシェア値に従ってサーバを設定する段階と、
前記サーバにおいてクライアントから要求を受信する段階と、
前記シェア値に従って及び各エンティティが既にスレッドタイムを使用した量に基づいて要求を優先待ち行列に入れる段階と、
前記優先待ち行列から前記要求を取り出し、プロセッサによって処理するためにそれらを前記スレッドに呈示する段階と、
を前記コンピュータに実行させる、
ことを特徴とするコンピュータ読み取り可能な記録媒体。 - 前記サーバは、複数のプロセッサを含むことを特徴とする請求項13に記載のコンピュータ読み取り可能な記録媒体。
- エントリが、比例配分された時間値に従って前記優先待ち行列に入れられることを特徴とする請求項13に記載のコンピュータ読み取り可能な記録媒体。
- 前記エントリは、前記時間値に比較して既に使用した計算されたスレッド使用時間に従って待ち行列に入れられることを特徴とする請求項15に記載のコンピュータ読み取り可能な記録媒体。
- エントリを、付加的に設定された制約に従って待ち行列に入れることができることを特徴とする請求項13に記載のコンピュータ読み取り可能な記録媒体。
- 前記制約は、前記エントリを付加的な制約待ち行列に入れることによって判断されることを特徴とする請求項17に記載のコンピュータ読み取り可能な記録媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US57293804P | 2004-05-20 | 2004-05-20 | |
US11/132,601 US7657892B2 (en) | 2004-05-20 | 2005-05-19 | System and method for application server with self-tuned threading model |
PCT/US2005/017744 WO2005114410A2 (en) | 2004-05-20 | 2005-05-20 | System and method for application server with self-tuned threading model |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007529079A true JP2007529079A (ja) | 2007-10-18 |
Family
ID=35376695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007503125A Pending JP2007529079A (ja) | 2004-05-20 | 2005-05-20 | 自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7657892B2 (ja) |
EP (1) | EP1683014A4 (ja) |
JP (1) | JP2007529079A (ja) |
AU (1) | AU2005246373B2 (ja) |
WO (1) | WO2005114410A2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016103258A (ja) * | 2014-11-18 | 2016-06-02 | 富士通株式会社 | 並列演算装置、並列演算システム、およびジョブ制御プログラム |
KR20170044639A (ko) * | 2014-06-23 | 2017-04-25 | 오라클 인터내셔날 코포레이션 | 멀티테넌트 어플리케이션 서버 환경에서 작업 관리자를 제공하는 시스템 및 방법 |
US10742568B2 (en) | 2014-01-21 | 2020-08-11 | Oracle International Corporation | System and method for supporting multi-tenancy in an application server, cloud, or other environment |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7467390B2 (en) * | 2003-04-01 | 2008-12-16 | International Business Machines Corporation | Enhanced staged event-driven architecture |
US7681196B2 (en) * | 2004-11-18 | 2010-03-16 | Oracle International Corporation | Providing optimal number of threads to applications performing multi-tasking using threads |
US8245230B2 (en) * | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
US9361156B2 (en) | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
US8387052B2 (en) * | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
US8656402B2 (en) * | 2005-08-26 | 2014-02-18 | International Business Machines Corporation | Incremental web container growth to control startup request flooding |
CN100388214C (zh) * | 2005-12-30 | 2008-05-14 | 北京金山软件有限公司 | 一种多线程处理中的资源调用方法 |
US7945913B2 (en) * | 2006-01-19 | 2011-05-17 | International Business Machines Corporation | Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system |
US8020161B2 (en) * | 2006-09-12 | 2011-09-13 | Oracle America, Inc. | Method and system for the dynamic scheduling of a stream of computing jobs based on priority and trigger threshold |
US8078674B2 (en) * | 2007-05-10 | 2011-12-13 | International Business Machines Corporation | Server device operating in response to received request |
CN101359295B (zh) * | 2007-08-01 | 2012-05-02 | 阿里巴巴集团控股有限公司 | 一种批量任务调度分配方法及系统 |
US20090249350A1 (en) * | 2008-03-31 | 2009-10-01 | John W. Senders | Resource Allocation Through Negotiation |
US8862731B2 (en) * | 2008-04-25 | 2014-10-14 | Smart Technologies Ulc | Method and system for coordinating data sharing in a network with at least one physical display device |
WO2011012157A1 (en) * | 2009-07-28 | 2011-02-03 | Telefonaktiebolaget L M Ericsson (Publ) | Apparatus and method for processing events in a telecommunications network |
US8261268B1 (en) * | 2009-08-05 | 2012-09-04 | Netapp, Inc. | System and method for dynamic allocation of virtual machines in a virtual server environment |
US9906399B2 (en) * | 2009-08-26 | 2018-02-27 | Adobe Systems Incorporated | Methods and systems for combined management of multiple servers |
US9152464B2 (en) * | 2010-09-03 | 2015-10-06 | Ianywhere Solutions, Inc. | Adjusting a server multiprogramming level based on collected throughput values |
US8392627B2 (en) | 2011-04-25 | 2013-03-05 | Microsoft Corporation | Adaptive semaphore |
US8849910B2 (en) * | 2011-06-03 | 2014-09-30 | Oracle International Corporation | System and method for using quality of service with workload management in an application server environment |
US9104502B2 (en) | 2012-12-15 | 2015-08-11 | International Business Machines Corporation | Managing resource pools for deadlock avoidance |
US9715406B2 (en) | 2013-06-14 | 2017-07-25 | Microsoft Technology Licensing, Llc | Assigning and scheduling threads for multiple prioritized queues |
EP2840513B1 (en) * | 2013-08-21 | 2019-05-15 | Hasso-Plattner-Institut für Softwaresystemtechnik GmbH | Dynamic task prioritization for in-memory databases |
US10089142B2 (en) | 2013-08-21 | 2018-10-02 | Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh | Dynamic task prioritization for in-memory databases |
US9405530B2 (en) | 2014-09-24 | 2016-08-02 | Oracle International Corporation | System and method for supporting patching in a multitenant application server environment |
US10318280B2 (en) | 2014-09-24 | 2019-06-11 | Oracle International Corporation | System and method for supporting patching in a multitenant application server environment |
US10250512B2 (en) | 2015-01-21 | 2019-04-02 | Oracle International Corporation | System and method for traffic director support in a multitenant application server environment |
CN105700958B (zh) * | 2016-01-07 | 2019-05-03 | 北京京东尚科信息技术有限公司 | 一种任务自动拆分以及子任务并行执行的方法及其系统 |
US11120036B2 (en) * | 2016-08-03 | 2021-09-14 | Oracle International Corporation | System and method for efficient repurposing of connections in a multi-tenant database environment |
CN108132837B (zh) * | 2018-01-02 | 2022-04-15 | 中国工商银行股份有限公司 | 一种分布式集群调度系统及方法 |
US11307898B2 (en) | 2019-02-26 | 2022-04-19 | Sap Se | Server resource balancing using a dynamic-sharing strategy |
US11126466B2 (en) * | 2019-02-26 | 2021-09-21 | Sap Se | Server resource balancing using a fixed-sharing strategy |
JP7265652B2 (ja) * | 2019-05-31 | 2023-04-26 | ナイキ イノベイト シーブイ | 動的応答目標を備えるマルチチャネル通信プラットフォーム |
CN115016952B (zh) * | 2022-08-10 | 2022-10-28 | 中邮消费金融有限公司 | 一种基于服务调用端的动态扩缩容方法及系统 |
CN118051346B (zh) * | 2024-04-11 | 2024-07-12 | 恒生电子股份有限公司 | 请求动态限流方法、装置、电子设备和可读存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6549930B1 (en) * | 1997-11-26 | 2003-04-15 | Compaq Computer Corporation | Method for scheduling threads in a multithreaded processor |
US6237073B1 (en) * | 1997-11-26 | 2001-05-22 | Compaq Computer Corporation | Method for providing virtual memory to physical memory page mapping in a computer operating system that randomly samples state information |
GB2334116A (en) | 1998-02-04 | 1999-08-11 | Ibm | Scheduling and dispatching queued client requests within a server computer |
US6304906B1 (en) * | 1998-08-06 | 2001-10-16 | Hewlett-Packard Company | Method and systems for allowing data service system to provide class-based services to its users |
DE19846274A1 (de) * | 1998-10-08 | 2000-04-20 | Alcatel Sa | Verfahren zur Durchführung von kooperativem Multitasking in einem Nachrichtenübertragungsnetz und Netzelement dafür |
WO2002088938A1 (en) | 2001-05-01 | 2002-11-07 | The Trustees Of Columbia University In The City Of New York | Apparatus and methods for proportional share scheduling |
US6886041B2 (en) * | 2001-10-05 | 2005-04-26 | Bea Systems, Inc. | System for application server messaging with multiple dispatch pools |
US7058950B2 (en) * | 2002-03-21 | 2006-06-06 | Sun Microsystems, Inc. | Callback event listener mechanism for resource adapter work executions performed by an application server thread |
US7448036B2 (en) * | 2002-05-02 | 2008-11-04 | International Business Machines Corporation | System and method for thread scheduling with weak preemption policy |
US7080379B2 (en) * | 2002-06-20 | 2006-07-18 | International Business Machines Corporation | Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue |
US7350195B2 (en) * | 2003-09-19 | 2008-03-25 | International Business Machines Corporation | Selecting a program to improve a service class by requesting the program to incrementally self-tune |
US7703101B2 (en) * | 2004-02-13 | 2010-04-20 | International Business Machines Corporation | Autonomic workload classification using predictive assertion for wait queue and thread pool selection |
-
2005
- 2005-05-19 US US11/132,601 patent/US7657892B2/en active Active
- 2005-05-20 AU AU2005246373A patent/AU2005246373B2/en active Active
- 2005-05-20 JP JP2007503125A patent/JP2007529079A/ja active Pending
- 2005-05-20 WO PCT/US2005/017744 patent/WO2005114410A2/en not_active Application Discontinuation
- 2005-05-20 EP EP05753245A patent/EP1683014A4/en not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10742568B2 (en) | 2014-01-21 | 2020-08-11 | Oracle International Corporation | System and method for supporting multi-tenancy in an application server, cloud, or other environment |
US11343200B2 (en) | 2014-01-21 | 2022-05-24 | Oracle International Corporation | System and method for supporting multi-tenancy in an application server, cloud, or other environment |
US11683274B2 (en) | 2014-01-21 | 2023-06-20 | Oracle International Corporation | System and method for supporting multi-tenancy in an application server, cloud, or other environment |
KR20170044639A (ko) * | 2014-06-23 | 2017-04-25 | 오라클 인터내셔날 코포레이션 | 멀티테넌트 어플리케이션 서버 환경에서 작업 관리자를 제공하는 시스템 및 방법 |
JP2017519308A (ja) * | 2014-06-23 | 2017-07-13 | オラクル・インターナショナル・コーポレイション | マルチテナントアプリケーションサーバ環境におけるワークマネージャを提供するためのシステムおよび方法 |
KR102375129B1 (ko) * | 2014-06-23 | 2022-03-16 | 오라클 인터내셔날 코포레이션 | 멀티테넌트 어플리케이션 서버 환경에서 작업 관리자를 제공하는 시스템 및 방법 |
JP2016103258A (ja) * | 2014-11-18 | 2016-06-02 | 富士通株式会社 | 並列演算装置、並列演算システム、およびジョブ制御プログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2005114410A2 (en) | 2005-12-01 |
AU2005246373B2 (en) | 2008-10-02 |
WO2005114410A3 (en) | 2007-07-05 |
EP1683014A4 (en) | 2008-07-09 |
EP1683014A2 (en) | 2006-07-26 |
US7657892B2 (en) | 2010-02-02 |
US20050262507A1 (en) | 2005-11-24 |
AU2005246373A1 (en) | 2005-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007529079A (ja) | 自己調節スレッド化モデルによるアプリケーションサーバのためのシステム及び方法 | |
US11593152B1 (en) | Application hosting in a distributed application execution system | |
US8387052B2 (en) | Adaptive partitioning for operating system | |
US6269391B1 (en) | Multi-processor scheduling kernel | |
US6003061A (en) | Method and system for scheduling the use of a computer system resource using a resource planner and a resource provider | |
US7716668B2 (en) | System and method for scheduling thread execution | |
US6223201B1 (en) | Data processing system and method of task management within a self-managing application | |
CN111522639A (zh) | Kubernetes集群架构系统下多维资源调度方法 | |
US6763520B1 (en) | Fair assignment of processing resources to queued requests | |
JP3008896B2 (ja) | 共有バス型マルチプロセッサシステムの割り込み負荷分散システム | |
US5440741A (en) | Software overload control method | |
CN109564528B (zh) | 分布式计算中计算资源分配的系统和方法 | |
US7150020B2 (en) | Resource management | |
US8881161B1 (en) | Operating system with hardware-enabled task manager for offloading CPU task scheduling | |
US7694054B2 (en) | Governing access to a computing resource | |
US9361156B2 (en) | Adaptive partitioning for operating system | |
US8831026B2 (en) | Method and apparatus for dynamically scheduling requests | |
US6418517B1 (en) | Optimized function execution for a multiprocessor computer system | |
US9792419B2 (en) | Starvationless kernel-aware distributed scheduling of software licenses | |
Krompass et al. | Quality of service enabled database applications | |
CA2316643C (en) | Fair assignment of processing resources to queued requests | |
Rajeshram et al. | Heuristics based multi queue job scheduling for cloud computing environment | |
US20130042247A1 (en) | Starvationless Kernel-Aware Distributed Scheduling of Software Licenses | |
Gao et al. | Frameworks of Composite Services Execution Engine with Feedback Control | |
JPH0460842A (ja) | 計算機システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090223 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090907 |