JP2000029815A - スレッド・サ―バのパフォ―マンス強化方法および装置 - Google Patents

スレッド・サ―バのパフォ―マンス強化方法および装置

Info

Publication number
JP2000029815A
JP2000029815A JP11141099A JP14109999A JP2000029815A JP 2000029815 A JP2000029815 A JP 2000029815A JP 11141099 A JP11141099 A JP 11141099A JP 14109999 A JP14109999 A JP 14109999A JP 2000029815 A JP2000029815 A JP 2000029815A
Authority
JP
Japan
Prior art keywords
connection
queue
thread
threads
stage
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
JP11141099A
Other languages
English (en)
Other versions
JP3555846B2 (ja
Inventor
Michael Livecchi Patrick
パトリック・マイケル・リベッキ
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2000029815A publication Critical patent/JP2000029815A/ja
Application granted granted Critical
Publication of JP3555846B2 publication Critical patent/JP3555846B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 マルチスレッド・サーバ・アプリケーション
を実行するコンピュータのパフォーマンスを強化する技
法、システム、およびコンピュータ・プログラムを提供
する。 【解決手段】 使用可能なスレッドの数を最適化するス
ケジューリング・ヒューリスティックを規定する。この
ヒューリスティックは、着信要求のためにブロック・ス
レッドを覚醒させるのではなく、(スレッドの現在の作
業の完了時に)現在実行中のスレッドに着信要求を割り
当てるのを待つ技法を規定することによって、作業スレ
ッドのオーバースケジューリングを改善する。どのスレ
ッドも長時間待ちすぎないようにするための措置が施さ
れる。受動ソケットに2つの段階を関連づけ、それによ
って、接続が、その接続のために作業が到着したときに
のみ作業スレッドに結合されるようにする。複数の入力
源からの入力をマージし、そのマージされた入力をスケ
ジューリングに使用できるようにする、新規なタイプの
ソケットを規定する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンピュータのパフ
ォーマンスに関し、より詳細には、マルチスレッド・サ
ーバ・アプリケーションを実行するコンピュータのパフ
ォーマンスを強化する技法、システム、およびコンピュ
ータ・プログラムを対象とする。使用可能なスレッドの
数を最適化するようにスケジューリング・ヒューリステ
ィック(heuristic)を規定する。データが送信中でな
い場合に接続にスレッドが割り当てられないように保証
するために、受動ソケットのための2段階待ち行列を規
定する。複数の入力源からの入力をマージし、マージさ
れた入力をスケジューリングに使用できるようにする、
新規なタイプのソケットを規定する。持続接続を使用す
る場合に着信要求へのスレッドの割当てを最適化する関
数を規定する。
【0002】
【従来の技術】マルチスレッド・アプリケーションと
は、複数のスレッドによる並列実行をサポートするソフ
トウェア・プログラム、すなわち再入可能プログラムで
ある。スレッドとは、そのようなプログラム内の単一の
実行経路である。スレッドは、使用可能なスレッドにタ
イム・スライスを割り振るオペレーティング・システム
・スケジューラの制御下で、1つのプロセス内で順次に
実行される。プロセスは、実行中のプログラムの1つの
インスタンスである。オペレーティング・システムは各
並列スレッドに関する情報を維持し、この情報は、各タ
イム・スライスでスレッドがCPUを共用することがで
きるようにするが、それにもかかわらず互いに区別可能
であるようにする。たとえば、スレッドごとに異なる現
行命令ポインタが維持され、レジスタの値も同様に維持
される。明確な状態情報を維持することによって、再入
可能プログラム全体の各実行経路は、別々のプログラム
が実行されているかのように独立して機能することがで
きる。オープンI/O(入出力)ストリームのための仮
想メモリやファイル記述子など、その他の状態情報は、
実行効率向上のためにプロセス内のすべてのスレッドに
よって共用される。SMP(対称マルチプロセッサ)マ
シン上では、これらのスレッドのいくつかを同時に実行
することができる。再入可能プログラムは、複数の実行
経路でのこれらの共用資源を同期させる機構を含むこと
ができる。
【0003】インターネット環境で稼働しているサーバ
上では、マルチスレッド・アプリケーションがますます
普及しつつある。インターネットは、世界中の場所か
ら、ネットワークとして相互接続された膨大なコンピュ
ータ資源の集まりである。インターネットは、毎日数百
万人の人々によって使用されている。ワールド・ワイド
・ウェブ(本明細書では「ウェブ」と呼ぶ)は、インタ
ーネットのうち、メッセージを交換するためのプロトコ
ルとしてHyperText転送プロトコル(「HTTP」)を
使用する部分である。(あるいは、「HTTPS」プロ
トコルを使用することができ、このプロトコルはHTT
Pのセキュリティ強化版である。)
【0004】インターネットのユーザは一般に、インタ
ーネット・サービス・プロバイダ(ISP)のサービス
を介してネットワーク接続を確立することによってイン
ターネットにアクセスし、使用する。ISPは、コンピ
ュータ・ユーザが、コンピュータ・モデム(または衛星
伝送などのその他の接続機構)を使用して電話番号をダ
イヤルし、それによってISPが所有または管理する遠
隔コンピュータとの接続を確立できるようにする。その
後で、この遠隔コンピュータはユーザのコンピュータに
サービスを提供する。典型的なサービスとしては、イン
ターネットの相互接続されたコンピュータ全体でユーザ
が求める項目を検索する検索機能、検索機能を使用して
探し出された情報を表示するブラウズ機能、ユーザが他
のコンピュータ・ユーザとの間でメール・メッセージの
送受信を行うことができる電子メール機能の提供などが
ある。
【0005】ウェブ環境で作業するユーザは、ユーザの
コンピュータ上で実行され、情報を求める要求の作成と
送信を行い、その結果を見ることができるようにするソ
フトウェアを持つ。これらの機能は、一般には「ウェブ
・ブラウザ」または「ブラウザ」と呼ばれるものとして
組み合わされている。ユーザがブラウザを使用して要求
を作成した後、その要求メッセージは処理のためにイン
ターネットに送出される。要求メッセージの宛先は、イ
ンターネットのネットワーク内の相互接続されたコンピ
ュータの1つである。そのコンピュータは、メッセージ
を受け取り、ユーザの要求を満たすデータの検索を試
み、ユーザのブラウザを使用して表示するためにそのデ
ータを形式設定し、形式設定された応答をユーザのコン
ピュータ上で実行されているブラウザ・ソフトウェアに
返す。同じコンピュータに多くのクライアントがアクセ
スすることができるようにするために、クライアントの
要求の受け取りや処理を行うコンピュータは一般にはマ
ルチスレッド・アプリケーションを実行する。これで、
このアプリケーションの同じインスタンスが複数の要求
を処理することができ、その際、別々のスレッドを使用
して1つのクライアントの要求が他のクライアントの要
求から分離される。
【0006】これは、クライアント/サーバ・コンピュ
ーティング・モデルの一例であり、ユーザが情報を要求
するマシンはクライアントと呼ばれ、その情報を探し出
してクライアントに返すコンピュータがサーバである。
ウェブ環境では、サーバは「ウェブ・サーバ」と呼ばれ
る。クライアント/サーバ・モデルは、「三層アーキテ
クチャ」と呼ばれるものに拡張することができる。この
アーキテクチャは、ウェブ・サーバを中央層に配置し、
それに付加された層は典型的には、クライアントの要求
を処理するタスクの一部としてウェブ・サーバがアクセ
スすることができる情報のデータベースを表す。この三
層アーキテクチャは、多くのクライアント要求が単に静
的データの検索と返送を求めているだけでなく、返され
るデータを動的に作成するためにクライアントの要求を
処理するアプリケーション・プログラムを必要としてい
ることを認識している。このアーキテクチャでは、ウェ
ブ・サーバは「アプリケーション・サーバ」とも呼ばれ
ることがある。サーバがマルチスレッド・アプリケーシ
ョン・プログラムを実行する場合、サーバを「スレッド
・サーバ」または「マルチスレッド・サーバ」と呼ぶこ
ともある。
【0007】サーバは、スレッドを処理する役割を負
う。本明細書では、作成されたが廃棄されていないスレ
ッドのセットをスレッドの「プール」と呼ぶ。プールの
ために作成されるスレッドの数は一般にはユーザ(たと
えばシステム管理者)が、サーバを初期設定するときに
構成パラメータとして指定する。一般には、このパラメ
ータは、予想最大接続負荷(すなわち着信クライアント
要求の最大数)を扱うために、サーバが多数のスレッド
を作成するように設定される。
【0008】TCP/IPプロトコル(転送制御プロト
コル/インターネット・プロトコル)が、ネットワーク
でデータを伝送する事実上の標準方法であり、インター
ネット伝送で広く使用されている。TCP/IPは、2
つのコンピュータ間でデータを交換するために2つの
「ソケット」間の接続という概念を使用し、ソケットは
それらコンピュータのうちの一方のコンピュータを識別
するアドレスと、そのコンピュータ上の特定のプロセス
を識別するポート番号とから成る。ポート番号によって
識別されたプロセスは、そのソケットのために着信デー
タを受け取るプロセスである。ソケットは、典型的には
その接続を使用する2つのコンピュータの各コンピュー
タによって待ち行列として実施され、接続でデータを送
信するコンピュータは作成したデータを送信のために接
続待ち行列に入れ、接続でデータを受信するコンピュー
タはそのデータを処理するために着信データを待ち行列
に入れる。
【0009】いくつかのクライアントから要求を受け取
るアプリケーションの場合、保留クライアント接続の待
ち行列を表す特別な「受動」ソケットが作成される。こ
のアプリケーションのサービスを必要とする各クライア
ントは、同じサーバ・ポート番号を使用して、この受動
ソケットへの接続を要求する(ただし、セキュア・ソケ
ット層(「SSR」)などの保護プロトコルを使用する
通信は一般には、同じアプリケーションに、セキュリテ
ィなしの「通常の」通信とは異なるポート番号を使用す
る。)サーバは、この特別な受動ソケットから保留クラ
イアント接続を受け入れる。これによって新しいサーバ
・ソケットが作成され、次に、そのソケットが処理のた
めに使用可能なスレッドに割り当てられる。
【0010】この環境で稼働するマルチスレッド・サー
バ・アプリケーションを実施する現行の手法にはいくつ
かの欠点があり、その結果、そのようなアプリケーショ
ンの最適パフォーマンスが満たされないことになる。数
千または数百万もの1日当たりの「ヒット」(すなわち
処理を求めるクライアント要求)を受け取ることがあ
る、ウェブ・サーバ上で稼働するアプリケーションなど
のアプリケーションが普及するにつれて、パフォーマン
スは重要な問題になる。本発明はこのようなパフォーマ
ンス上の問題に対処する。
【0011】既存のサーバ実装では、別個の「ディスパ
ッチャ」スレッドが、所与のアプリケーションのための
受動ソケットに対する着信接続要求を受け取る待ち行列
を監視する役割を果たす。ディスパッチを行うスレッド
と、作業のディスパッチ先のスレッドとを区別するため
に、本明細書では後者を「作業スレッド」と呼ぶ。ディ
スパッチャ・スレッドは、各作業スレッドの状況を追跡
し、各着信要求を使用可能なスレッドに割り当てる。
「使用可能な」スレッドとは、実行可能であるが、現在
割り当てられている作業がないスレッドである。この状
態のスレッドを「遊休スレッド」と呼ぶこともある。遊
休スレッドに作業が割り当てられると、そのスレッドは
もはや遊休とはみなされず、その現在の作業要求が完了
するまではそれ以上の作業は割り当てられない。SMP
マシン上では、ディスパッチャ・スレッドは、作業スレ
ッドがすべてのプロセッサを使用中にしておくのに十分
な速さでケジュールされるのを妨げるボトルネックにな
る可能性がある。
【0012】あるいは、ディスパッチャ・スレッドを使
用せずにサーバを実施することもできる。この手法で
は、スレッドは受動ソケット待ち行列を調べて接続要求
がないかどうかを判断する役割を負う。各スレッドは処
理していた作業要求を完了すると、待ち行列で次の要求
を探す。要求が待機中である場合、スレッドはその要求
を待ち行列から取り出し、その処理を開始する。待機中
の要求がない場合、スレッドは遊休スレッドになる。そ
の後、遊休スレッドは「スリープ」することがあり、そ
の場合、システム・タイマを使用してそのスレッドを所
定期間待機させた後、「覚醒」させて作業が到着してい
ないかどうか待ち行列を再度調べさせる。これは「ポー
リング」モードと呼ばれる。ポーリング・モードに代わ
るより一般的な代替手法は、イベント・ドリブン割込み
を使用することである。この手法では、スレッドは遊休
状態になり、作業が到着すると呼び出されてスレッドに
再度アクティブになるように通知するシステム割込みを
待つ。遊休状態になることを「ブロック」と呼び、ブロ
ック状態から覚醒されること(すなわち割込みを受け取
ること)を「アンブロック」と呼ぶ。
【0013】イベント・ドリブン割込みを使用する現行
のサーバ実装では、各作業スレッドは現行要求を完了す
ると、受動ソケット待ち行列を調べて要求が待機してい
ないかどうかを調べる。待機している要求がない場合、
スレッドはブロックする。所与の時点で任意の数のスレ
ッドをブロックすることができる。次の着信要求が到着
すると、スレッドを覚醒させるイベントが生成される。
ブロックされた各作業スレッドはこの割込みを受け取
り、したがって各ブロックはアンブロックして、待ち行
列から要求の取り出しを試みる。着信要求を受け取るこ
とができるのは最初の作業スレッドだけであり、他のス
レッドは再度待ち行列が空であるのを認めて、ブロック
状態に戻る。しかし、この割込み生成手法を変える新し
いAPI(アプリケーション・プログラミング・インタ
フェース)が開発中である。このAPIを本明細書では
「アクセプト・アンド・レシーブ(accept_and_receiv
e)と呼ぶ。アクセプト・アンド・レシーブ(accept_an
d_receive)APIによると、着信要求が到着すると、
単一のブロックスレッドに対してのみ割込みが生成され
る。
【0014】この新しい割込み手法によって、本明細書
で扱う第1のパフォーマンス問題が生じ、これを本明細
書では「オーバースケジューリング」と呼ぶ。着信接続
の数がスレッド・プール内のスレッドの数より少ない場
合(すなわち、接続負荷がサーバの構成最大値よりも小
さい場合)、その作業負荷を処理するために使用される
プール内のスレッドが多すぎる。言い換えると、スレッ
ド・プールはオーバースケジューリングされている。こ
れによって資源の使用効率が悪くなる。
【0015】以下の事例で、オーバースケジューリング
問題を例示する。すべてのスレッドがブロックされ、接
続要求を待っているとする。第1の要求が到着する。シ
ステム・スケジューラはこれらのブロック・スレッドの
1つを覚醒させ、着信要求をそのスレッドに割り当て
る。そのスレッドは要求の処理を開始する。次に、第2
の要求が到着し、そのため、スケジューラは第2のブロ
ック・スレッドを覚醒させ、この新しい要求をそのスレ
ッドに割り当てる。第2のスレッドはこの新しい要求の
処理を開始する。第1のスレッドは作業していた要求を
完了し、受動ソケットを調べる。受動ソケットに新しい
接続要求がないことがわかり、第1のスレッドはブロッ
クする。2つの要求について、スケジューラは2つのス
レッドを覚醒させている。
【0016】しかし、第2の要求が到着した時点で、第
1のスレッドはその第1の要求の処理をほとんど完了し
ようとしている場合がある。その場合、第2のスレッド
を覚醒させるのではなく、第1のスレッドが完了し、受
動ソケットを調べたときに第2の要求を見つけるのを待
つ方がより効率的であろう。スケジューラが各着信要求
ごとに新しいスレッドを覚醒させた場合(すなわちスレ
ッドをオーバースケジュールした場合)、要求を処理す
るスレッドは、現行要求を完了して別の要求がないか調
べたときに着信接続待ち行列が空であることを見いだす
ことが確実である。ブロック操作とアンブロック操作の
繰り返しは、要求を処理するための全体的パス長の点で
不経済である。スレッドがブロックすると、スケジュー
ラはそのスレッドのコンテキスト情報を保管し、スレッ
ドは「実行可能」状態から「ブロック」状態に移行す
る。アンブロック操作には、割込み処理に伴うかなりの
オーバーヘッドを要する。
【0017】オーバースケジューリング中にシステムの
パフォーマンスに及ぼす他の影響は、メモリ・ページン
グ機構によるものである。スレッドは実行されると記憶
情報を参照する。その情報は処理するためにメモリに入
っていなければならない。まだメモリに入っていない場
合はページインされる。一般に、1つのページをページ
インするための空きを作るために他のページがページア
ウトされなければならない。ページング機構は、アルゴ
リズムを使用してどのページをページアウトするかを決
定する。通例、最も長い期間使用されなかった(LR
U)ページがページアウトのために選択される。オーバ
ースケジューリングが起こると、各スレッドは実行後に
ブロックし、したがってそのページは使用されなくな
る。スレッドが部録する期間が長いほど、そのページが
ページアウトされる可能性が高くなる。その後、スレッ
ドが覚醒されると、そのページをページインし戻さなけ
ればならず、それによって別のスレッドのページがペー
ジアウトされる。これらのページング操作によって生じ
る余分な処理によって、着信要求の処理効率が低下す
る。
【0018】さらに、空であることがわかるだけの受動
ソケットを調べる操作は無駄な操作であり、それによっ
てブロック・スレッドの効率が低下する。
【0019】本明細書では第2のパフォーマンス問題を
「複数入力源」問題と呼ぶ。前述のように、サーバ・ア
プリケーションは1つの受動ソケットで非セキュア接続
要求を受け取り、もう一つの受動ソケットでセキュア接
続要求を受け取ることがある。これは、たとえばオンラ
イン・ショッピング・アプリケーションの場合である。
クライアント買物客は、オンライン・カタログから入手
可能な製品を表示するように要求し、最終的に注文する
いくつかの製品を選択する。情報の表示を求めるこのよ
うな要求は、セキュア接続に付随する付加的な処理オー
バーヘッドを生じさせないように、通常は非セキュア接
続で送信される。買物客は注文を行うときに、クレジッ
ト・カードによる支払いを選択し、自分のクレジット・
カード情報を電子的に発信することがある。買物客の情
報を保護するために、買物客のトランザクションのこの
部分はセキュア接続で送信される。一般には、販売業者
はショッピング・トランザクションの全シーケンスに同
じサーバ・アプリケーションを使用する。したがって、
アプリケーションは、2つの受動ソケットから非セキュ
ア接続要求とセキュア接続要求の両方を受け入れること
ができなければならない。
【0020】ウェブ・サーバが複数のホスト名をホスト
しており、各ホスト名がそれ自体のIPアドレスを有す
る場合、各ホスト名に1対の受動ソケットが使用され
る。したがって、所与のアプリケーションが多くの受動
ソケットに到着する接続を受け入れる必要がある場合が
ある。このようなソケットのセットを本明細書では「複
数入力源」と呼ぶ。
【0021】ソケット待ち行列管理の前述のディスパッ
チャ・スレッド手法では、各受動ソケットに1つのディ
スパッチャ(または「アクセプタ」)スレッドが割り振
られる。着信接続要求が到着すると、これらのディスパ
ッチャはスレッド・プールから使用可能な作業スレッド
を見つけ、そのスレッドに着信要求を割り当てる役割を
果たす。ディスパッチャ・スレッドの数が増えるにつれ
て、作業スレッドの共用プールの管理をめぐるそれらの
スレッド間の衝突も増える。
【0022】ディスパッチャ・スレッドを使用せず、着
信待ち行列を調べる役割が作業スレッドにある場合、ス
レッド・プールは受動ソケット待ち行列のセット全体で
静的に区分化されることになる。特定の時点での作業負
荷と、それに対応する受動ソケット間での要求の分配は
予測不能なため、この静的区分化は最適状態を下回る可
能性がきわめて高くなる。1つの待ち行列のスレッド
は、その作業負荷を処理するには少な過ぎ、別の待ち行
列は多過ぎる場合がある。使用可能なスレッドが少なす
ぎる場合、着信要求は待ち行列上で待たなければなら
ず、その間に使用可能なシステム能力が遊休状態のまま
になる。着信要求には通常、応答を待っている人間がい
るため、応答を処理する際のこのタイプの遅延は、最大
限回避しなければならない。使用可能なスレッドが多す
ぎる場合、オーバースケジューリングについて前述した
非効率が生じる。受動ソケット間での作業の現在の分配
に基づいて作業スレッドのプールを分割するより動的な
区分化は、受動ソケット上の接続待ち行列内項目数がサ
ーバ・アプリケーションには入手できないために、サー
バ・アプリケーションによって行うことはできない。
【0023】第3のパフォーマンス問題を、本明細書で
は「持続接続スケジューリング」と呼ぶ。持続接続機能
は、HTTPの1.1版で導入され、クライアントとサ
ーバの間の要求(およびそれに対応する応答)のストリ
ームに単一の接続を使用できるようにする。持続接続
は、一連の要求の処理に付随するオーバーヘッドの量を
少なくし、それによって普通なら個別要求ごとに必要に
なるTCP接続のセットアップとティアダウンのコスト
をなくし、1回のセットアップと1回のティアダウンを
使用することを意図したものである。結果は、クライア
ントのもとで生成された各要求が新しい接続を生み出
し、それはその要求の持続時間の間だけ持続した。接続
をセットアップするのにメッセージの交換が必要であ
り、それを閉じるのにもう一度交換が必要だった。多く
のウェブ・ベースのアプリケーションは、ユーザに対し
てきわめて複雑な情報ページを表示し、各ページでネッ
トワークを介していくつかの別々の要求を送信する必要
がある場合がある。たとえば、ページ上の各グラフィッ
ク画像ごとに1つの要求を送信し、静的テキストのため
に別の要求、動的生成テキストのためにさらに他の要求
が送信される場合がある。したがって、単一のウェブ・
ページの表示に、持続接続を使用すれば相当量の処理オ
ーバーヘッドが節減される。すなわち、2つのコンピュ
ータ間で使用するために1つの接続を設定した後は、ク
ライアントは、サーバがそれらの要求の各要求を受け取
ったという肯定応答を待つために停止せずに、その接続
を介して任意の数の要求を送信することができる。これ
を要求の送信の「ストリーム」モードと呼ぶ。サーバは
ストリームのすべての要求に順に応答する必要がある。
クライアントまたはサーバは、プロトコル・エラーを生
じさせることなく、任意の要求境界で接続を終了するこ
とができる。
【0024】実際には、ユーザが異なるウェブ・サイト
に移動する(異なるサーバ・ソケット・アドレスと、そ
れに応じて新しい接続が必要になる)まで、ブラウザ内
のクライアント・ソフトウェアがこの持続接続を開いた
ままに維持する。開いた持続接続で最後の要求が送信さ
れてからユーザが新しいサイトに移動するまでの間にあ
る程度の時間が経過することがある。既存の接続のソケ
ットには、この時間中、着信データがまったくなくな
る。サーバ・アプリケーションは、ソケットがこの特定
の状態(すなわち、クライアントはデータの送信を終了
しているが、接続はまだ開いている状態)であるかどう
か、またはクライアントが次の要求をまだ生成していな
いだけなのかどうかを知ることができない。したがっ
て、このタイプの接続の次の要求の読取りに関してサー
バ側に不確定性が存在する。待ち行列にデータがある可
能性もあり、データがまもなく着信するか、またはデー
タがしばらくの間着信しない可能性もある。しかも、こ
れらのデータ・パケットのいずれかに、その接続で進行
中の作業を求めるクライアント要求や、ソケットを閉じ
る要求が入っている可能性もある。
【0025】データが間もなく着信する場合は、その作
業スレッドとの接続を結合した状態に維持し、作業スレ
ッドが一時的に遊休状態になるようにするのが最も効率
的である。しかし、データが着信するまで長い遅延時間
がある場合は、作業スレッドをその接続から結合解除
し、その作業スレッドを別の要求に割り当てた方がより
効率的である。その後、その結合解除された接続を求め
る次の要求が着信した場合、その処理を続けるためにス
レッド(元々結合されていたスレッドとは異なるスレッ
ドである可能性が最も高い)を割り当てる。どの接続が
所与の要求間での遅延が長くなるか、そのような遅延が
いつ発生するか、または遅延がどれだけ長く続くかを前
もって知る方法がない。作業スレッドのプールを、新し
い接続を受け入れるスレッドと、遅延後に再アクティブ
化する接続を処理するスレッドとを区分化する試みは、
複数入力源問題に関して前述したのと同様の問題を生じ
させる。すなわち、いずれかの区分に割り当てられるス
レッドが多すぎたり少なすぎたりすることによって、非
効率になる。
【0026】したがって、マルチスレッド・サーバ・ア
プリケーションの現行の実施システムにおけるこれらの
非効率問題を克服する技法が必要である。本提案の技法
は、使用可能スレッドの数を最適化するスケジューリン
グ・ヒューリスティックと、受動ソケットのための2段
階待ち行列と、複数の入力源からの入力をマージし、そ
のマージされた入力をスケジューリングに使用できるよ
うにする新しいタイプのソケットと、持続接続を使用す
る場合に着信要求へのスレッドの割当てを最適化する関
数とを規定する。
【0027】
【発明が解決しようとする課題】本発明の目的は、マル
チスレッド・サーバのパフォーマンスを強化する技法を
提供することである。
【0028】本発明の他の目的は、作業スレッドに対す
る要求のスケジューリングを最適化することによって上
記のパフォーマンス強化を実現する技法を提供すること
である。
【0029】本発明の他の目的は、使用可能スレッドの
数を最適化するスケジューリング・ヒューリスティック
を規定することによって、上記の最適化を実現すること
である。
【0030】本発明の他の目的は、複数の入力源からの
入力をマージする新しいタイプのソケットを規定し、そ
のマージされた入力をスケジューリングに使用できるよ
うにすることによって上記の最適化を実現することであ
る。
【0031】本発明の他の目的は、持続接続を使用する
場合に着信要求へのスレッドの割当てを最適化する関数
を規定することによって、上記の最適化を実現すること
である。
【0032】本発明のその他の目的および利点は、一部
は以下の説明、一部は図面に記載され、その説明を読め
ば明らかになるであろうし、本発明の実施によってわか
るであろう。
【0033】
【課題を解決するための手段】上記の目的を達成するた
めと、本明細書で概説する本発明の目的により、本発明
は、ネットワークへの接続を有するコンピューティング
環境において使用し、マルチスレッド・アプリケーショ
ンのパフォーマンスを強化するシステム、方法、および
ソフトウェア・プロセスを実施するコンピュータ可読コ
ードであって、接続を求める複数のクライアント要求
と、複数の作業スレッドと、前記複数のクライアント要
求を受け取るサブプロセスと、前記作業スレッドのオー
バースケジューリングを改善するスケジューリング・ヒ
ューリスティックを実施するサブプロセスとを含むシス
テム、方法、およびコンピュータ可読コードを提供す
る。さらに、前記作業スレッドの第1のグループはアク
ティブ・スレッドであり、前記第1のグループは、前記
複数の作業スレッドのうちの変更可能な作業スレッドか
ら成り、変更可能な数の前記変更可能スレッドを有し、
前記変更可能な数は少なくとも1であり、スケジューリ
ング・ヒューリスティックを実施する前記サブプロセス
は、前記第1のグループにおける前記変更可能な数を、
前記複数のクライアント要求のうちの1つまたは複数の
クライアント要求から成る現行作業負荷に照らしてバラ
ンスをとるサブプロセスをさらに含む。バランスをとる
前記サブプロセスは、平均遅延と、最大遅延の使用も含
むことができる。前記平均遅延と前記最大遅延は構成パ
ラメータであることが好ましい。作業スレッドの前記第
1のグループに加えて、ブロック・スレッドであり、後
入れ先出し待ち行列に格納される前記作業スレッドの第
2のグループも存在することができる(前記第2のグル
ープは、前記複数の作業スレッドのうち前記第1のグル
ープに入っていない作業スレッドから成る)。さらに、
本発明は、マルチスレッド・アプリケーションのパフォ
ーマンスを強化するシステム、方法、およびコンピュー
タ可読コードであって、各前記接続が受け入れられる場
合に保留接続待ち行列から接続を第1の待ち行列に移動
させるサブプロセスと、前記接続のための最初のデータ
・パケットが着信すると前記第1の待ち行列から各前記
接続を第2の待ち行列に移動させるサブプロセスと、前
記第2の待ち行列上の各前記接続に作業スレッドを割り
当てるサブプロセスとを含む、システム、方法、および
コンピュータ可読コードを提供する。さらに、本発明
は、マルチスレッド・アプリのパフォーマンスを強化す
るシステム、方法、およびコンピュータ可読コードであ
って、複数の入力源から入力を受け取るサブプロセス
と、受け取った前記入力をスケジューリングのために単
一の待ち行列上にマージするサブプロセスとを含む、シ
ステム、方法、およびコンピュータ可読コードを提供す
る。これは、各前記接続が受け入れられる場合、保留接
続待ち行列から接続を第1の待ち行列に移動させるサブ
プロセスと、前記接続のための最初のデータ・パケット
が着信すると各前記接続を前記第1の待ち行列から前記
単一の待ち行列に移動させるサブプロセスと、前記単一
の待ち行列上の各前記接続に作業スレッドを割り当てる
サブプロセスとをさらに含むことが好ましい。スケジュ
ーリングする前記サブプロセスは、複数の作業スレッド
のうちの変更可能な作業スレッドから成り、少なくとも
1である変更可能な数の前記変更可能作業スレッドを有
するアクティブ作業スレッドのグループと、前記単一待
ち行列上に格納された前記クライアント要求から成る現
行作業負荷に照らして前記アクティブ・グループ内の前
記変更可能数のバランスをとるスケジューリング・ヒュ
ーリスティックを実施するサブプロセスとをさらに含む
ことが好ましい。さらに、本発明は、マルチスレッド・
アプリケーションのパフォーマンスを強化するシステ
ム、方法、およびコンピュータ可読コードであって、複
数の持続接続と、複数の作業スレッドと、前記持続接続
のうちの選択された持続接続を前記作業スレッドのうち
の選択された作業スレッドに結合するサブプロセスであ
って、その実行の結果として結合された接続ができるサ
ブプロセスと、前記結合された接続のうちの選択された
接続を結合解除するサブプロセスであって、その実行の
結果として作業スレッドが結合解除されるサブプロセス
とを含む、システム、方法、およびコンピュータ可読コ
ードを提供する。結合する前記サブプロセスは、2段階
待ち行列の使用をさらに含み、結合解除する前記サブプ
ロセスは前記2段階待ち行列の使用をさらに含むことが
好ましい。前記2段階待ち行列を使用して結合する前記
サブプロセスは、前記接続のために最初のデータ・パケ
ットが着信すると各前記持続接続を前記第1の段階に移
動させるサブプロセスと、前記接続のためにデータを受
け取ると各前記持続接続を前記第2の段階から前記第1
の段階に移動させるサブプロセスと、前記第1の段階か
ら前記持続接続をスケジューリングするサブプロセスと
をさらに含み、前記2段階待ち行列を使用して結合解除
する前記サブプロセスは、選択された前記結合接続が遊
休状態になると、前記結合された接続のうちの選択され
た接続を前記第1の段階から前記第2の段階に移動させ
るサブプロセスと、最大遊休期間を超えるとそれに応答
して、前記第2の段階内の前記持続接続のうちの選択さ
れた持続接続を閉じるサブプロセスと、結合解除された
前記作業スレッドを前記結合サブプロセスに使用するこ
とができるようにするサブプロセスとをさらに含む。結
合解除する前記サブプロセスは、最大遊休接続数を超え
るとそれに応答して、前記第2の段階内の前記持続接続
のうちのさらに選択された持続接続を閉じるサブプロセ
スをさらに含むことが好ましい。
【0034】
【発明の実施の形態】図1に、本発明を実施することが
できる代表的なワークステーション・ハードウェア環境
を示す。図1の環境は、関連する周辺装置を含むパーソ
ナル・コンピュータなどの代表的なコンピュータまたは
インテリジェント・ワークステーション10を含む。あ
るいは、ワークステーション10は、ネットワーク環境
におけるサーバとすることもできる。ワークステーショ
ン10は、マイクロプロセッサ12と、周知の技法によ
りマイクロプロセッサ12とワークステーション10の
構成要素とを接続し、それらの間の通信を可能にするバ
ス14とを含む。ワークステーション10は、典型的に
は、バス14を介してマイクロプロセッサ12を、キー
ボード18、マウス20、またはタッチ・センシティブ
画面、ディジタイズ入力パッドなどの任意のユーザ・イ
ンタフェース装置とすることができるその他のインタフ
ェース装置22など、1つまたは複数のインタフェース
装置と接続するユーザ・インタフェース・アダプタ16
を含む。バス14は、ディスプレイ・アダプタ26を介
してLCD画面またはモニタなどの表示装置24もマイ
クロプロセッサ12に接続する。また、バス14はマイ
クロプロセッサ12を、メモリ28およびハード・ドラ
イブ、ディスケット・ドライブ、テープ・ドライブなど
の長期記憶域30にも接続する。
【0035】ワークステーション10は、通信チャネル
32を介して他のコンピュータまたはコンピュータのネ
ットワークと通信する。ワークステーション10は、ロ
ーカル・エリア・ネットワーク(LAN)やワイド・エ
リア・ネットワーク内などの他のコンピュータと関連づ
けることができ、あるいはワークステーション10は、
他のコンピュータなどとのクライアント/サーバ構成に
おけるクライアントとすることもできる。これらのすべ
ての構成と、適切な通信ハードウェアおよびソフトウェ
アは、当技術分野で周知である。
【0036】図2に、本発明を実施することができるデ
ータ処理ネットワーク40を示す。データ処理ネットワ
ーク40は、LAN42および44を含む複数の個別ネ
ットワークを含み、各ネットワークは複数の個別のワー
クステーション10を含む。あるいは、当業者ならわか
るように、LANはホスト・プロセッサに結合された複
数のインテリジェント・ワークステーションを含むこと
もできる。
【0037】図2を参照すると、データ処理ネットワー
ク40は、好ましくは通信リンク48を使用してLAN
44に結合することができるメインフレーム・コンピュ
ータ46などの、複数のメインフレーム・コンピュータ
またはサーバも含むことができる。メインフレーム・コ
ンピュータ46は、IBMが販売するエンタープライズ
・システム・アーキテクチャ/370(Enterprise Sys
tems Architecture/370)またはエンタープライズ・シ
ステム・アーキテクチャ/390(EnterpriseSystem A
rchitecture/390)コンピュータ、または他の任意のタ
イプのメインフレーム・コンピュータを使用して実施す
ることができる。応用分野によっては、アプリケーショ
ン・システム/400(Application System/400)(A
S/400とも呼ぶ)などの中規模コンピュータも使用
可能である。「エンタープライズ・システム・アーキテ
クチャ/370(Enterprise System Architecture/37
0)」はIBMの商標である。「エンタープライズ・シ
ステム・アーキテクチャ/390(Enterprise System
Architecture/390)」、「アプリケーション・システム
/400(Application System/400)」、および「AS
/400」はIBMの登録商標である。
【0038】メインフレーム・コンピュータ46は、L
AN44の遠隔記憶域として機能する記憶装置50にも
結合することができる。同様に、LAN44は、通信リ
ンク52に結合することができ、サブシステム制御装置
/通信コントローラ54および通信リンク56を介して
ゲートウェイ・サーバ58に結合することができる。ゲ
ートウェイ・サーバ58は、LAN42をLAN44と
リンクさせる役割を果たす個別コンピュータまたはイン
テリジェント・ワークステーションであることが好まし
い。
【0039】当業者なら、メインフレーム・コンピュー
タ46はLAN44から地理的に遠距離に配置すること
ができ、同様にLAN44はLAN42から遠距離に配
置することができることがわかるであろう。たとえば、
LAN42を米国カリフォルニア州に配置し、LAN4
4をテキサス州に配置し、メインフレーム・コンピュー
タ46をニューヨークに配置することができる。
【0040】本発明を実施するソフトウェア・プログラ
ミング・コードは、典型的には、クライアント/サーバ
環境または三層環境におけるサーバ46などのサーバに
インストールされ、サーバ46はワークステーション1
0などのコンピュータを有するユーザから送られる要求
を処理する。このコードは、典型的にはサーバ・メモリ
28内で実施され、バス14を使用してマイクロプロセ
ッサ12にアクセスすることができる。あるいは、この
コードは、CD−ROMドライブやハード・ドライブな
どの何らかのタイプの長期記憶媒体30からアクセスす
ることもできる。このソフトウェア・プログラミング・
コードは、ディスケット、ハード・ドライブ、CD−R
OMなど、データ処理システムと共に使用される様々な
周知の媒体のいずれの媒体上でも実施可能である。コー
ドは、そのような媒体で配布したり、他のコンピュータ
・システムで使用するために、1つのコンピュータ・シ
ステムのメモリまたは記憶域から何らかのタイプのネッ
トワークを介して他のコンピュータ・システムに配布し
たりすることができる。ソフトウェア・プログラミング
・コードをメモリ、物理媒体で実施したり、ソフトウェ
ア・コードをネットワークを介して配布する技法および
方法は周知であり、本明細書では詳述しない。
【0041】ウェブ環境におけるサーバは典型的には表
示装置24を備えない場合があるが、本発明の好ましい
実施形態は、本発明のスケジューリング最適化のために
必要なパラメータを(たとえばシステム管理者が)構成
することができるようにするために、表示装置24を使
用する。
【0042】本発明の好ましい実施形態について、図3
から図10を参照しながら以下に説明する。
【0043】好ましい実施形態では、本発明はコンピュ
ータ・ソフトウェア・プログラムとして実施される。こ
のプログラムは、クライアントがサーバに対してデータ
を求める要求を送信した場合に使用され、ネットワーク
のサーバ側で行われる処理の部分を含む。本発明は、複
数のスレッドを使用してアプリケーション処理を行うサ
ーバと共に機能する。典型的には、このプログラムはイ
ンターネット環境で使用され、サーバはウェブ・サーバ
であり、要求はHTTP(またはHTTPS)を使用し
て形式設定される。あるいは、ユーザのコンピュータが
その構成要素である企業イントラネット(すなわちユー
ザの会社内部で所有または管理されるネットワーク)に
接続を行うこともでき、その場合、この企業イントラネ
ットはインターネットと同様にしてサービスを提供す
る。本明細書では、特に明記のない限り、ユーザの要求
に関連づけられた処理について説明する場合の「インタ
ーネット」という用語の使用にはイントラネットで行わ
れる処理も含まれる。好ましい実施形態のプログラム・
コードは、Smalltalkなどのオブジェクト指向プログラ
ミング言語におけるオブジェクトとして、または「C」
などの従来の手続き型プログラミング言語の関数または
サブルーチンとして実施することができる。
【0044】図3から図5に、前述のオーバースケジュ
ーリング問題を改善する第1の好ましい実施形態に関係
する論理が記載されたフローチャートを示す。
【0045】図3は、要求を処理する接続があるかどう
かを判断するために作業スレッドによって実行される論
理を示す。このプロセスはステップ100から始まり、
この論理に入る前にこのスレッドがすでの要求を処理し
ていたかどうかを問い合わせる。回答が否定の場合、制
御はステップ115に移る。肯定の場合、ステップ10
5および110を実行することによってこのスレッドに
関する統計情報を収集する。ステップ105で、現在実
行中のスレッドの数のカウンタを減分する。(このカウ
ンタは、サーバが初期設定された場合、ゼロに初期設定
されていることになり、図4の説明で「I」と呼ぶ。)
ステップ110で、(スレッドが直前の接続を処理する
ために割り振られたときにステップ130で事前に記録
された開始時刻を使用して)スレッドが実行されていた
時間の長さを計算し、平均値を更新する(これについて
は図4を参照しながら詳述する)。次に制御はステップ
115に渡される。
【0046】ステップ115で、この作業スレッドによ
って処理可能になっている接続があるかどうかを判断す
る検査が行われる。この好ましい実施形態によると、接
続でデータが着信するまでは作業スレッドには接続が割
り当てられない。クライアントによっては、接続を要求
するが、その後でデータ要求を送信する前にその接続を
閉じる場合もある。クライアントがデータを送信してい
ることがわかるまで作業スレッドへの接続の割当てを遅
らせることによって、作業スレッドのこのよううな非生
産的な使用が回避される。まだデータを受信していない
受け入れられた接続をデータを受信している接続から区
別するために、2段階待ち行列を規定する。接続(すな
わち接続のための待ち行列要素)は受け入れられると
(さらにクライアントがその接続に肯定応答すると)第
1段階に移り、データが着信するまで第1段階にとどま
る。この第1段階を「受け入れられた接続待ち行列」と
も呼ぶ。データ・パケットが着信すると、その接続は第
2段階に移る。この第2段階を「実行可能待ち行列」と
も呼ぶ。作業スレッドは、第2段階に達した接続にのみ
割り当てられる。第1段階は先入れ先出し(FIFO)
待ち行列として実施することが好ましい。しかし、接続
のためにデータが着信すると待ち行列から接続が除去さ
れ、厳密にはFIFO方式ではないため、第1段階に要
素を記憶するために他の構造(リンク・リストなど)も
使用可能である。第2段階は、接続が待ち行列に着信し
た順序で待ち行列から出されるように、FIFO待ち行
列として実施されることが好ましい。この手法によっ
て、個別の接続が処理のためにスケジュールされる前
に、待機している他の接続と比較して過度に長い時間待
たない可能性が高くなる。待ち行列要素に状態変数を関
連づけて各接続の状況を示すなど、本発明の進歩的概念
から逸脱することなく、この処理を実施するために2段
階待ち行列に加えて他機構も使用可能であることは当業
者には明らかであろう。
【0047】ステップ115での検査の応答が否定の場
合(すなわち作業スレッドに割り当てられるのを待って
いる接続がない場合)、制御はステップ120に移り、
作業スレッドはブロック状態になる。その後、この作業
スレッドに関する図3のプロセスは終了する。作業スレ
ッドは、図4のステップ210または図5のステップ2
70に関して後述する論理に従ってアンブロックされる
ことになる。
【0048】この第1の好ましい実施形態では、ブロッ
ク作業スレッドは待ち行列内に保持され、これを「ブロ
ック・スレッド待ち行列」とも呼ぶ。この待ち行列は後
入れ先出し(LIFO)待ち行列として実施されること
が好ましい。ページング機構が新しいページをメモリに
入れるときにページを置き換えるために最長時間未(L
RU)使用方式を使用することを前提とすれば、ブロッ
クスレッドをLIFO待ち行列に入れることによって、
スレッドがアンブロックされたときにスレッドのページ
がメモリ内に残っている可能性がより高くなる。
【0049】ステップ115の検査で接続可能状態があ
る場合、制御はステップ125に進む。次にこの接続は
作業スレッドに割り当てられる。この接続のデータ要求
を含むソケット構造が、実行可能待ち行列から取り出さ
れ、スレッドに渡される。
【0050】ステップ130で、このスレッドがこの接
続の処理を開始した時刻として現在時刻が記録され、ス
テップ135で実行スレッドのカウンタが増分される。
これは、実行統計情報の収集を、後でスケジューリング
・ヒューリスティックで使用することができるようにす
るために行われる。その後、図3のプロセスは終了す
る。
【0051】作業レッドが受動ソケットでアクセプト・
アンド・レシーブ(accept_and_receive)APIを実行
するとき、図3の処理を呼び出すのはこのAPI呼出し
の実行である。しかし、図3はこのAPIとの併用には
限定されず、その論理は他の方法で(たとえば、同様の
受入れ接続機能の関数呼出しを実行して)呼び出すこと
もできる。
【0052】図3によって作業スレッドに割り当てられ
た接続は、本発明の一部を形成しない技法に従って処理
される。処理が完了すると、(たとえばサーバが停止し
ていない限り)スレッドは図3のプロセスを使用して再
び別の接続を要求することができる。
【0053】図4に、受動ソケットに到着した着信パケ
ットを処理するためにネットワークI/O割込みハンド
ラなどのプロセスによって実行される論理を示す。
【0054】このプロセスはステップ150から始ま
り、着信パケットを受け取る。ステップ155で、この
パケットが新規接続の要求であるかどうかを検査する。
新規接続要求の場合、制御はステップ160に移り、そ
うでない場合は制御はステップ180に移る。
【0055】ステップ160で、当技術分野で周知の技
法を使用して新しいソケットが作成され、その結果、新
しいソケット・データ構造が作成される。ステップ16
5で、この接続の項目が受動ソケットの「保留接続」待
ち行列に入れられる。
【0056】ステップ170で、この受動ソケット上の
接続を自動的に受け入れるかどうかを検査する。この情
報は、構成パラメータを使用して示すことができる。着
信接続要求を自動的に受け入れることによって、作業ス
レッドへの要求のスケジューリングをデータが着信する
まで遅らせることができる。この検査の応答が否定の場
合、この実施形態の2段階待ち行列は使用されない。こ
れによって、既存の実施システムとの互換性をもたせる
ことができ、既存の実施システムは本発明の他の機構を
実施することができる。接続は保留接続待ち行列に残
る。検査の応答が肯定の場合は、ステップ175でクラ
イアントに肯定応答が送信される。次に制御はステップ
150に返り、次の着信パケットを待つ。
【0057】ステップ180で、着信パケットが接続の
確認であったかどうかを問い合わせる。そうであった場
合には、ステップ185で接続は「受入れ」としてマー
クされる。この好ましい実施形態の2段階待ち行列を使
用することにより、これは、この接続の項目を「保留接
続」待ち行列から2段階のうちの最初の段階である「受
入れ接続」待ち行列に移動することを含む。次に制御は
ステップ150に移り、次の着信パケットを待つ。
【0058】着信パケットが接続要求または接続確認で
なかった場合、制御はステップ190に移る。参照しや
すいように、図4ではパケットはデータ・パケットであ
るものと仮定している。他のパケット・タイプは、図4
の実行フローには関係がなく、したがって対象としな
い。当業者には、本発明の進歩的概念から逸脱すること
なく、これらのパケットに追加の論理を付加することが
できることが明らかであろう。ステップ190で、この
データ・パケットは適切なソケットの到着待ち行列に入
れられる。ステップ195で、これがこの接続の最初の
着信データ・パケットであるかどうかを判断する検査が
行われる。最初の着信パケットでない場合、(その接続
はすでに作業スレッドに割り当てられているため)割込
みハンドラはこのパケットをそれ以上処理せず、制御は
ステップ150に返る。
【0059】ステップ200で、受け入れられた接続の
最初のデータ・パケットが到着している。したがって、
この接続は作業スレッドにスケジューリングするために
使用可能にすることができる。この好ましい実施形態の
2段階待ち行列を使用すると、ステップ200の処理
は、接続を「受入れ接続」待ち行列(段階1)から「実
行可能」待ち行列(段階2)に移動させるステップを含
む。
【0060】ステップ205で、本発明によって規定さ
れた新規なスケジューリング・ヒューリスティックを使
用して、この接続を処理するために待機スレッドをアン
ブロックするか、それとも現在実行中のスレッドが完了
するのを待つ(すなわち、接続を当面、実行待ち行列に
入れたままにしておく)かを判断する。このヒューリス
ティックの結果、ブロック・スレッドをアンブロックす
べきであることが示された場合、(ステップ205から
の「覚醒」分岐をたどることによって)制御はステップ
210に移る。そうでない場合は、この接続を処理する
ために待機スレッドをまだアンブロックする必要がない
かまたはアンブロックすることが望ましくないため、割
込みハンドラはこの時点ではそれ以上の処理を行わず、
(ステップ205から「待機」分岐をたどることによっ
て)制御はステップ150に返る。
【0061】ステップ205で実行されるスケジューリ
ング・ヒューリスティックは、以下の数式によって定義
される。 R=(C*T*D)−(T/2)
【0062】このスケジューリング・ヒューリスティッ
クの目的は、現行着信作業負荷に照らして作業スレッド
の数のバランスをとることである。オーバースケジュー
リングが起こらない場合に最適な結果が得られる。その
ためには、着信実行可能待ち行列で小さなバックログを
保持する必要がある(すなわち、待ち行列にいくつかの
接続を残しておくことができるようにし、ただちに作業
スレッドを覚醒させることによって割り当てられないよ
うにする)。しかし、ある程度の短い受容可能な遅延期
間を超えて接続を待ち行列に残しておいてはならない。
その遅延期間の終わりに使用可能な作業スレッドがない
場合、受容可能な遅延を超えないようにブロック作業ス
レッドを覚醒させる。この遅延の長さは、平均受容可能
遅延と最大受容可能遅延の2つの部分からなることが好
ましい。任意選択により、これらの遅延要素を、ユーザ
がその値を入力することができる構成パラメータとす
る。ユーザが構成パラメータの値を入力する方式は、当
業者には周知であり、本明細書では詳述しない。典型的
には、サーバの初期設定中に構成メニューを表示し、こ
れらのパラメータをそのメニューに含める。
【0063】上記の式で、Rは2段階待ち行列の段階2
での実行可能接続の目標数を表し、「待ち行列内項目
数」または「待ち行列バックログ」とも呼ぶ。ステップ
205で検査を行ったときに接続数がRより大きいか等
しい場合、現行パラメータにより、すでに待機している
接続が多すぎるため、ステップ210に制御を移すこと
によって待機スレッドがアンブロックされる。待ち行列
内項目数がRより小さい場合、接続はすべて待ち行列に
残り、実行中のスレッドが完了するのを待つ。すべての
接続が待ち行列に残っているため、処理はステップ15
0に移る。
【0064】スケジューリング・ヒューリスティックの
変数Cは、1つの作業スレッドが完了することができる
毎秒の平均接続数を表す。この変数の値は、スレッドの
実行データを収集することによって計算することができ
る。実行データ収集は、図3に関して前述した処理に従
って行うことができる。サーバ・アプリケーションがあ
る程度の期間実行するまでは、代表データは存在しな
い。したがって、Cの値はゼロに初期設定され、それに
よってR=0になり、その結果、制御はステップ205
からステップ210(待機スレッドのアンブロック)に
移ることになる。
【0065】変数Tは現在実行中のスレッドの数を表
す。したがって、1秒間に完了する要求の数は(C*
T)である。たとえば、スレッドが毎秒平均8個の要求
を完了することができ、現在実行中のスレッドが10個
ある場合、これらのスレッドは毎秒平均(8*10)=
80個の要求を完了することができる。
【0066】変数Dは、要求が待ち行列上で待機する平
均受容可能遅延時間を表す。遅延時間D中に新規接続が
スレッド・プールに吸収される(すなわち接続が作業ス
レッドに割り当てられる)平均レートは、(C*T*
D)である。たとえば、平均受容可能遅延時間が0.2
秒の場合、(上記の例の数値を使用すると)この遅延期
間中にこのスレッド数によって16個の要求を吸収する
ことができ、1秒間に80個の要求を完了することがで
きる場合、0.2秒間に(8*10*0.2)=16個
の要求を完了することができる。
【0067】所与の時点で、平均して実行中のスレッド
の半分が現行要求を完了し、他の要求の処理を開始す
る。このスケジューリング・ヒューリスティックは、こ
れを項(T/2)によって反映させる。この値は(C*
T*D)から引かれる。これは、新しい要求を開始した
ばかりのスレッドは、実際には、(1/(C/2))秒
の平均完了期間内に新しい要求を引き受けるために対応
することができず、(1/C)秒に対応可能になるため
である。上述の例を続けると、差し引く値は(10/
2)=5であり、それによってRの最終結果は(16−
5)=11になる。
【0068】言い換えると、この例のパラメータと合致
するシステムは、実行中のスレッドの完了を待ち、それ
らのスレッドが対応可能になったときにそれらのT=1
0個のスレッドに新規要求を割り当てることによって、
D=0.2秒当たり最高(C*T*D)−(T/2)=
11個の新規要求を処理することができ、要求は平均D
=0.2秒より長く待ち行列上で待機する必要はない。
期間D=0.2秒中に11を超える新規要求が到着した
場合、システムの容量を超え、所与の要求の遅延がDを
超えないように保証するために待機スレッドをアンブロ
ックしなければならない。
【0069】この実施形態では、2段階待ち行列からの
接続のスケジューリングを決定するために使用する新規
なスケジューリング・ヒューリスティックについて説明
したが、別法として、このスケジューリング・ヒューリ
スティックはそのような待ち行列がなくても、本発明の
進歩的概念から逸脱することなく使用することができ
る。すなわち、図3で説明したように統計情報が収集さ
れることを条件として、このヒューリスティックは、受
け入れられたがまだデータを受信していない接続をスケ
ジュールするために既存の受動ソケットと共に使用する
こともできる。この手法で、この第1の好ましい実施形
態の多くの(ただしすべてではない)利点が実現され
る。いくつかの接続が作業スレッドにスケジュールされ
たが、結果的に、クライアントがその接続でデータを送
信しないうちに閉じられるだけになる可能性が残る。し
かし、オーバースケジューリング問題は改善される。
【0070】同様に、この好ましい実施形態で規定した
2段階待ち行列は、この新規なスケジューリング・ヒュ
ーリスティックを使用しなくても使用することができる
ので有利である。そのような状況では、第2段階にある
接続のために任意のスケジューリング手法を使用するこ
とができる。これには、作業スレッドをその都度アンブ
ロックしなければならない場合であっても各接続を第2
段階に達したらただちにスケジューリングする手法も含
まれる。この手法の結果、スレッドのある程度のオーバ
ースケジューリングは生じるが、このオーバースケジュ
ーリングは処理可能になったデータのある接続に限られ
る。
【0071】ステップ210で、待機スレッドがアンブ
ロックされる。このスレッドは、ステップ215で段階
2の「実行可能」待ち行列の先頭にある要求を処理する
ために割り当てられる。次に制御はステップ150に返
る。スレッドがアンブロックされ、要求に割り当てられ
る方式は、当業者に周知であり、本発明の一部を形成し
ない。たとえば、「WAIT(待機)」を発行することによ
って(図3のステップ120で)スレッドがブロックし
た場合、そのスレッドは「POST(ポスト)」または「NO
TIFY(通知)」事象を発行することによってアンブロッ
クすることができる。アクセプト・アンド・レシーブ
(accept_and_receive)APIを使用してWAITを発生さ
せた場合、このPOSTによって単一のスレッドがアンブロ
ックされる。アクセプト・アンド・レシーブ(accept_a
nd_receive)以外のAPIを使用した場合、POSTコマン
ドの発行によって、前述のように待機中のすべてのスレ
ッドがアンブロックされる。
【0072】図5に、作業スレッドにスケジュールされ
るまでの待機時間が長くなり過ぎる接続がないように保
証するために、遅延モニタによって実行することができ
る論理を示す。この論理は周期的に実行され、タイマを
使用して呼び出される。
【0073】このプロセスはステップ250から開始さ
れ、「最大遅延」タイマに達していないかどうかが検査
される。これはステップ250で反復ループとして図示
されているが、この検査が途切れなく行われることは当
業者には明らかであろう。典型的には、「最大遅延」期
間のタイマ・プロセスがスケジュールされ、それによっ
てタイマは刻時を開始する。最大遅延期間が経過する
と、このタイマ・プロセスについて割込みが生成され、
ステップ255からステップ275までの論理が処理可
能になる。あるいは、この検査は最大遅延時間より高い
頻度または低い頻度で実行することもでき、その場合、
ステップ250での検査は異なる時間間隔を反映するこ
とになる。
【0074】ステップ255で、段階2の「実行可能」
待ち行列が空かどうかを調べる検査が行われる。空の場
合、待機時間が長すぎる接続はなく、したがって制御は
ステップ250に返り、次のタイマの満了を待つ。空で
ない場合、ステップ260でブロック・スレッド待ち行
列が空かどうかを調べる検査を行う。この検査の応答が
肯定の場合、それ以上使用可能なスレッドはなく、した
がって実行可能待ち行列の項目は検査されない。制御は
ステップ250に返る。ステップ260の応答が否定の
場合、待ち行列上の接続に待機時間が長すぎる接続がな
いか調べる。ステップ265からステップ275まで
は、この検査を実行する反復ループを表す。ステップ2
65で、待ち行列上の最も古い要求(待ち行列先頭ポイ
ンタによって指し示された接続)が最大許容時間を超え
て待機していないかどうか調べられる。超えている場
合、ステップ270で待機スレッドがアンブロックさ
れ、ステップ275でそのスレッドに接続が割り当てら
れる。その後、ステップ265に制御が返ることによっ
て、次に古い接続が検査される。実行可能待ち行列がF
IFO待ち行列を使用して実施されており、ステップ2
65での検査が否定の場合、残りの待ち行列化接続のい
ずれも最大遅延を超えておらず、制御はステップ250
に返る。(FIFO待ち行列を使用していない場合、待
ち行列の終わりに達するまで、ステップ265から27
5を繰り返すことによって実行可能待ち行列上の各項目
を検査する必要がある。)
【0075】図6に、前述の複数入力源問題を改善する
第2の好ましい実施形態に関わる論理が記載されたフロ
ーチャートを示す。
【0076】第2の好ましい実施形態は、コレクタ・ソ
ケットと呼ぶ新規なタイプのソケットの規定に基づく。
複数の受動ソケットからの入力がコレクタ・ソケット上
にマージされ、それによって、そこから接続をスレッド
にスケジュールする単一の入力源が得られる。コレクタ
・ソケットは、第1の好ましい実施形態で説明した2段
階待ち行列の第2段階の「実行可能」待ち行列を有する
ものとして実施され、第1段階の「受入れ接続」待ち行
列は複数の受動ソケットに関連づけられたままである。
接続は受け入れられると受動ソケットの受入れ接続待ち
行列に入れられ、各接続の最初のデータ・パケットが到
着するとコレクタ・ソケットの実行可能待ち行列に移さ
れる。
【0077】図7に、コレクタ・ソケットを使用するた
めに必要な変更との比較のために、第1の好ましい実施
形態の2段階待ち行列の概念図を示す。図7には受動ソ
ケット500が図示されている。このような受動ソケッ
トが多数存在することができ、各受動ソケットは、
(1)接続がまだ保留中である間ソケット構造が保持さ
れる保留接続待ち行列502と、(2)接続が受け入れ
られた後、その接続の最初のデータ・パケットが到着す
る前にソケット構造が保持される受入れ接続待ち行列5
04と、(3)少なくとも1つのデータ・パケットが到
着した後、接続が作業スレッドにスケジュールされる前
にソケット構造が保持される実行可能接続待ち行列50
6とを有する。各受動ソケットには、ブロック・スレッ
ド待ち行列510が関連づけられ、それを使用して接続
が前述の技法に従ってスレッドにスケジュールされる。
【0078】これと対比して、図8に、コレクタ・ソケ
ットを使用した場合に受動ソケットがどのように異なる
かを図示する。図8には3個の受動ソケット530、5
40、550が図示され、そのデータが1つのコレクタ
・ソケット560にマージされている(ただし、マージ
される数は3個には限定されない)。各受動ソケット5
30、540、550は今度は、(1)保留接続待ち行
列532、542、552と、(2)受入れ接続待ち行
列534、544、554の2つの待ち行列から成る。
実行可能待ち行列562はコレクタ・ソケット560に
付随している。さらに、各受動ソケット500ごとにブ
ロック・スレッド待ち行列510を備えるのではなく、
単一のコレクタ・ソケット560に単一のブロック・ス
レッド待ち行列570がある。図8に示すように、受入
れ接続待ち行列534、544、554から接続が移動
するとき、それらの接続はコレクタ・ソケット560の
実行可能待ち行列562に移動される。
【0079】コレクタ・ソケットの使用を可能にするに
は追加のAPIが必要である。このAPIの目的は、ど
の受動ソケットがコレクタ・ソケットにマージされるか
を示すことである。したがって、このAPI呼出しは、
収集する受動ソケットのリストを備える。この情報は、
好ましくは、構成パラメータを使用して伝えられ、シス
テム管理者などのユーザに対して受動ソケット識別子を
指定するように求める。この情報を提供するための他の
方法も、本発明の進歩的概念から逸脱することなく使用
可能である。その後、これらの識別子は、第2の好まし
い実施形態に提供される。ユーザから構成パラメータを
入手し、実行プログラムに提供する方法は、当業者には
明らかであろう。したがって、これについては詳述しな
い。
【0080】コレクタAPIは、サーバが動作を開始す
るときに発行されることが好ましい。しかし、クライア
ントがサーバに要求の送信を開始してからコレクタ・ソ
ケットが確立されるまでの間に、ある程度の遅延が存在
する可能性がある。図6に、この状況を改善するために
使用可能であって、受動ソケットの実行可能待ち行列に
すでに移動されている接続がないか見つけるために収集
される受動ソケットを検査する論理を示す。これらの接
続は、コレクタ・ソケットの実行可能待ち行列に移され
る。図6の論理は、サーバがすでに実行を開始している
後でコレクタAPIを呼び出す場合にも使用することが
できる。
【0081】ステップ400で、API呼出しの受信に
応答してコレクタ・ソケットが作成される。実行可能待
ち行列は空の待ち行列に初期設定される。コレクタ・ソ
ケットとこのソケットを使用するスレッドの実行に関す
る統計情報の保持を開始するために、(前述の)スケジ
ューリング・ヒューリスティックのために保持される統
計情報が初期設定される。コレクタ・ソケットのため
に、このソケットからの接続を処理するために使用され
るスレッドのためのブロック・スレッドの待ち行列が作
成される。
【0082】ステップ410で、指標やループ・カウン
タなどの指示機構を使用して、API呼出し時に提供さ
れるリストから最初の受動ソケット識別子を指示する。
リスト内の項目に指標付けする技法は当技術分野で周知
であり、詳述しない。
【0083】ステップ420で、現在指示されている受
動ソケットを、コレクタ・ソケットを指すように修正す
る。これによって、後で受動ソケットでデータを受け取
った接続が、データ・パケットをコレクタ・ソケットに
転送させることができるようになる。
【0084】ステップ430で、受動ソケットの実行可
能待ち行列を検査して、この接続がすでに実行可能待ち
行列に移されているかどうかを調べる。前述のように、
受け入れられた接続の最初のデータ・パケットは、コレ
クタ・ソケットが作成される前に到着している可能性が
あり、ステップ430で、そのような接続をコレクタ・
ソケットの実行可能待ち行列に移動させることができる
ようにする。待ち行列から項目を取り出す技法と、待ち
行列に項目を入れる技法は、当技術分野で周知である。
【0085】ステップ440で、ポインタがリスト内の
最後の要素を指しているかどうかを調べることによっ
て、コレクタAPIで識別されているすべての受動ソケ
ットが処理されたかどうかを検査する。この検査の応答
が肯定の場合、図6の処理は終了する。否定の場合は、
ステップ450で、次の受動ソケットを指すようにポイ
ンタを増分し、制御はステップ420に返る。
【0086】作業スレッドがコレクタ・ソケットの実行
可能待ち行列から作業を受け取る処理論理は、受動ソケ
ットの実行可能待ち行列から作業を受け取るスレッドに
関して図3に示したプロセスと同じである。しかし、前
述の図3の説明とは異なる以下の相違点がある。(1)
保持される統計情報はコレクタ・ソケットに関して保持
され、(2)ブロック作業スレッドの待ち行列は、コレ
クタ・ソケットに付随する待ち行列であり、(3)検査
される実行可能待ち行列はコレクタ・ソケットの実行可
能待ち行列であり、(4)作業スレッドはコレクタ・ソ
ケットに対してアクセプト・アンド・レシーブ(accept
_and_receive)APIを実行する。
【0087】この好ましい実施形態で受動ソケットでの
着信パケットの受け取りを扱う処理論理は、図4に示す
ものと類似している。ただし、若干の変更が必要であ
る。ステップ195で、コレクタ・ソケットにマージさ
れる受動ソケットのために到着する最初のデータ・パケ
ットを検出した後(すなわちステップ195の「Yes」
分岐)、接続は受動ソケットの実行可能待ち行列ではな
くコレクタ・ソケットの実行可能待ち行列に移動され
る。ステップ205でスケジューリング・ヒューリステ
ィックに使用される統計は、コレクタ・ソケットの統計
である。ステップ210で覚醒されるスレッドは、コレ
クタ・ソケットに付随するブロック・スレッド待ち行列
内のスレッドである。
【0088】コレクタ・ソケットの実行可能接続待ち行
列を監視して、スケジュールされるまでに待機する時間
が長くなり過ぎる接続がないように保証する処理論理
は、図5に示す論理と同じである。しかし、前述の図5
の説明とは異なる以下のような相違点がある。(1)監
視される実行可能接続待ち行列はコレクタ・ソケットの
実行可能待ち行列であり、(2)検査されるブロック・
スレッド待ち行列はコレクタ・ソケットに付随する待ち
行列であり、(3)ステップ270で覚醒されるスレッ
ドは、コレクタ・ソケットに付随するブロック・スレッ
ド待ち行列内のスレッドである。
【0089】(図3を参照しながら前述したように)受
け入れられた接続が受動ソケットからコレクタ・ソケッ
トに移されるときに、それらの接続と共に、その接続が
どの受動ソケットに到着したかを示す情報を渡す必要が
ある。これは、異なる入力源からの入力に異なる処理が
必要な場合があるためである。たとえば、1つの受動ソ
ケットにセキュア接続要求が到着した場合、作業スレッ
ドは、非セキュア接続要求が到着した場合には不要な特
別なセキュリティ関係の処理を必要とする。その接続が
SSL使用可能受動ソケットに到着した場合、この特別
な処理にはハンドシェーク・プロトコルが含まれる。こ
の特別な処理は本発明の一部を形成しない。本発明の進
歩的概念から逸脱することなく、接続の入力源を示す情
報を渡すためにいくつかの方法が使用可能である。たと
えば、当技術分野で周知のように、接続には様々なタイ
プの情報を入れるために割り振られた記憶域がある。こ
のデータ域に、着信ソケットの識別子を記憶するための
パラメータを付加することができる。各作業スレッド
は、このデータ域を調べて入力源関係の処理が必要かど
うかを判断する論理を含む。これによって、プール内の
任意のスレッドが、複数の受動ソケットのうちのいずれ
かのソケットに到着する接続を処理することができる。
したがって、静的区分化を使用して受動ソケットに作業
スレッドを割り振る必要がなくなる。この実施形態は、
コレクタ・ソケットの実行待ち行列にマージされた入力
源を有することによって、様々な入力源へのプールの動
的区分化を実現する。
【0090】コレクタ・ソケットの実行可能待ち行列か
ら要求をスケジュールするための、第1の好ましい実施
形態で定義されたスケジューリング・ヒューリスティッ
クの使用は、この第2の実施形態では任意選択である。
しかし、その使用によって、コレクタ・ソケット上の接
続負荷が使用可能スレッドの数に満たない場合に生じる
オーバースケジューリング問題を回避することができ
る。
【0091】図9から図10に、持続接続問題のある前
述のスレッド割当てを改善する第3の実施形態に関与す
る論理が記載されたフローチャートを示す。
【0092】第3の好ましい実施形態は、第2の好まし
い実施形態により規定されたコレクタ・ソケットの使用
を必要とする。持続接続を使用する場合により効率的な
処理を可能にする、コレクタ・ソケットを処理するため
の改善点を規定する。図8に示す実行可能待ち行列に加
えて、コレクタ・ソケットは「遊休接続」待ち行列も有
する。本明細書で「ギブバック(giveback)」APIと
呼ぶ、(後述の)追加のAPIを定義する。
【0093】作業スレッドがコレクタ・ソケットの実行
可能待ち行列から作業を受け取るための処理論理は、第
2の好ましい実施形態に関して前述したプロセス(図3
を参照)と同じである。作業スレッドは、コレクタ・ソ
ケットの実行可能待ち行列上にある接続のみに割り当て
られる。
【0094】この第3の好ましい実施形態の受動ソケッ
トで着信パケットの受領を処理する処理論理は、第2の
好ましい実施形態に関して前述したもの(図4を参照)
と類似している。しかし、若干の変更を要する。ステッ
プ155で着信接続要求を検出した後、ステップ160
で作成される新しいソケットは、この実施形態では2つ
の追加のデータ値の初期設定を必要とする。第1に、ソ
ケット状況を「実行不能」、すなわち当該接続は現在ス
ケジュールすることができないことを示すように設定し
なければならない。第2に、アプリケーション・コンテ
キストを、当該接続にまだコンテキストが関連づけられ
ていないことを示すヌル値に設定しなければならない。
その他の変更は、接続のデータが到着したときに実行さ
れる処理に関するものである。ステップ195でそれが
最初に受け取ったデータ・パケットであるかどうかを調
べる検査を行う代わりに、ソケットが「実行可能」と
「実行不能」のどちらにマークされているかを問い合わ
せる検査を行う。状況がすでに「実行可能」に設定され
ていた場合、制御はステップ150に返る。そうでない
場合(すなわち状況が「実行不能」だった場合)、制御
はステップ200に進む。現在ステップ200に示され
ている処理の代わりに、新しい処理は、(1)ソケット
を「実行可能」としてマークするステップと、(2)ソ
ケットを現行待ち行列(受動ソケットの受入れ待ち行列
またはコレクタ・ソケットの遊休待ち行列である)か
ら、コレクタ・ソケットの実行可能待ち行列に移動する
ステップとを含む。
【0095】コレクタ・ソケットの実行可能接続待ち行
列を監視して、スケジューリングされるまでの待機時間
が長すぎる接続がないようにする処理論理は、図5に示
すものと同じである。第2の好ましい実施形態に関して
説明した図5との相違は、この第3の好ましい実施形態
にも当てはまる。
【0096】図6を参照しながら第2の好ましい実施形
態に関して説明したようにコレクタ・ソケットを作成す
るとき、1つの追加の変更が必要である。今度は、ステ
ップ400でコレクタ・ソケットをセットアップすると
きに空の遊休接続待ち行列を作成しなければならない。
【0097】図9に、アプリケーションによる新しいギ
ブバック(giveback)APIの発行に応答して呼び出さ
れる論理を示す。このAPI呼出しによって、作業スレ
ッドに割り当てられていた(したがってすでにデータを
受信していた)ソケットが、そのスレッドから結合解除
され、そのスレッドを他の接続に割り当てることが可能
になる。このAPIは、持続接続が着信データ要求間で
遅延(何らかの所定のしきい値を超える)に遭うと呼び
出される。
【0098】ステップ600で、この接続のための未読
のデータがあるかどうかを問い合わせる。ギブバック
(giveback)APIが処理中だったときにデータが着信
している可能性がある。この条件が真の場合、制御はス
テップ650に移る。そうでない場合、ステップ610
で接続を遊休待ち行列に移動するプロセスが続けられ
る。
【0099】ステップ610で、このソケットを「実行
不能」としてマークし、ソケットの項目を遊休接続待ち
行列に入れる。遊休接続数のカウンタが増分される。ソ
ケットが遊休待ち行列に入れられるとき、このAPIの
入力パラメータである、この接続に関連づけられたアプ
リケーション・コンテキスト値がソケットと共に格納さ
れる。これによって、ソケットは後でデータが到着した
ときに同じソケットを使用して処理を再開できるように
なる。
【0100】ステップ620で、遊休接続カウンタの現
行値が最大値(構成パラメータまたは静的値として設定
することができる)と比較される。この検査の応答が肯
定の場合、遊休状態の接続が多すぎ、ステップ630に
制御を移すことによって最も古い接続が除去される。最
大値を超えていない場合、図9の処理は終了する。
【0101】ステップ630で、遊休接続待ち行列上の
最も古い接続を除去しなければならない。好ましくは、
遊休接続待ち行列はFIFO待ち行列であり、したがっ
てステップ630は待ち行列の先頭を指すステップを含
む。この接続は閉じられ、使用していた資源は解放され
る。ステップ640で、「Expired(期限切れ)」であ
ることを示すようにソケットにマークを付け遊休待ち行
列から外すことによって、このプロセスが開始される。
遊休接続のカウントが減分され、ステップ650で、こ
のソケットは実行可能待ち行列い移動される。実行可能
待ち行列から接続が作業スレッドにスケジュールされる
と、その作業スレッドによってクローズ・プロセスは完
了される。ステップ660からステップ680で、第1
の好ましい実施形態に関して説明したスケジューリング
・ヒューリスティックが実行され、それによって、接続
はスレッドをアンブロックすることによってこの時点で
スケジュールされるか、または使用中のスレッドが使用
可能になり、(図3の修正したプロセスを使用して)コ
レクタ・ソケットの実行可能待ち行列を調べの時点でス
ケジューリングされるのを待つ。ステップ660で、ス
レッドがスケジュールされるのを待つことが示された場
合、またはステップ680でアンブロック・スレッドへ
の接続の割当てが終了した場合、図9の処理は完了す
る。
【0102】このギブバック(giveback)APIの使用
によってコレクタ・ソケットの遊休接続待ち行列に入れ
られた接続は、以下のいずれか1つの条件が満たされる
までそこにとどまる。すなわち、(1)さらにデータが
到着するか、(2)クライアントから接続クローズ要求
を受け取るか、(3)接続が最大時間を超えて遊休状態
のままになっているか、または(4)遊休接続のカウン
トが高くなり過ぎるという条件である。条件1の場合、
接続を遊休待ち行列上に保持することによって、最初の
データ要求の受領によってスケジューリングされる接続
について通常行われる初期設定ステップを踏まずに、接
続を後続の作業スレッドに割り当てることができる。こ
の第3の実施形態に関して前述した図4の修正された論
理によって、この追加のデータの到着が検出され、接続
の再スケジュールが処理される。条件4は、図9のステ
ップ620〜680に関して前述したプロセスである。
以下で、条件2および3について詳述する。
【0103】クライアントが接続を閉じることを要求す
る条件2の場合、接続を遊休接続待ち行列からコレクタ
・ソケットの実行可能待ち行列に移動しなければならな
い。これは、接続が遊休状態を続けている間、その接続
のためのアプリケーション・コンテキストが保持されて
おり、この時点でそれを作業スレッドによって打ち切る
必要があるためである。接続は図4のステップ200の
修正された論理を使用して実行可能待ち行列に移動され
る。
【0104】接続が遊休状態になっている時間が長すぎ
る条件3の場合、図10の処理が使用される。実行可能
待ち行列に入っている時間が長すぎる接続がないか検査
する第1および第2の実施形態で使用した遅延モニタ
を、前述のようにこの第3の実施形態でも実行する。し
かし、図10に示す、遊休接続待ち行列を検査する追加
の監視手続きも使用する。
【0105】図10の処理は何らかの所定の間隔で呼び
出され、この間隔は構成パラメータとすることができ
る。この呼出しを行うためにタイマを使用することもで
きる。ステップ700で、遊休待ち行列から最も古い遊
休ソケットを入手する。前述のように、好ましくは、遊
休接続待ち行列はFIFO待ち行列であり、したがって
ステップ700は待ち行列の先頭を指すステップを含
む。ステップ710で、当該接続が遊休状態のままであ
る時間が長すぎないかどうかを検査する。ギブバック
(giveback)APIにタイムアウト・パラメータを組み
込むことによって、各接続は定義されたそれ自体の最大
遊休期間を有することができる。このパラメータ値は、
接続の項目と共に遊休待ち行列に格納される。あるい
は、たとえば構成時に値を指定することによって、各接
続に同じ最大遊休時間を使用することもできる。
【0106】接続がまだ最大遊休時間に達していない場
合、制御はステップ720に進む。したがって、接続は
遊休待ち行列にとどまることができる。ステップ720
で、これが遊休接続待ち行列上の最後の接続かどうかを
問い合わせる。最後の接続の場合、それ以上検査する接
続はなく、したがって図10のプロセスは終了する。最
後の接続でない場合、ステップ730で、待ち行列内の
次の接続を指示し、制御はステップ710に返ってその
接続を検査する。
【0107】検査している接続が最大遊休時間を超えて
遊休状態であった場合、制御はステップ740に進む。
送るべきデータがないときに当該接続のための関連コン
テキストを開いたままにしておくと、システム資源が効
率的に使用されないため、接続は閉じられ、資源が解放
される。ステップ740で、ソケットを「Expired(期
限切れ)」を示すようにマークし、遊休待ち行列から除
去することによって、このプロセスが開始される。遊休
接続のカウントが減分され、ステップ750でソケット
が実行可能待ち行列に移される。接続がスケジュールさ
れると、作業スレッドがこのクローズ・プロセスを完了
させる。ステップ760から780で、第1の好ましい
実施形態で説明したスケジューリング・ヒューリスティ
ックが実行され、それによって接続はスレッドをアンブ
ロックすることによってこの時点でスケジュールされる
か、または使用中のスレッドが使用可能になり、(図3
の修正したプロセスを使用して)コレクタ・ソケットの
実行可能待ち行列を検査する時点でスケジュールされる
のを待つ。ステップ760で、スレッドがスケジュール
されるのを待つことが示された場合、またはステップ7
80でアンブロック・スレッドへの接続の割当てが終了
した場合、制御はステップ720に返り、遊休待ち行列
になお接続があるかどうかを調べる。
【0108】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0109】(1)ネットワークへの接続を有するコン
ピューティング環境において、前記環境内のコンピュー
タ・システムによって読取り可能で、マルチスレッド・
アプリケーションのパフォーマンスを強化するコンピュ
ータ可読コードであって、接続を求める複数のクライア
ント要求と、複数の作業スレッドと、前記複数のクライ
アント要求を受け取るサブプロセスと、前記作業スレッ
ドのオーバースケジューリングを改善するスケジューリ
ング・ヒューリスティックを実施するサブプロセスとを
含むコンピュータ可読コード。 (2)前記作業スレッドの第1のグループがアクティブ
・スレッドであり、前記第1のグループが前記複数の作
業スレッドのうちの変更可能な作業スレッドから成り、
変更可能な数の前記変更可能な作業スレッドを有し、前
記変更可能な数が少なくとも1であり、スケジューリン
グ・ヒューリスティックを実施する前記サブプロセス
が、前記複数のクライアント要求のうちの1つまたは複
数のクライアント要求から成る現行作業負荷に照らして
前記第1のグループ内の前記変更可能な数のバランスを
とるサブプロセスをさらに含む、上記(1)に記載のマ
ルチスレッド・アプリのパフォーマンスを強化するコン
ピュータ可読コード。 (3)バランスをとる前記サブプロセスが平均遅延の使
用をさらに含む、上記(2)に記載のマルチスレッド・
アプリケーションのパフォーマンスを強化するコンピュ
ータ可読コード。 (4)バランスをとる前記サブプロセスが最大遅延の使
用をさらに含む、上記(3)に記載のマルチスレッド・
アプリケーションのパフォーマンスを強化するコンピュ
ータ可読コード。 (5)前記平均遅延および前記最大遅延が構成パラメー
タである、上記(4)に記載のマルチスレッド・アプリ
ケーションのパフォーマンスを強化するコンピュータ可
読コード。 (6)前記作業スレッドの第2のグループがブロック・
スレッドであり、前記第2のグループが前記複数の作業
スレッドのうちの前記第1のグループに入っていない作
業スレッドから成り、前記ブロック・スレッドが後入れ
先出し待ち行列に格納される、上記(2)に記載のマル
チスレッド・アプリケーションのパフォーマンスを強化
するコンピュータ可読コード。 (7)ネットワークへの接続を有するコンピューティン
グ環境において、前記環境内のコンピュータ・システム
によって読取り可能で、マルチスレッド・アプリケーシ
ョンのパフォーマンスを強化するコンピュータ可読コー
ドであって、各前記接続が受け入れられると、接続を保
留接続待ち行列から第1の待ち行列に移動させるサブプ
ロセスと、前記接続の最初のデータ・パケットが到着す
ると、前記接続を前記第1の待ち行列から第2の待ち行
列に移動させるサブプロセスと、前記第2の待ち行列上
の各前記接続に作業スレッドを割り当てるサブプロセス
とを含むコンピュータ可読コード。 (8)ネットワークへの接続を有するコンピューティン
グ環境において、前記環境内のコンピュータ・システム
によって読取り可能で、マルチスレッド・アプリケーシ
ョンのパフォーマンスを強化するコンピュータ可読コー
ドであって、複数の発生源から入力を受け取るサブプロ
セスと、前記受け取った入力をスケジューリングのため
に単一の待ち行列にマージするサブプロセスとを含むコ
ンピュータ可読コード。 (9)各前記接続が受け入れられると、接続を保留接続
待ち行列から第1の待ち行列に移動させるサブプロセス
と、前記接続の最初のデータ・パケットが到着すると、
前記接続を前記第1の待ち行列から前記単一の待ち行列
に移動させるサブプロセスと、前記単一の待ち行列上の
各前記接続に作業スレッドを割り当てるサブプロセスと
をさらに含む、上記(8)に記載のマルチスレッド・ア
プリケーションのパフォーマンスを強化するコンピュー
タ可読コード。 (10)スケジューリングする前記サブプロセスが、複
数の作業スレッドのうちの変更可能な作業スレッドから
成り、変更可能な数の前記変更可能な作業スレッドを有
し、前記変更可能な数が少なくとも1であるアクティブ
作業スレッドのグループと、前記単一の待ち行列に格納
された前記クライアント要求から成る現行作業負荷に照
らして前記アクティブ・グループ内の前記変更可能な数
のバランスをとるスケジューリング・ヒューリスティッ
クを実施するサブプロセスとをさらに含む、上記(9)
に記載のマルチスレッド・アプリケーションのパフォー
マンスを強化するコンピュータ可読コード。 (11)ネットワークへの接続を有するコンピューティ
ング環境において、前記環境内のコンピュータ・システ
ムによって読取り可能で、マルチスレッド・アプリケー
ションのパフォーマンスを強化するコンピュータ可読コ
ードであって、複数の持続接続と、複数の作業スレッド
と、前記持続接続のうちの選択された持続接続を前記作
業スレッドのうちの選択された作業スレッドに結合する
サブプロセスであって、その実行の結果として結合接続
が生じるサブプロセスと、前記結合接続のうちの選択さ
れた結合接続を結合解除するサブプロセスであって、そ
の実行の結果として結合解除された作業スレッドが生じ
るサブプロセスとを含むコンピュータ可読コード。 (12)結合する前記サブプロセスが2段階待ち行列を
使用するステップをさらに含み、結合解除する前記サブ
プロセスが前記2段階待ち行列を使用するステップをさ
らに含む、上記(11)に記載のマルチスレッド・アプ
リケーションのパフォーマンスを強化するコンピュータ
可読コード。 (13)前記2段階待ち行列を使用して結合する前記サ
ブプロセスが、前記接続の最初のデータ・パケットが到
着すると、各前記持続接続を前記第1の段階に移動させ
るサブプロセスと、前記接続のデータを受け取ると各前
記持続接続を前記第2の段階から前記第1の段階に移動
させるサブプロセスと、前記第1の段階から前記持続接
続をスケジュールするサブプロセスとをさらに含み、前
記2段階待ち行列を使用して結合解除する前記サブプロ
セスが、前記選択された結合接続が遊休状態になると、
前記結合接続のうちの選択された結合接続を前記第1の
段階から前記第2の段階に移動させるサブプロセスと、
最大遊休期間を超えるとそれに応答して、前記第2の段
階にある前記持続接続のうちの選択された持続接続を閉
じるサブプロセスと、前記結合解除された作業スレッド
を、結合する前記サブプロセスに使用可能にするサブプ
ロセスとをさらに含む、上記(12)に記載のマルチス
レッド・アプリケーションのパフォーマンスを強化する
コンピュータ可読コード。 (14)結合解除する前記サブプロセスが、最大遊休接
続数を超えるとそれに応答して、前記第2段階にある前
記持続接続のうちのさらに選択された持続接続を閉じる
サブプロセスをさらに含む、上記(13)に記載のマル
チスレッド・アプリケーションのパフォーマンスを強化
するコンピュータ可読コード。 (15)ネットワークへの接続を有するコンピューティ
ング環境においてマルチスレッド・アプリケーションの
パフォーマンスを強化するシステムであって、接続を求
める複数のクライアント要求と、複数の作業スレッド
と、前記複数のクライアント要求を受け取る手段と、前
記作業スレッドのオーバースケジューリングを改善する
スケジューリング・ヒューリスティックを実施する手段
とを含むシステム。 (16)前記作業スレッドの第1のグループがアクティ
ブ・スレッドであり、前記第1のグループが前記複数の
作業スレッドのうちの変更可能な作業スレッドから成
り、変更可能な数の前記変更可能な作業スレッドを有
し、前記変更可能な数が少なくとも1であり、スケジュ
ーリング・ヒューリスティックを実施する前記手段が、
前記複数のクライアント要求のうちの1つまたは複数の
クライアント要求から成る現行作業負荷に照らして前記
第1のグループ内の前記変更可能な数のバランスをとる
手段をさらに含む、上記(15)に記載のマルチスレッ
ド・アプリケーションのパフォーマンスを強化するシス
テム。 (17)バランスをとる前記手段が平均遅延の使用をさ
らに含む、上記(16)に記載のマルチスレッド・アプ
リケーションのパフォーマンスを強化するシステム。 (18)バランスをとる前記手段が最大遅延の使用をさ
らに含む、上記(17)に記載のマルチスレッド・アプ
リケーションのパフォーマンスを強化するシステム。 (19)前記平均遅延および前記最大遅延が構成パラメ
ータである、上記(18)に記載のマルチスレッド・ア
プリケーションのパフォーマンスを強化するシステム。 (20)前記作業スレッドの第2のグループがブロック
・スレッドであり、前記第2のグループが前記複数の作
業スレッドのうちの前記第1のグループに入っていない
作業スレッドから成り、前記ブロック・スレッドが後入
れ先出し待ち行列に格納される、上記(16)に記のマ
ルチスレッド・アプリケーションのパフォーマンスを強
化するシステム。 (21)ネットワークへの接続を有するコンピューティ
ング環境においてマルチスレッド・アプリケーションの
パフォーマンスを強化するシステムであって、各前記接
続が受け入れられると、接続を保留接続待ち行列から第
1の待ち行列に移動させる手段と、前記接続の最初のデ
ータ・パケットが到着すると、前記接続を前記第1の待
ち行列から第2の待ち行列に移動させる手段と、前記第
2の待ち行列上の各前記接続に作業スレッドを割り当て
る手段とを含むシステム。 (22)ネットワークへの接続を有するコンピューティ
ング環境においてマルチスレッド・アプリケーションの
パフォーマンスを強化するシステムであって、複数の発
生源から入力を受け取る手段と、前記受け取った入力を
スケジューリングのために単一の待ち行列にマージする
手段とを含むシステム。 (23)各前記接続が受け入れられると、接続を保留接
続待ち行列から第1の待ち行列に移動させる手段と、前
記接続の最初のデータ・パケットが到着すると、前記各
接続を前記第1の待ち行列から前記単一の待ち行列に移
動させる手段と、前記単一の待ち行列上の各前記接続に
作業スレッドを割り当てる手段とをさらに含む、上記
(22)に記載のマルチスレッド・アプリケーションの
パフォーマンスを強化するシステム。 (24)スケジューリングする前記手段が、複数の作業
スレッドのうちの変更可能な作業スレッドから成り、変
更可能な数の前記変更可能な作業スレッドを有し、前記
変更可能な数が少なくとも1であるアクティブ作業スレ
ッドのグループと、前記単一の待ち行列に格納された前
記クライアント要求から成る現行作業負荷に照らして前
記アクティブ・グループ内の前記変更可能な数のバラン
スをとるスケジューリング・ヒューリスティックを実施
する手段とをさらに含む、上記(23)に記載のマルチ
スレッド・アプリケーションのパフォーマンスを強化す
るシステム。 (25)ネットワークへの接続を有するコンピューティ
ング環境においてマルチスレッド・アプリケーションの
パフォーマンスを強化するシステムであって、複数の持
続接続と、複数の作業スレッドと、前記持続接続のうち
の選択された持続接続を前記作業スレッドのうちの選択
された作業スレッドに結合する手段であって、結合の実
行の結果として結合接続が生じる手段と、前記結合接続
のうちの選択された結合接続を結合解除する手段であっ
て、結合解除の実行の結果として結合解除された作業ス
レッドが生じる手段とを含むシステム。 (26)結合する前記手段が2段階待ち行列を使用する
ステップをさらに含み、結合解除する前記手段が前記2
段階待ち行列を使用するステップをさらに含む、上記
(25)に記載のマルチスレッド・アプリケーションの
パフォーマンスを強化するシステム。 (27)前記2段階待ち行列を使用して結合する前記手
段が、前記接続の最初のデータ・パケットが到着する
と、各前記持続接続を前記第1の段階に移動させる手段
と、前記接続のデータを受け取ると各前記持続接続を前
記第2の段階から前記第1の段階に移動させる手段と、
前記第1の段階から前記持続接続をスケジュールする手
段とをさらに含み、前記2段階待ち行列を使用して結合
解除する前記手段が、前記選択された結合接続が遊休状
態になると、前記結合接続のうちの選択された結合接続
を前記第1の段階から前記第2の段階に移動させる手段
と、最大遊休期間を超えるとそれに応答して、前記第2
の段階にある前記持続接続のうちの選択された持続接続
を閉じる手段と、前記結合解除された作業スレッドを、
結合する前記手段に使用可能にする手段とをさらに含
む、上記(26)に記載のマルチスレッド・アプリケー
ションのパフォーマンスを強化するシステム。 (28)結合解除する前記手段が、最大遊休接続数を超
えるとそれに応答して、前記第2段階にある前記持続接
続のうちのさらに選択された持続接続を閉じる手段をさ
らに含む、上記(27)に記載のマルチスレッド・アプ
リケーションのパフォーマンスを強化するシステム。 (29)ネットワークへの接続を有するコンピューティ
ング環境においてマルチスレッド・アプリケーションの
パフォーマンスを強化する方法であって、接続を求める
複数のクライアント要求を受け取るステップと、前記複
数のクライアント要求への複数の作業スレッドのオーバ
ースケジューリングを改善するスケジューリング・ヒュ
ーリスティックを実施するステップとを含む方法。 (30)前記作業スレッドの第1のグループがアクティ
ブ・スレッドであり、前記第1のグループが前記複数の
作業スレッドのうちの変更可能な作業スレッドから成
り、変更可能な数の前記変更可能な作業スレッドを有
し、前記変更可能な数が少なくとも1であり、スケジュ
ーリング・ヒューリスティックを実施する前記ステップ
が、前記複数のクライアント要求のうちの1つまたは複
数のクライアント要求から成る現行作業負荷に照らして
前記第1のグループ内の前記変更可能な数のバランスを
とるステップをさらに含む、上記(29)に記載のマル
チスレッド・アプリケーションのパフォーマンスを強化
する方法。 (31)バランスをとる前記ステップが平均遅延の使用
をさらに含む、上記(30)に記載のマルチスレッド・
アプリケーションのパフォーマンスを強化する方法。 (32)バランスをとる前記ステップが最大遅延の使用
をさらに含む、上記(31)に記載のマルチスレッド・
アプリケーションのパフォーマンスを強化する方法。 (33)前記平均遅延および前記最大遅延が構成パラメ
ータである、上記(32)に記載のマルチスレッド・ア
プリケーションのパフォーマンスを強化する方法。 (34)前記作業スレッドの第2のグループがブロック
・スレッドであり、前記第2のグループが前記複数の作
業スレッドのうちの前記第1のグループに入っていない
作業スレッドから成り、前記ブロック・スレッドが後入
れ先出し待ち行列に格納される、上記(30)に記載の
マルチスレッド・アプリケーションのパフォーマンスを
強化する方法。 (35)ネットワークへの接続を有するコンピューティ
ング環境においてマルチスレッド・アプリケーションの
パフォーマンスを強化する方法であって、各前記接続が
受け入れられると、接続を保留接続待ち行列から第1の
待ち行列に移動させるステップと、前記接続の最初のデ
ータ・パケットが到着すると、前記接続を前記第1の待
ち行列から第2の待ち行列に移動させるステップと、前
記第2の待ち行列上の各前記接続に作業スレッドを割り
当てるステップとを含む方法。 (36)ネットワークへの接続を有するコンピューティ
ング環境においてマルチスレッド・アプリケーションの
パフォーマンスを強化する方法であって、複数の発生源
から入力を受け取るステップと、前記受け取った入力を
スケジューリングのために単一の待ち行列にマージする
ステップとを含む方法。 (37)各前記接続が受け入れられると、接続を保留接
続待ち行列から第1の待ち行列に移動させるステップ
と、前記接続の最初のデータ・パケットが到着すると、
前記接続を前記第1の待ち行列から前記単一の待ち行列
に移動させるステップと、前記単一の待ち行列上の各前
記接続に作業スレッドを割り当てるステップとをさらに
含む、上記(36)に記載のマルチスレッド・アプリケ
ーションのパフォーマンスを強化する方法。 (38)複数の作業スレッドのうちの変更可能な作業ス
レッドから成り、変更可能な数の前記変更可能な作業ス
レッドを有し、前記変更可能な数が少なくとも1である
アクティブ作業スレッドのグループをさらに含み、前記
スケジューリング・ステップが、前記単一の待ち行列に
格納された前記クライアント要求から成る現行作業負荷
に照らして前記アクティブ・グループ内の前記変更可能
な数のバランスをとるスケジューリング・ヒューリステ
ィックを実施するステップとをさらに含む、上記(3
7)に記載のマルチスレッド・アプリケーションのパフ
ォーマンスを強化する方法。 (39)ネットワークへの接続を有するコンピューティ
ング環境においてマルチスレッド・アプリケーションの
パフォーマンスを強化する方法であって、複数の持続接
続のうちの選択された持続接続を複数の作業スレッドの
うちの選択された作業スレッドに結合するステップであ
って、結合ステップの実行の結果として結合接続が生じ
るステップと、前記結合接続のうちの選択された結合接
続を結合解除する手段であって、結合解除ステップの実
行の結果として結合解除された作業スレッドが生じるス
テップとを含む方法。 (40)前記結合ステップが2段階待ち行列を使用する
ステップをさらに含み、前記結合解除ステップが前記2
段階待ち行列を使用するステップをさらに含む、上記
(39)に記載のマルチスレッド・アプリケーションの
パフォーマンスを強化する方法。 (41)前記2段階待ち行列を使用して結合する前記ス
テップが、前記持続接続の最初のデータ・パケットが到
着すると、各前記持続接続を前記第1の段階に移動させ
るステップと、前記持続接続のデータを受け取ると各前
記持続接続を前記第2の段階から前記第1の段階に移動
させるステップと、前記第1の段階から前記持続接続を
スケジュールするステップとをさらに含み、前記2段階
待ち行列を使用して結合解除する前記ステップが、前記
選択された結合接続が遊休状態になると、前記結合接続
のうちの選択された結合接続を前記第1の段階から前記
第2の段階に移動させるステップと、最大遊休期間を超
えるとそれに応答して、前記第2の段階にある前記持続
接続のうちの選択された持続接続を閉じるステップと、
前記結合解除された作業スレッドを、結合する前記ステ
ップに使用可能にするステップとをさらに含む、上記
(40)に記載のマルチスレッド・アプリケーションの
パフォーマンスを強化する方法。 (42)前記結合解除ステップが、最大遊休接続数を超
えるとそれに応答して、前記第2段階にある前記持続接
続のうちのさらに選択された持続接続を閉じるステップ
をさらに含む、上記(41)に記載のマルチスレッド・
アプリケーションのパフォーマンスを強化する方法。
【図面の簡単な説明】
【図1】本発明を実施することができるコンピュータ・
ワークステーション環境を示すブロック図である。
【図2】本発明を実施することができるネットワーク・
コンピューティング環境を示す図である。
【図3】オーバースケジューリング問題を改善する本発
明に関係する論理を記載したフローチャートである。
【図4】オーバースケジューリング問題を改善する本発
明に関係する論理を記載したフローチャートである。
【図5】オーバースケジューリング問題を改善する本発
明に関係する論理を記載したフローチャートである。
【図6】マージされた入力をスケジューリングに使用可
能にあうるために、複数の入力源からの入力をマージす
る場合の、本発明に関係する論理を記載したフローチャ
ートである。
【図7】本発明によって使用される多段階待ち行列を示
す概念図である。
【図8】本発明によって使用される多段階待ち行列を示
す概念図である。
【図9】持続接続を使用する場合に、着信要求へのスレ
ッドの割当てを最適化する本発明に関係する論理を記載
したフローチャートである。
【図10】持続接続を使用する場合に、着信要求へのス
レッドの割当てを最適化する本発明に関係する論理を記
載したフローチャートである。
【符号の説明】
10 ワークステーション 12 マイクロプロセッサ 14 バス 16 ユーザ・インタフェース・アダプタ 18 キーボード 20 マウス 24 表示装置 26 ディスプレイ・アダプタ 28 サーバ・メモリ 30 長期記憶域 40 データ処理ネットワーク 44 ローカル・エリア・ネットワーク 46 メインフレーム・コンピュータ(サーバ) 48 通信リンク

Claims (42)

    【特許請求の範囲】
  1. 【請求項1】ネットワークへの接続を有するコンピュー
    ティング環境において、前記環境内のコンピュータ・シ
    ステムによって読取り可能で、マルチスレッド・アプリ
    ケーションのパフォーマンスを強化するコンピュータ可
    読コードであって、 接続を求める複数のクライアント要求と、 複数の作業スレッドと、 前記複数のクライアント要求を受け取るサブプロセス
    と、 前記作業スレッドのオーバースケジューリングを改善す
    るスケジューリング・ヒューリスティックを実施するサ
    ブプロセスとを含むコンピュータ可読コード。
  2. 【請求項2】前記作業スレッドの第1のグループがアク
    ティブ・スレッドであり、前記第1のグループが前記複
    数の作業スレッドのうちの変更可能な作業スレッドから
    成り、変更可能な数の前記変更可能な作業スレッドを有
    し、前記変更可能な数が少なくとも1であり、 スケジューリング・ヒューリスティックを実施する前記
    サブプロセスが、前記複数のクライアント要求のうちの
    1つまたは複数のクライアント要求から成る現行作業負
    荷に照らして前記第1のグループ内の前記変更可能な数
    のバランスをとるサブプロセスをさらに含む、請求項1
    に記載のマルチスレッド・アプリのパフォーマンスを強
    化するコンピュータ可読コード。
  3. 【請求項3】バランスをとる前記サブプロセスが平均遅
    延の使用をさらに含む、請求項2に記載のマルチスレッ
    ド・アプリケーションのパフォーマンスを強化するコン
    ピュータ可読コード。
  4. 【請求項4】バランスをとる前記サブプロセスが最大遅
    延の使用をさらに含む、請求項3に記載のマルチスレッ
    ド・アプリケーションのパフォーマンスを強化するコン
    ピュータ可読コード。
  5. 【請求項5】前記平均遅延および前記最大遅延が構成パ
    ラメータである、請求項4に記載のマルチスレッド・ア
    プリケーションのパフォーマンスを強化するコンピュー
    タ可読コード。
  6. 【請求項6】前記作業スレッドの第2のグループがブロ
    ック・スレッドであり、前記第2のグループが前記複数
    の作業スレッドのうちの前記第1のグループに入ってい
    ない作業スレッドから成り、 前記ブロック・スレッドが後入れ先出し待ち行列に格納
    される、請求項2に記載のマルチスレッド・アプリケー
    ションのパフォーマンスを強化するコンピュータ可読コ
    ード。
  7. 【請求項7】ネットワークへの接続を有するコンピュー
    ティング環境において、前記環境内のコンピュータ・シ
    ステムによって読取り可能で、マルチスレッド・アプリ
    ケーションのパフォーマンスを強化するコンピュータ可
    読コードであって、 各前記接続が受け入れられると、接続を保留接続待ち行
    列から第1の待ち行列に移動させるサブプロセスと、 前記接続の最初のデータ・パケットが到着すると、前記
    接続を前記第1の待ち行列から第2の待ち行列に移動さ
    せるサブプロセスと、 前記第2の待ち行列上の各前記接続に作業スレッドを割
    り当てるサブプロセスとを含むコンピュータ可読コー
    ド。
  8. 【請求項8】ネットワークへの接続を有するコンピュー
    ティング環境において、前記環境内のコンピュータ・シ
    ステムによって読取り可能で、マルチスレッド・アプリ
    ケーションのパフォーマンスを強化するコンピュータ可
    読コードであって、 複数の発生源から入力を受け取るサブプロセスと、 前記受け取った入力をスケジューリングのために単一の
    待ち行列にマージするサブプロセスとを含むコンピュー
    タ可読コード。
  9. 【請求項9】各前記接続が受け入れられると、接続を保
    留接続待ち行列から第1の待ち行列に移動させるサブプ
    ロセスと、 前記接続の最初のデータ・パケットが到着すると、前記
    接続を前記第1の待ち行列から前記単一の待ち行列に移
    動させるサブプロセスと、 前記単一の待ち行列上の各前記接続に作業スレッドを割
    り当てるサブプロセスとをさらに含む、請求項8に記載
    のマルチスレッド・アプリケーションのパフォーマンス
    を強化するコンピュータ可読コード。
  10. 【請求項10】スケジューリングする前記サブプロセス
    が、 複数の作業スレッドのうちの変更可能な作業スレッドか
    ら成り、変更可能な数の前記変更可能な作業スレッドを
    有し、前記変更可能な数が少なくとも1であるアクティ
    ブ作業スレッドのグループと、 前記単一の待ち行列に格納された前記クライアント要求
    から成る現行作業負荷に照らして前記アクティブ・グル
    ープ内の前記変更可能な数のバランスをとるスケジュー
    リング・ヒューリスティックを実施するサブプロセスと
    をさらに含む、請求項9に記載のマルチスレッド・アプ
    リケーションのパフォーマンスを強化するコンピュータ
    可読コード。
  11. 【請求項11】ネットワークへの接続を有するコンピュ
    ーティング環境において、前記環境内のコンピュータ・
    システムによって読取り可能で、マルチスレッド・アプ
    リケーションのパフォーマンスを強化するコンピュータ
    可読コードであって、 複数の持続接続と、 複数の作業スレッドと、 前記持続接続のうちの選択された持続接続を前記作業ス
    レッドのうちの選択された作業スレッドに結合するサブ
    プロセスであって、その実行の結果として結合接続が生
    じるサブプロセスと、 前記結合接続のうちの選択された結合接続を結合解除す
    るサブプロセスであって、その実行の結果として結合解
    除された作業スレッドが生じるサブプロセスとを含むコ
    ンピュータ可読コード。
  12. 【請求項12】結合する前記サブプロセスが2段階待ち
    行列を使用するステップをさらに含み、 結合解除する前記サブプロセスが前記2段階待ち行列を
    使用するステップをさらに含む、請求項11に記載のマ
    ルチスレッド・アプリケーションのパフォーマンスを強
    化するコンピュータ可読コード。
  13. 【請求項13】前記2段階待ち行列を使用して結合する
    前記サブプロセスが、 前記接続の最初のデータ・パケットが到着すると、各前
    記持続接続を前記第1の段階に移動させるサブプロセス
    と、 前記接続のデータを受け取ると各前記持続接続を前記第
    2の段階から前記第1の段階に移動させるサブプロセス
    と、 前記第1の段階から前記持続接続をスケジュールするサ
    ブプロセスとをさらに含み、 前記2段階待ち行列を使用して結合解除する前記サブプ
    ロセスが、 前記選択された結合接続が遊休状態になると、前記結合
    接続のうちの選択された結合接続を前記第1の段階から
    前記第2の段階に移動させるサブプロセスと、 最大遊休期間を超えるとそれに応答して、前記第2の段
    階にある前記持続接続のうちの選択された持続接続を閉
    じるサブプロセスと、 前記結合解除された作業スレッドを、結合する前記サブ
    プロセスに使用可能にするサブプロセスとをさらに含
    む、請求項12に記載のマルチスレッド・アプリケーシ
    ョンのパフォーマンスを強化するコンピュータ可読コー
    ド。
  14. 【請求項14】結合解除する前記サブプロセスが、 最大遊休接続数を超えるとそれに応答して、前記第2段
    階にある前記持続接続のうちのさらに選択された持続接
    続を閉じるサブプロセスをさらに含む、請求項13に記
    載のマルチスレッド・アプリケーションのパフォーマン
    スを強化するコンピュータ可読コード。
  15. 【請求項15】ネットワークへの接続を有するコンピュ
    ーティング環境においてマルチスレッド・アプリケーシ
    ョンのパフォーマンスを強化するシステムであって、 接続を求める複数のクライアント要求と、 複数の作業スレッドと、 前記複数のクライアント要求を受け取る手段と、 前記作業スレッドのオーバースケジューリングを改善す
    るスケジューリング・ヒューリスティックを実施する手
    段とを含むシステム。
  16. 【請求項16】前記作業スレッドの第1のグループがア
    クティブ・スレッドであり、前記第1のグループが前記
    複数の作業スレッドのうちの変更可能な作業スレッドか
    ら成り、変更可能な数の前記変更可能な作業スレッドを
    有し、前記変更可能な数が少なくとも1であり、 スケジューリング・ヒューリスティックを実施する前記
    手段が、前記複数のクライアント要求のうちの1つまた
    は複数のクライアント要求から成る現行作業負荷に照ら
    して前記第1のグループ内の前記変更可能な数のバラン
    スをとる手段をさらに含む、請求項15に記載のマルチ
    スレッド・アプリケーションのパフォーマンスを強化す
    るシステム。
  17. 【請求項17】バランスをとる前記手段が平均遅延の使
    用をさらに含む、請求項16に記載のマルチスレッド・
    アプリケーションのパフォーマンスを強化するシステ
    ム。
  18. 【請求項18】バランスをとる前記手段が最大遅延の使
    用をさらに含む、請求項17に記載のマルチスレッド・
    アプリケーションのパフォーマンスを強化するシステ
    ム。
  19. 【請求項19】前記平均遅延および前記最大遅延が構成
    パラメータである、請求項18に記載のマルチスレッド
    ・アプリケーションのパフォーマンスを強化するシステ
    ム。
  20. 【請求項20】前記作業スレッドの第2のグループがブ
    ロック・スレッドであり、前記第2のグループが前記複
    数の作業スレッドのうちの前記第1のグループに入って
    いない作業スレッドから成り、 前記ブロック・スレッドが後入れ先出し待ち行列に格納
    される、請求項16に記のマルチスレッド・アプリケー
    ションのパフォーマンスを強化するシステム。
  21. 【請求項21】ネットワークへの接続を有するコンピュ
    ーティング環境においてマルチスレッド・アプリケーシ
    ョンのパフォーマンスを強化するシステムであって、 各前記接続が受け入れられると、接続を保留接続待ち行
    列から第1の待ち行列に移動させる手段と、 前記接続の最初のデータ・パケットが到着すると、前記
    接続を前記第1の待ち行列から第2の待ち行列に移動さ
    せる手段と、 前記第2の待ち行列上の各前記接続に作業スレッドを割
    り当てる手段とを含むシステム。
  22. 【請求項22】ネットワークへの接続を有するコンピュ
    ーティング環境においてマルチスレッド・アプリケーシ
    ョンのパフォーマンスを強化するシステムであって、 複数の発生源から入力を受け取る手段と、 前記受け取った入力をスケジューリングのために単一の
    待ち行列にマージする手段とを含むシステム。
  23. 【請求項23】各前記接続が受け入れられると、接続を
    保留接続待ち行列から第1の待ち行列に移動させる手段
    と、 前記接続の最初のデータ・パケットが到着すると、前記
    各接続を前記第1の待ち行列から前記単一の待ち行列に
    移動させる手段と、 前記単一の待ち行列上の各前記接続に作業スレッドを割
    り当てる手段とをさらに含む、請求項22に記載のマル
    チスレッド・アプリケーションのパフォーマンスを強化
    するシステム。
  24. 【請求項24】スケジューリングする前記手段が、 複数の作業スレッドのうちの変更可能な作業スレッドか
    ら成り、変更可能な数の前記変更可能な作業スレッドを
    有し、前記変更可能な数が少なくとも1であるアクティ
    ブ作業スレッドのグループと、 前記単一の待ち行列に格納された前記クライアント要求
    から成る現行作業負荷に照らして前記アクティブ・グル
    ープ内の前記変更可能な数のバランスをとるスケジュー
    リング・ヒューリスティックを実施する手段とをさらに
    含む、請求項23に記載のマルチスレッド・アプリケー
    ションのパフォーマンスを強化するシステム。
  25. 【請求項25】ネットワークへの接続を有するコンピュ
    ーティング環境においてマルチスレッド・アプリケーシ
    ョンのパフォーマンスを強化するシステムであって、 複数の持続接続と、 複数の作業スレッドと、 前記持続接続のうちの選択された持続接続を前記作業ス
    レッドのうちの選択された作業スレッドに結合する手段
    であって、結合の実行の結果として結合接続が生じる手
    段と、 前記結合接続のうちの選択された結合接続を結合解除す
    る手段であって、結合解除の実行の結果として結合解除
    された作業スレッドが生じる手段とを含むシステム。
  26. 【請求項26】結合する前記手段が2段階待ち行列を使
    用するステップをさらに含み、 結合解除する前記手段が前記2段階待ち行列を使用する
    ステップをさらに含む、請求項25に記載のマルチスレ
    ッド・アプリケーションのパフォーマンスを強化するシ
    ステム。
  27. 【請求項27】前記2段階待ち行列を使用して結合する
    前記手段が、 前記接続の最初のデータ・パケットが到着すると、各前
    記持続接続を前記第1の段階に移動させる手段と、 前記接続のデータを受け取ると各前記持続接続を前記第
    2の段階から前記第1の段階に移動させる手段と、 前記第1の段階から前記持続接続をスケジュールする手
    段とをさらに含み、 前記2段階待ち行列を使用して結合解除する前記手段
    が、 前記選択された結合接続が遊休状態になると、前記結合
    接続のうちの選択された結合接続を前記第1の段階から
    前記第2の段階に移動させる手段と、 最大遊休期間を超えるとそれに応答して、前記第2の段
    階にある前記持続接続のうちの選択された持続接続を閉
    じる手段と、 前記結合解除された作業スレッドを、結合する前記手段
    に使用可能にする手段とをさらに含む、請求項26に記
    載のマルチスレッド・アプリケーションのパフォーマン
    スを強化するシステム。
  28. 【請求項28】結合解除する前記手段が、 最大遊休接続数を超えるとそれに応答して、前記第2段
    階にある前記持続接続のうちのさらに選択された持続接
    続を閉じる手段をさらに含む、請求項27に記載のマル
    チスレッド・アプリケーションのパフォーマンスを強化
    するシステム。
  29. 【請求項29】ネットワークへの接続を有するコンピュ
    ーティング環境においてマルチスレッド・アプリケーシ
    ョンのパフォーマンスを強化する方法であって、 接続を求める複数のクライアント要求を受け取るステッ
    プと、 前記複数のクライアント要求への複数の作業スレッドの
    オーバースケジューリングを改善するスケジューリング
    ・ヒューリスティックを実施するステップとを含む方
    法。
  30. 【請求項30】前記作業スレッドの第1のグループがア
    クティブ・スレッドであり、前記第1のグループが前記
    複数の作業スレッドのうちの変更可能な作業スレッドか
    ら成り、変更可能な数の前記変更可能な作業スレッドを
    有し、前記変更可能な数が少なくとも1であり、 スケジューリング・ヒューリスティックを実施する前記
    ステップが、前記複数のクライアント要求のうちの1つ
    または複数のクライアント要求から成る現行作業負荷に
    照らして前記第1のグループ内の前記変更可能な数のバ
    ランスをとるステップをさらに含む、請求項29に記載
    のマルチスレッド・アプリケーションのパフォーマンス
    を強化する方法。
  31. 【請求項31】バランスをとる前記ステップが平均遅延
    の使用をさらに含む、請求項30に記載のマルチスレッ
    ド・アプリケーションのパフォーマンスを強化する方
    法。
  32. 【請求項32】バランスをとる前記ステップが最大遅延
    の使用をさらに含む、請求項31に記載のマルチスレッ
    ド・アプリケーションのパフォーマンスを強化する方
    法。
  33. 【請求項33】前記平均遅延および前記最大遅延が構成
    パラメータである、請求項32に記載のマルチスレッド
    ・アプリケーションのパフォーマンスを強化する方法。
  34. 【請求項34】前記作業スレッドの第2のグループがブ
    ロック・スレッドであり、前記第2のグループが前記複
    数の作業スレッドのうちの前記第1のグループに入って
    いない作業スレッドから成り、 前記ブロック・スレッドが後入れ先出し待ち行列に格納
    される、請求項30に記載のマルチスレッド・アプリケ
    ーションのパフォーマンスを強化する方法。
  35. 【請求項35】ネットワークへの接続を有するコンピュ
    ーティング環境においてマルチスレッド・アプリケーシ
    ョンのパフォーマンスを強化する方法であって、 各前記接続が受け入れられると、接続を保留接続待ち行
    列から第1の待ち行列に移動させるステップと、 前記接続の最初のデータ・パケットが到着すると、前記
    接続を前記第1の待ち行列から第2の待ち行列に移動さ
    せるステップと、 前記第2の待ち行列上の各前記接続に作業スレッドを割
    り当てるステップとを含む方法。
  36. 【請求項36】ネットワークへの接続を有するコンピュ
    ーティング環境においてマルチスレッド・アプリケーシ
    ョンのパフォーマンスを強化する方法であって、 複数の発生源から入力を受け取るステップと、 前記受け取った入力をスケジューリングのために単一の
    待ち行列にマージするステップとを含む方法。
  37. 【請求項37】各前記接続が受け入れられると、接続を
    保留接続待ち行列から第1の待ち行列に移動させるステ
    ップと、 前記接続の最初のデータ・パケットが到着すると、前記
    接続を前記第1の待ち行列から前記単一の待ち行列に移
    動させるステップと、 前記単一の待ち行列上の各前記接続に作業スレッドを割
    り当てるステップとをさらに含む、請求項36に記載の
    マルチスレッド・アプリケーションのパフォーマンスを
    強化する方法。
  38. 【請求項38】複数の作業スレッドのうちの変更可能な
    作業スレッドから成り、変更可能な数の前記変更可能な
    作業スレッドを有し、前記変更可能な数が少なくとも1
    であるアクティブ作業スレッドのグループをさらに含
    み、 前記スケジューリング・ステップが、 前記単一の待ち行列に格納された前記クライアント要求
    から成る現行作業負荷に照らして前記アクティブ・グル
    ープ内の前記変更可能な数のバランスをとるスケジュー
    リング・ヒューリスティックを実施するステップとをさ
    らに含む、請求項37に記載のマルチスレッド・アプリ
    ケーションのパフォーマンスを強化する方法。
  39. 【請求項39】ネットワークへの接続を有するコンピュ
    ーティング環境においてマルチスレッド・アプリケーシ
    ョンのパフォーマンスを強化する方法であって、 複数の持続接続のうちの選択された持続接続を複数の作
    業スレッドのうちの選択された作業スレッドに結合する
    ステップであって、結合ステップの実行の結果として結
    合接続が生じるステップと、 前記結合接続のうちの選択された結合接続を結合解除す
    る手段であって、結合解除ステップの実行の結果として
    結合解除された作業スレッドが生じるステップとを含む
    方法。
  40. 【請求項40】前記結合ステップが2段階待ち行列を使
    用するステップをさらに含み、 前記結合解除ステップが前記2段階待ち行列を使用する
    ステップをさらに含む、請求項39に記載のマルチスレ
    ッド・アプリケーションのパフォーマンスを強化する方
    法。
  41. 【請求項41】前記2段階待ち行列を使用して結合する
    前記ステップが、 前記持続接続の最初のデータ・パケットが到着すると、
    各前記持続接続を前記第1の段階に移動させるステップ
    と、 前記持続接続のデータを受け取ると各前記持続接続を前
    記第2の段階から前記第1の段階に移動させるステップ
    と、 前記第1の段階から前記持続接続をスケジュールするス
    テップとをさらに含み、 前記2段階待ち行列を使用して結合解除する前記ステッ
    プが、 前記選択された結合接続が遊休状態になると、前記結合
    接続のうちの選択された結合接続を前記第1の段階から
    前記第2の段階に移動させるステップと、 最大遊休期間を超えるとそれに応答して、前記第2の段
    階にある前記持続接続のうちの選択された持続接続を閉
    じるステップと、 前記結合解除された作業スレッドを、結合する前記ステ
    ップに使用可能にするステップとをさらに含む、請求項
    40に記載のマルチスレッド・アプリケーションのパフ
    ォーマンスを強化する方法。
  42. 【請求項42】前記結合解除ステップが、 最大遊休接続数を超えるとそれに応答して、前記第2段
    階にある前記持続接続のうちのさらに選択された持続接
    続を閉じるステップをさらに含む、請求項41に記載の
    マルチスレッド・アプリケーションのパフォーマンスを
    強化する方法。
JP14109999A 1998-06-12 1999-05-21 スレッド・サーバのパフォーマンス強化方法および装置 Expired - Fee Related JP3555846B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/097,282 US6427161B1 (en) 1998-06-12 1998-06-12 Thread scheduling techniques for multithreaded servers
US09/097282 1998-06-12

Publications (2)

Publication Number Publication Date
JP2000029815A true JP2000029815A (ja) 2000-01-28
JP3555846B2 JP3555846B2 (ja) 2004-08-18

Family

ID=22262616

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14109999A Expired - Fee Related JP3555846B2 (ja) 1998-06-12 1999-05-21 スレッド・サーバのパフォーマンス強化方法および装置

Country Status (3)

Country Link
US (2) US6427161B1 (ja)
JP (1) JP3555846B2 (ja)
KR (1) KR100326990B1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100391513B1 (ko) * 2001-05-15 2003-07-12 주식회사 넷마블 멀티 스레드를 이용한 네트워크의 병목현상 감소 방법
JP2010211523A (ja) * 2009-03-10 2010-09-24 Ricoh Co Ltd 機器管理装置、機器管理システム、機器管理方法、機器管理プログラム、及びそのプログラムを記録した記録媒体

Families Citing this family (129)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6353616B1 (en) * 1998-05-21 2002-03-05 Lucent Technologies Inc. Adaptive processor schedulor and method for reservation protocol message processing
US6859834B1 (en) * 1999-08-13 2005-02-22 Sun Microsystems, Inc. System and method for enabling application server request failover
US6754714B1 (en) * 1999-10-05 2004-06-22 Cisco Technology, Inc. Multilink point-to-point protocol network access server channel allocation method and apparatus
AU2056401A (en) * 1999-12-02 2001-06-12 Senvid, Inc. Method, system and service model for remote recording of television programs
US8793374B2 (en) * 1999-12-02 2014-07-29 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7917628B2 (en) * 1999-12-02 2011-03-29 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US8688797B2 (en) * 1999-12-02 2014-04-01 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US9191443B2 (en) * 1999-12-02 2015-11-17 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7587467B2 (en) * 1999-12-02 2009-09-08 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7934251B2 (en) 1999-12-02 2011-04-26 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7120692B2 (en) 1999-12-02 2006-10-10 Senvid, Inc. Access and control system for network-enabled devices
US7137115B2 (en) * 2000-01-25 2006-11-14 Fujitsu Limited Method for controlling multithreading
US8161182B1 (en) 2000-01-26 2012-04-17 Cisco Technology, Inc. Managing network congestion using dynamically advertised congestion status
US6658449B1 (en) 2000-02-17 2003-12-02 International Business Machines Corporation Apparatus and method for periodic load balancing in a multiple run queue system
US6904459B1 (en) * 2000-03-14 2005-06-07 Microsoft Corporation Methods and systems for preventing socket flooding during denial of service attacks
US7069313B2 (en) * 2000-03-14 2006-06-27 Microsoft Corporation Methods and systems for preventing socket flooding during denial of service attacks
US6874027B1 (en) * 2000-04-07 2005-03-29 Network Appliance, Inc. Low-overhead threads in a high-concurrency system
US6941379B1 (en) * 2000-05-23 2005-09-06 International Business Machines Corporation Congestion avoidance for threads in servers
US7140018B1 (en) * 2000-06-20 2006-11-21 International Business Machines Corporation Method of using a distinct flow of computational control as a reusable abstract data object
WO2002013048A2 (en) * 2000-08-03 2002-02-14 Prelude Systems, Inc. System and method for client-server communication
US6553406B1 (en) * 2000-08-03 2003-04-22 Prelude Systems, Inc. Process thread system receiving request packet from server thread, initiating process thread in response to request packet, synchronizing thread process between clients-servers.
US7475293B1 (en) 2000-08-04 2009-01-06 Sun Microsystems, Inc. Product check matrix
US7207046B1 (en) * 2000-08-23 2007-04-17 Agilent Technologies, Inc. Method and system for providing string-over-socket scripting language access to distributed object model interfaces
US6807572B1 (en) * 2000-08-31 2004-10-19 Intel Corporation Accessing network databases
US20020161814A1 (en) * 2000-10-04 2002-10-31 Wical Kelly J. Batch processing system running in parallel on automated and distributed replication systems
US20030046394A1 (en) * 2000-11-03 2003-03-06 Steve Goddard System and method for an application space server cluster
US20020055982A1 (en) * 2000-11-03 2002-05-09 The Board Of Regents Of The University Of Nebraska Controlled server loading using L4 dispatching
US20020055983A1 (en) * 2000-11-03 2002-05-09 The Board Of Regents Of The University Of Nebraska Computer server having non-client-specific persistent connections
US20020120716A1 (en) * 2000-12-22 2002-08-29 Balaji Raghunathan Server frame work for a database server
US7415025B1 (en) 2000-12-29 2008-08-19 Cisco Technology, Inc. Method and apparatus for clearing a large number of connections in an ATM network
US20020092012A1 (en) * 2001-01-09 2002-07-11 Shah Alexandre K. Smart-caching system and method
US7145913B2 (en) * 2001-02-15 2006-12-05 The Board Of Trustees Of The University Of Illinois Thread based scalable routing for an active router
US20030061257A1 (en) * 2001-09-25 2003-03-27 Javier Cardona Multithreaded universal daemon for network data exchanges
US20030069917A1 (en) * 2001-10-04 2003-04-10 Miller Larry J. Balanced client/server mechanism in a time-partitioned real-time operting system
US20030084164A1 (en) * 2001-10-29 2003-05-01 Mazzitelli John Joseph Multi-threaded server accept system and method
JP2003143153A (ja) * 2001-11-01 2003-05-16 Nec Corp サーバコンピュータ、そのコネクションクローズ方法及びプログラム
US7024481B2 (en) * 2001-11-01 2006-04-04 Microsoft Corporation Method and framework for processing network communication protocol timers
US20030172128A1 (en) * 2002-03-05 2003-09-11 Intel Corporation Dynamic asynchronous results
US7107596B2 (en) * 2002-03-14 2006-09-12 International Business Machines Corporation Statistically-triggered heuristics
JP3828444B2 (ja) * 2002-03-26 2006-10-04 株式会社日立製作所 データ通信中継装置及びシステム
US7299264B2 (en) * 2002-05-07 2007-11-20 Hewlett-Packard Development Company, L.P. System and method for monitoring a connection between a server and a passive client device
WO2003102758A1 (en) * 2002-05-31 2003-12-11 University Of Delaware Method and apparatus for real-time multithreading
KR100899527B1 (ko) * 2002-06-25 2009-05-27 주식회사 케이티 웹 서비스의 멀티쓰레드 운용 시스템 및 방법
US7043729B2 (en) * 2002-08-08 2006-05-09 Phoenix Technologies Ltd. Reducing interrupt latency while polling
AU2003259871A1 (en) * 2002-08-16 2004-03-03 Globespanvirata Incorporated Timing ring mechanism
US7272820B2 (en) * 2002-12-12 2007-09-18 Extrapoles Pty Limited Graphical development of fully executable transactional workflow applications with adaptive high-performance capacity
US7398518B2 (en) * 2002-12-17 2008-07-08 Intel Corporation Method and apparatus for measuring thread wait time
US7249355B2 (en) * 2002-12-18 2007-07-24 Microsoft Corporation Unified network thread management
US7415540B2 (en) * 2002-12-31 2008-08-19 Intel Corporation Scheduling processing threads
US7237242B2 (en) * 2002-12-31 2007-06-26 International Business Machines Corporation Dynamic thread pool tuning techniques
US7207043B2 (en) * 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
US7298753B1 (en) * 2003-02-10 2007-11-20 Cisco Technology, Inc. Technique for managing heavy signaling traffic that is directed to a particular signaling control unit
US7363626B2 (en) * 2003-03-24 2008-04-22 Sun Microsystems, Inc. Thread level application partitioning
US20040190494A1 (en) * 2003-03-26 2004-09-30 Bauer Samuel M. Systems and methods for voice quality testing in a non-real-time operating system environment
US7328438B2 (en) * 2003-03-27 2008-02-05 International Business Machines Corporation Deallocation of computer data in a multithreaded computer
US7467390B2 (en) * 2003-04-01 2008-12-16 International Business Machines Corporation Enhanced staged event-driven architecture
US7496915B2 (en) * 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US20040252709A1 (en) * 2003-06-11 2004-12-16 Fineberg Samuel A. System having a plurality of threads being allocatable to a send or receive queue
US7373640B1 (en) 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
US7690003B2 (en) * 2003-08-29 2010-03-30 Fuller Jeffrey C System and method for increasing data throughput using thread scheduling
WO2005050625A2 (en) * 2003-11-14 2005-06-02 Senvid, Inc. Managed peer-to-peer applications in a secure network
US8578380B1 (en) * 2003-12-17 2013-11-05 Vmware, Inc. Program concurrency control using condition variables
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
GB0407388D0 (en) 2004-03-31 2004-05-05 British Telecomm Method and apparatus for communicating data between computer devices
US20050268300A1 (en) * 2004-05-14 2005-12-01 Microsoft Corporation Distributed task scheduler for computing environments
US7574439B2 (en) * 2004-05-20 2009-08-11 International Business Machines Corporation Managing a nested request
US7685575B1 (en) * 2004-06-08 2010-03-23 Sun Microsystems, Inc. Method and apparatus for analyzing an application
US20060004977A1 (en) * 2004-06-30 2006-01-05 Joefon Jann Autonomically tuning the virtual memory subsystem of a computer operating system
US7308083B2 (en) * 2004-06-30 2007-12-11 Glenayre Electronics, Inc. Message durability and retrieval in a geographically distributed voice messaging system
US20060015872A1 (en) * 2004-07-13 2006-01-19 Pohl William N Process management
US20060026593A1 (en) * 2004-07-30 2006-02-02 Microsoft Corporation Categorizing, voting and rating community threads
US7844668B2 (en) * 2004-07-30 2010-11-30 Microsoft Corporation Suggesting a discussion group based on indexing of the posts within that discussion group
BRPI0418999A (pt) * 2004-08-12 2007-12-11 Telecom Italia Spa método de receber dados por uma pluralidade linhas, sistema para receber dados, rede de comunicação, e, produto de programa de computador
US20060075404A1 (en) * 2004-10-06 2006-04-06 Daniela Rosu Method and system for scheduling user-level I/O threads
US20060085698A1 (en) * 2004-10-15 2006-04-20 Microsoft Corporation Synchronization mechanism for tools that drive UI-based applications
US7484217B2 (en) * 2005-02-24 2009-01-27 International Business Machines Corporation Method for automatic adjustment of time a consumer waits to access data from a queue during a waiting phase and transmission phase at the queue
DE102005008975A1 (de) * 2005-02-28 2006-08-31 Robert Bosch Gmbh Verfahren und Vorrichtung zur Überwachung einer Prozessausführung
US7823158B2 (en) * 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US7793299B2 (en) * 2005-08-30 2010-09-07 International Business Machines Corporation System and method for scheduling tasks for execution
US20070121822A1 (en) * 2005-11-01 2007-05-31 Victor Carnale Methods and apparatus to allow multiple clients to access a computer telephony interface server
US7962926B2 (en) * 2006-04-05 2011-06-14 International Business Machines Corporation Method, system, and program storage device for generating a retry message when a thread in a real-time application is unavailable to process a request to utilize the real-time application
GB0702596D0 (en) 2006-05-05 2007-03-21 Omnifone Ltd Big book one
KR101208679B1 (ko) 2006-08-08 2012-12-06 삼성전자주식회사 소켓의 공유를 위한 네트워크 기기 및 그의 소켓 공유 방법
CA2557343C (en) * 2006-08-28 2015-09-22 Ibm Canada Limited-Ibm Canada Limitee Runtime code modification in a multi-threaded environment
US8839271B2 (en) * 2006-10-11 2014-09-16 International Business Machines Corporation Call stack sampling to obtain information for analyzing idle states in a data processing system
US8356284B2 (en) * 2006-12-28 2013-01-15 International Business Machines Corporation Threading model analysis system and method
US8020166B2 (en) * 2007-01-25 2011-09-13 Hewlett-Packard Development Company, L.P. Dynamically controlling the number of busy waiters in a synchronization object
US8219845B2 (en) * 2007-05-09 2012-07-10 Microsoft Corporation Timer service uses a single timer function to perform timing services for both relative and absolute timers
US8122449B2 (en) * 2007-09-07 2012-02-21 International Business Machines Corporation Determining whether to retain or terminate a thread based on a minimum number of threads in a thread pool and a maximum number of threads allowed waiting on the channel
US20090094614A1 (en) * 2007-10-05 2009-04-09 Microsoft Corporation Direct synchronous input
KR100959898B1 (ko) 2007-12-27 2010-05-27 주식회사 케이티 인터넷 서비스를 위한 부하 분산형 스케줄링 구조를 가지는서비스 서버 및 그 서비스 방법
US8489752B2 (en) * 2008-05-29 2013-07-16 Advanced Micro Devices, Inc. Method and system for controlling bus access
US8271659B2 (en) * 2008-09-04 2012-09-18 Oracle International Corporation Methods and systems for automatic removal and replacement of connections in a pool rendered stale by a firewall
US20110010716A1 (en) * 2009-06-12 2011-01-13 Arvind Raghuraman Domain Bounding for Symmetric Multiprocessing Systems
US8230078B2 (en) * 2009-08-18 2012-07-24 International Business Machines Corporation Accept and receive enhancements
CN102045251B (zh) * 2009-10-20 2012-08-22 国基电子(上海)有限公司 路由器及tcp端口防御方法
TWI397286B (zh) * 2009-10-28 2013-05-21 Hon Hai Prec Ind Co Ltd 路由器及tcp埠防禦方法
KR101644800B1 (ko) * 2010-01-07 2016-08-02 삼성전자주식회사 컴퓨팅 시스템 및 방법
US8745629B2 (en) * 2010-01-11 2014-06-03 Qualcomm Incorporated System and method of controlling power in an electronic device
US8756329B2 (en) 2010-09-15 2014-06-17 Oracle International Corporation System and method for parallel multiplexing between servers in a cluster
US8893134B2 (en) * 2011-04-13 2014-11-18 International Business Machines Corporation Locating bottleneck threads in multi-thread applications
US9086909B2 (en) * 2011-05-17 2015-07-21 Oracle International Corporation System and method for supporting work sharing muxing in a cluster
US8595743B2 (en) 2012-05-01 2013-11-26 Concurix Corporation Network aware process scheduling
US9417935B2 (en) 2012-05-01 2016-08-16 Microsoft Technology Licensing, Llc Many-core process scheduling to maximize cache usage
US8650538B2 (en) 2012-05-01 2014-02-11 Concurix Corporation Meta garbage collection for functional code
US8726255B2 (en) 2012-05-01 2014-05-13 Concurix Corporation Recompiling with generic to specific replacement
US8495598B2 (en) 2012-05-01 2013-07-23 Concurix Corporation Control flow graph operating system configuration
US8700838B2 (en) 2012-06-19 2014-04-15 Concurix Corporation Allocating heaps in NUMA systems
US9047196B2 (en) 2012-06-19 2015-06-02 Concurix Corporation Usage aware NUMA process scheduling
US8707326B2 (en) 2012-07-17 2014-04-22 Concurix Corporation Pattern matching process scheduler in message passing environment
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
US8793669B2 (en) 2012-07-17 2014-07-29 Concurix Corporation Pattern extraction from executable code in message passing environments
US9043788B2 (en) 2012-08-10 2015-05-26 Concurix Corporation Experiment manager for manycore systems
US9621667B2 (en) * 2012-08-27 2017-04-11 Adobe Systems Incorporated Streaming media with a server identified at runtime
US8656134B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed on executing code
US8607018B2 (en) 2012-11-08 2013-12-10 Concurix Corporation Memory usage configuration based on observations
US8656135B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed prior to execution
EP2798518B1 (en) * 2013-02-20 2017-06-28 Fastly Inc. Enhanced thread handling in security handshaking
US20130227529A1 (en) 2013-03-15 2013-08-29 Concurix Corporation Runtime Memory Settings Derived from Trace Data
US8739151B1 (en) * 2013-03-15 2014-05-27 Genetec Inc. Computer system using in-service software upgrade
US9558035B2 (en) * 2013-12-18 2017-01-31 Oracle International Corporation System and method for supporting adaptive busy wait in a computing environment
US9753780B2 (en) 2015-07-07 2017-09-05 Sybase, Inc. Topology-aware processor scheduling
JP6597360B2 (ja) * 2016-02-12 2019-10-30 富士通株式会社 コネクション管理プログラム、コネクション管理方法、および情報処理装置
US10133496B1 (en) * 2016-06-15 2018-11-20 Amazon Technologies, Inc. Bindable state maintaining components
US10146593B2 (en) * 2017-02-17 2018-12-04 Sas Institute Inc. Techniques for decentralized load balancing
US10802878B2 (en) * 2017-03-31 2020-10-13 Bmc Software, Inc. Phased start and stop of resources in a mainframe environment
US11340955B2 (en) 2020-01-02 2022-05-24 International Business Machines Corporation Thread pool management for multiple applications
US11301335B2 (en) * 2020-03-04 2022-04-12 International Business Machines Corporation Database backup performance
KR102616610B1 (ko) * 2023-06-29 2023-12-27 (주)래셔널아울 동접 관리를 위한 소켓핸들링 및 멀티스레드 제어 장치및 방법

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0581163A (ja) 1991-09-19 1993-04-02 Nec Corp 情報処理システム
US6684261B1 (en) * 1993-07-19 2004-01-27 Object Technology Licensing Corporation Object-oriented operating system
JPH07152685A (ja) 1993-11-26 1995-06-16 Hitachi Ltd 分散編集制御方式
WO1996017306A2 (en) * 1994-11-21 1996-06-06 Oracle Corporation Media server
US5752031A (en) * 1995-04-24 1998-05-12 Microsoft Corporation Queue object for controlling concurrency in a computer system
JPH0944366A (ja) 1995-07-28 1997-02-14 Oki Electric Ind Co Ltd マルチスレッド・スケジューリング装置
JPH09198292A (ja) 1996-01-23 1997-07-31 Nec Corp 共用データの管理方式
US5826081A (en) * 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
US6212573B1 (en) * 1996-06-26 2001-04-03 Sun Microsystems, Inc. Mechanism for invoking and servicing multiplexed messages with low context switching overhead
US6298386B1 (en) * 1996-08-14 2001-10-02 Emc Corporation Network file server having a message collector queue for connection and connectionless oriented protocols
GB2320112B (en) * 1996-12-07 2001-07-25 Ibm High-availability computer server system
GB2320594A (en) * 1996-12-20 1998-06-24 Ibm Dispatching client method calls to parallel execution threads within a server
US6173311B1 (en) * 1997-02-13 2001-01-09 Pointcast, Inc. Apparatus, method and article of manufacture for servicing client requests on a network
US6021470A (en) * 1997-03-17 2000-02-01 Oracle Corporation Method and apparatus for selective data caching implemented with noncacheable and cacheable data for improved cache performance in a computer networking system
US6075791A (en) * 1997-10-28 2000-06-13 Lucent Technologies Inc. System for guaranteeing data transfer rates and delays in packet networks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100391513B1 (ko) * 2001-05-15 2003-07-12 주식회사 넷마블 멀티 스레드를 이용한 네트워크의 병목현상 감소 방법
JP2010211523A (ja) * 2009-03-10 2010-09-24 Ricoh Co Ltd 機器管理装置、機器管理システム、機器管理方法、機器管理プログラム、及びそのプログラムを記録した記録媒体

Also Published As

Publication number Publication date
US6427161B1 (en) 2002-07-30
US20010018701A1 (en) 2001-08-30
KR100326990B1 (ko) 2002-03-04
US6823515B2 (en) 2004-11-23
KR20000005691A (ko) 2000-01-25
JP3555846B2 (ja) 2004-08-18

Similar Documents

Publication Publication Date Title
JP3555846B2 (ja) スレッド・サーバのパフォーマンス強化方法および装置
US9792155B2 (en) Dynamic job processing based on estimated completion time and specified tolerance time
US6895585B2 (en) Method of mixed workload high performance scheduling
US7246167B2 (en) Communication multiplexor using listener process to detect newly active client connections and passes to dispatcher processes for handling the connections
US5875329A (en) Intelligent batching of distributed messages
Bondi Characteristics of scalability and their impact on performance
US7051330B1 (en) Generic application server and method of operation therefor
US4630196A (en) Store and forward facility for use in multiprocessing environment
US7137116B2 (en) Method and system for performing a task on a computer
JP2677744B2 (ja) 分散メモリ式デジタル計算システム
Bangs et al. Better operating system features for faster network servers
US20040003085A1 (en) Active application socket management
US8196145B2 (en) Determining real time stateful business application processing in an otherwise stateless service-oriented architecture
JP2000259502A (ja) データ・ストレージとデータ処理システムにおける書き込みキャッシュデータの転送方法及びその装置
KR20010041297A (ko) 원격 프로세스의 중단과 연속 방법 및 장치
US7140015B1 (en) Microkernel for real time applications
US7539995B2 (en) Method and apparatus for managing an event processing system
US7219345B2 (en) System and method for terminating processes in a distributed computing system
JPH10333925A (ja) オートノマス・エージェント・アーキテクチャ
US20030088605A1 (en) Method, computer program product, and system for a self-throttled computing task
Gopalan Real-time support in general purpose operating systems
US6704765B1 (en) System for allocating resources among agent processes
Ahuja et al. A multi-microprocessor architecture with hardware support for communication and scheduling
JP2856154B2 (ja) 非並行型パラレルトランザクションシステムにおける優先制御負荷分散方式
JPH09319708A (ja) オンライン制御プロセス代行方式

Legal Events

Date Code Title Description
A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20031127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040225

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040225

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040428

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20040428

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040507

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

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees