JP2016509306A - クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法 - Google Patents

クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法 Download PDF

Info

Publication number
JP2016509306A
JP2016509306A JP2015555995A JP2015555995A JP2016509306A JP 2016509306 A JP2016509306 A JP 2016509306A JP 2015555995 A JP2015555995 A JP 2015555995A JP 2015555995 A JP2015555995 A JP 2015555995A JP 2016509306 A JP2016509306 A JP 2016509306A
Authority
JP
Japan
Prior art keywords
selector
multiplexer
read
queue
threads
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
JP2015555995A
Other languages
English (en)
Other versions
JP2016509306A5 (ja
JP6283376B2 (ja
Inventor
オテンコ,オレクサンドル
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2016509306A publication Critical patent/JP2016509306A/ja
Publication of JP2016509306A5 publication Critical patent/JP2016509306A5/ja
Application granted granted Critical
Publication of JP6283376B2 publication Critical patent/JP6283376B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

システムおよび方法は、クラスタにおけるサーバ間での効率的な低レイテンシ多重化を提供することができる。そのような1つのシステムは、各々が1つ以上のプロセッサおよび高性能メモリを含む1つ以上の高性能コンピューティングシステムのクラスタを含むことができる。クラスタは、インフィニバンドネットワークによって通信する。システムは、1つ以上のアプリケーションサーバインスタンスを含む、クラスタ上で実行されるミドルウェア環境も含むことができる。システムは、1つ以上のセレクタを含むことができ、各前記セレクタは読込み準備ファイルディスクリプタのキューを含む。さらに、システムは、共有キューを備え、各前記セレクタの読込み準備ファイルディスクリプタを共有キューに移すことができる。また、複数のマルチプレクサスレッドが前記共有キューからワークを得るように動作する。

Description

著作権に関する注意
本特許文献の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、この特許文献または特許開示の何者かによる複製が、特許商標庁の特許ファイルまたは記録にある限り、それに対して異議を唱えないが、そうでなければ、いかなる場合もすべての著作権を保有する。
発明の分野
本発明は、概してコンピュータシステムおよびミドルウェアといったソフトウェアに関し、特にクラスタ内のサーバ間で多重化するためのシステムおよび方法に関する。
背景
どのような大きな組織でも、その中では、長年を経て、さまざまな異なるコンピュータハードウェア、オペレーティングシステム、およびアプリケーションソフトウェアを含むITインフラストラクチャが無秩序に拡大していることが多い。このようなインフラストラクチャの個々の構成要素自体は巧みに設計され適切に維持管理されているかもしれないが、このような構成要素を相互に接続、または、リソースを共有しようとすると、それは困難な管理タスクであることが多い。近年、組織の関心は、仮想化およびストレージの集中化といった技術に向けられるようになっており、さらに近年では、共有インフラストラクチャの基礎を提供できるクラウドコンピューティングに向けられている。しかしながら、このような環境に特に適したオールインワンのプラットフォームはほとんどない。これらが、本発明の実施の形態が取組もうとしている一般的な分野である。
概要
クラスタ内のサーバ間における効率的な低レイテンシ多重化を提供するためのシステムおよび方法が提供される。そのような1つのシステムは、各々が1つ以上のプロセッサおよび高性能メモリを含む1つ以上の高性能コンピューティングシステムのクラスタを含むことができる。クラスタは、インフィニバンドネットワークによって通信する。システムは、1つ以上のアプリケーションサーバインスタンスを含む、クラスタ上で実行するミドルウェア環境も含むことができる。システムは、1つ以上のセレクタを含むことができ、各前記セレクタは読込み準備ファイルディスクリプタのキューを含む。さらに、システムは、共有キューを含むことができ、各前記セレクタの読込み準備ファイルディスクリプタを共有キューに移すことができる。また、複数のマルチプレクサスレッドが前記共有キューからワークを得るように動作する。
本発明の他の目的および利点は、添付の図面に照らして読まれると、様々な実施の形態の以下の詳細な説明から当業者にとって明らかになるであろう。
発明のある実施の形態に従うミドルウェアマシン環境100の例を示す図である。 発明のある実施の形態に従うミドルウェアマシンプラットフォームまたは環境の別の例を示す図である。 発明の様々な実施の形態に従う単純な多重化をサポートする例を示す図である。 発明の様々な実施の形態に従うパラレル多重化をサポートする例を示す図である。 発明の様々な実施の形態に従うワークシェアリング多重化をサポートする例を示す図である。 発明の様々な実施の形態に従うワークシェアリング多重化をサポートする典型的な擬似コードの例を示す図である。 発明の様々な実施の形態に従うワークシェアリング多重化をサポートする他の典型的な擬似コードの例を示す図である。 発明の実施の形態に従うワークシェアリング多重化をサポートするための典型的なフローチャートを例示する図である。
詳細な説明
クラスタ内でのワークシェアリング多重化をサポートすることができるシステムおよび方法が本明細書に記載される。
図1は、発明のある実施の形態に従うミドルウェアマシン環境100の例を示す。図1に示されるように、各ミドルウェアマシンシステム102は、数個のミドルウェアマシンラック構成要素104を含み、ミドルウェアマシンラック構成要素104は各々、高性能ミドルウェアマシンハードウェアノード106(たとえば64ビットプロセッサ、高性能大型メモリ、ならびに冗長インフィニバンドおよびイーサネット(登録商標)ネットワーキング)と、ミドルウェアマシンソフトウェア環境108との組合せを含む。その結果は、数日または数カ月ではなく数分でプロビジョニングすることができ、要求に応じて拡大縮小できる、完全なアプリケーションサーバ環境である。ある実施の形態に従うと、各ミドルウェアマシンシステムは、満杯の、2分の1の、もしくは4分の1のラックとしてまたはラック構成要素からなるその他の構成として準備することができ、数個のミドルウェアマシンシステムを、ここでもインフィニバンドを用いて連結することにより、より大きな環境を作ることができる。各ミドルウェアマシンソフトウェア環境に、数個のアプリケーションサーバインスタンスまたはその他のソフトウエアインスタンスを設けることができる。たとえば、図1に示されるように、アプリケーションサーバインスタンス109が、仮想マシン116と、オペレーティングシステム120と、仮想化層124と、アプリケーションサーバ層128(たとえば、サーブレット(Servlet)132、EJB134、およびグリッドリンク(GlidLink)136それぞれのコンテナを含むウェブロジック(WebLogic))とを含み得るのに対し、別のアプリケーションサーバインスタンス110は、仮想マシン118と、オペレーティングシステム122と、仮想化層126と、データグリッド層140(たとえばアクティブキャッシュ142を含むコヒーレンス(Coherence))とを含み得る。インスタンスは各々、エクサロジック統合(integration)パックといったミドルウェアマシン統合構成要素150を用いて、互いに通信でき、かつ、そのミドルウェアマシンハードウェアノードおよびその他のノード双方とも通信できる。ミドルウェアマシン統合構成要素150自体が、以下でさらに詳細に説明するように、インフィニバンドおよびその他の特徴に対するサポートといったいくつかの最適化特徴を提供する。
図2は、発明のある実施の形態に従うミドルウェアマシンプラットフォームまたは環境の別の例を示す。図2に示されるように、各アプリケーションサーバインスタンスは、ミドルウェアマシン環境内において送信側および/または受信側160、161として機能し得る。各アプリケーションサーバインスタンスは、アプリケーションサーバがインフィニバンドネットワーク164を介して互いに通信できるようにするマルチプレクサ162、163にも関連付けられている。図2に示される例では、アプリケーションサーバインスタンスは、ソケットダイレクトプロトコル(sockets direct protocol)168に関連付けられ得るカーネルスペース(kernel space)165と、ユーザスペース167と、アプリケーションサーバ(たとえばウェブロジックスペース)166と、JVM(たとえばジェイロキット/ホットスポット層)170と、WLSコア172と、サーブレットコンテナ174と、JSPコンパイラ176とを含み得る。他の例に従うと、ミドルウェアタイプのソフトウェアの他の組合せが含まれていてもよい。さまざまな実施の形態に従い、マシン統合構成要素は、ゼロバッファコピー、分散/収集I/O、T3接続、遅延デシリアライゼーション、およびグリッドリンクデータソースの特徴を提供することにより、共有されるインフラストラクチャの基礎を提供するとともにこのインフラストラクチャ内での性能を改善することができる。
単純な多重化
図3は、ミドルウェアマシン環境において単純な多重化をサポートする例を示す。図3に示されるように、ミドルウェアマシン環境300においてオペレーティングシステム(OS)によって維持されるファイルディスクリプタキャッシュ、すなわちFDキャッシュ301は、ソケット(xを付してある)といった1つ以上の読込み準備ファイルディスクリプタを含むことができる。ここで、大きなキャッシュのスキャンおよび/または大きなキャッシュへの同時アクセスの維持は、OSにおいて非効率的であり得る。
セレクタインターフェイスを介して露出され得るセレクタ302などのポール装置は、ソケット(リストにおいて点で示す)などの読込み準備ファイルディスクリプタのキューを含むことができる。1つ以上のマルチプレクサスレッド305a−305cによってセレクタ302を用いて、FDキャッシュ301をポーリングすることができる。スレッド305a−305cは、たとえば完了するべきFDキャッシュ301上のスキャンを待機しているSelector.select()関数呼び出しを行いつつ、セレクタ302においてブロックされ得る。次いで、スレッド305a−305cは、読込み準備ファイルディスクリプタをセレクタリスト302にコピーすることができる。
各マルチプレクサスレッド305a−305cは、スレッドローカルリスト303a−303cを維持することができる。スレッドローカルリスト303a−303cは、スレッド305a−305cによって処理することができる読込み準備ソケット(リストにおいて点で示す)のリストを含む。リスト303a−303cはスレッドローカルであるため、他のスレッドがアイドルであっても、他のスレッドは当該リストの処理を支援することができないことがある。
図3に示されるように、スレッドローカルリスト303a−303cは異なる数の点を有し、これは個々のマルチプレクサスレッドに渡される異なる量のワークを表わす。たとえば、マルチプレクサスレッド305cがアイドルである間、マルチプレクサスレッド305bが読込み準備ソケットの長いリストを処理する必要があり得る。
リクエストマネージャ304を用いて、ミドルウェアマシン環境300における異なるサーバからの1つ以上のリクエストを処理することができる。リクエストマネージャ304は、複数のキューを有する構成要素であり、マルチプレクサスレッド305a−305cによって準備されるリクエストをそれに追加することができる。これらのキューは、先入先出(FIFO)キューまたは優先度つきキューとすることができる。その上、スレッドカウントに対する制約は、リクエストマネージャ304内の様々なキューに強制され得る。
図3に示されるように、1つのセレクタ302のみが複数のマルチプレクサスレッド305a−cに設けられる。たとえば、マルチプレクサスレッド305bが読込み準備ソケットを取得すると、すべてそれ自身のスレッドローカルリスト303bにワークを有する。同時に、他のマルチプレクサスレッド305aおよび305bがSelector.select()を入力するために待機し得る。したがって、読込み準備ソケットがシングルスレッドモデルの下で処理されるため、マルチプレクサのパフォーマンスが悪化し得る。
さらに、一旦マルチプレクサスレッド305bがSelector.select()から戻ると、別のスレッド、たとえば305cがSelector.select()に再び入り得る。そのような場合、セレクタ302がちょうど空になったため、マルチプレクサスレッド305cをブロックする可能性が高い。したがって、1つのマルチプレクサスレッドが使用中の間、大部分のマルチプレクサスレッドが待機しているという状況があり得る。
したがって、例では、図3に示されるように、異なるマルチプレクサスレッド305a−305cによって共有セレクタ302およびFDキャッシュ301にアクセスする際にコンテンションがあり得る。さらに、読込み準備ソケットの非共有はスレッド不足を招く場合があり、使用されていないスレッドは利用可能であるが、読込み準備ソケットの処理を開始することはできない場合がある。
単純な多重化に関する追加的な情報は、2011年5月17日に提出され、「クラスタ内のサーバ間でのパラレル多重化のためのシステムおよび方法」と題された米国特許出願第13/109,871号(代理人事件番号ORACL-05121US0)に開示されており、当該出願を引用によってここに援用する。
パラレル多重化
図4は、ミドルウェアマシン環境におけるパラレル多重化をサポートする例を示す。図4に示されるように、ミドルウェアマシン環境400は多数のセレクタ402a−cを含むことができ、セレクタ402a−cの各々を用いて、1つ以上のファイルディスクリプタキャッシュ、すなわちFDキャッシュ401a−cをポーリングすることができる。その上、ミドルウェアマシン環境400には、正確に同数のワーカースレッド、すなわちマルチプレクサスレッド405a−cがあり得、各マルチプレクサスレッド405a−cは、スレッドローカルリスト403a−cを維持している。
パラレル多重化を用いると、各セレクタは1つのマルチプレクサスレッドによってのみアクセスされ得る。たとえば、マルチプレクサスレッド405aはセレクタ402aを使用し、マルチプレクサスレッド405bはセレクタ402bを使用し、マルチプレクサスレッド405cはセレクタを402cを使用する。ワーカースレッド405a−cは、セレクタ402a−cをシングルスレッドでポーリングし、読込み準備ソケットをシングルスレッドで処理する。個々のセレクタ402a−cを使用することにより、セレクタ当たりの到着率の低下が可能となり、したがってシステムリソースに対するコンテンションが減少する。
パラレル多重化を用いると、単一のセレクタによってもたらされる負荷の不均衡を解決することができる。さらに、異なるセレクタおよびマルチプレクサスレッド間でのワークの均一な分配を実現する必要性が依然としてあり得る。
したがって、図4に示される例では、マルチプレクサスレッド405a−cによるセレクタ402a−cおよびFDキャッシュ401a−cへのアクセスにおけるコンテンションを減少させることができる。さらに、FDキャッシュスキャン効率は、比較可能なFDの組に対して、図3に示される1つの大きなキャッシュ301の代わりに、いくつかのより小さなキャッシュ401a−cを用いることによって向上することができる。その上、図4に示される設計は、依然としてスレッド不足を被り得る。なぜなら、マルチプレクサスレッド405a−cは読込み準備ソケットを共有していないからである。
パラレル多重化に関する追加的な情報は、2011年5月17日に提出され、「クラスタ内のサーバ間でのパラレル多重化のためのシステムおよび方法」と題された米国特許出願第13/109,871号(代理人事件番号ORACL-05121US0)に開示されており、当該出願を引用によってここに援用する。
ワークシェアリング多重化
図5は、発明の様々な実施の形態に従うワークシェアリング多重化をサポートする例を示す。図5に示されるように、ミドルウェアマシン環境500は、ワークの同時キュー506などの、たとえばバッファに構成される共有キューを含み、1つまたは多くのセレクタ502a−cをその中に移すことができる。共有キュー506は、読込み準備ソケットおよび/または関連するセレクタ502a−cの双方を含むことができる。
セレクタ502a−cのブロッキングキューを1つの共有キュー506に結合することにより、キュー処理モデルは、個々のワーカースレッド505a−eがすべての読込み準備ソケットを連続して処理することを必要とすることを回避する。ワーカースレッド505a−eは、個々のセレクタ502a−cからの読込み準備ソケットの同時処理を可能にするためにアクティブにすることができる。したがって、共有キュー506は、OSによって維持されるFDキャッシュ501a−cの同時特性を向上させることができ、キュー処理モデルは、エンドツーエンド遅延の短縮を提供する。
このキュー処理モデルを用いると、個々のセレクタ502a−cから戻された1つまたは多くの読込み準備ソケットおよびセレクタ502a−c自体を、複数のワーカースレッド、すなわちマルチプレクサスレッド505a−c間で共有することができる。図5に示されるように、システムは1つ以上のマルチプレクサスレッド505a−cを含むことができ、マルチプレクサスレッド505a−cの各々は、ワークの共有キュー506から1つの読込み準備ソケットを取得することができる。したがって、各スレッドローカルリスト503a−503cは、1つの長さのみを有し得る。その上、1つ以上のマルチプレクサスレッド505d−eは、セレクタ502a−bを用いてFDキャッシュ501a−bをポーリングすることができる。
共有キュー506が空でない限り、マルチプレクサにとって高スループットを実現するためにはマルチプレクサスレッド505a−eはサスペンドしてはならない。なぜなら、キュー処理モデルはいくつかのスレッドがSelector.selectにブロックされることを回避することができる一方、他のスレッドは処理すべき2つ以上のソケットを有し得るからである。したがって、このキュー処理モデルは、さもなければスレッドローカルリストにおいて浪費されるであろうリクエストのキュー待機時間を短縮することができる。
発明の様々な実施の形態に従うと、マルチプレクサスレッド(MUXERS)の数は、セレクタ(SELECTORS)の数以下であり得る。すなわち、1≦SELECT0RS≦MUXERSである。マルチプレクサスレッドは、可能性としてあらゆるセレクタにおいてSelector.select()にブロックされることができる。したがって、SELECTORSの数までのマルチプレクサスレッドがSelector.select()にブロックされ得る。一旦マルチプレクサスレッドが読込み準備ソケットのリストを有するセレクタから戻ると、1つ以上のスレッドが共有キュー506からワークを得る準備ができた状態であり得るが、マルチプレクサスレッドのうちのいくつかは、その時点でソケットを読出すのに忙しい場合がある。読込み準備ソケットを読出す準備ができているスレッドの数は、MUXERSの数とSELECTORSの数との間の差を表わすMUXERS−SELECTORSの数までであり得る。
マルチプレクサスレッド505a−eがアイドルであると、ワーカーは、セレクタ502a−cから読込み準備ソケットを得ようとすることがブロックされるか、または共有ブロッキングキュー506から読込み準備ソケットを得ようとすることがブロックされ得る。1つまたは多くの読込み準備ソケットが利用可能になると、読込み準備ソケットおよびそれらのセレクタの502a−cは、システム全体の進行を保証する順序で、共有ブロッキングキュー506となり得る。
発明の様々な実施の形態に従うと、セレクタから戻るすべてのワーカースレッド505d−eは、1つの最後の読込み準備ソケットを保持することができる。共有キュー506からブロック解除されるすべてのワーカースレッド505a−cは、読込み準備ソケットを有することができる。ワーカースレッド505a−cは継続してこれらのソケットを処理し(たとえばリクエストを読出し)、次いで共有キュー506からより多くの読込み準備ソケットを得るために戻ることができる。最終的にセレクタ502a−cを共有キュー506から得ることができ、その場合、ワーカースレッド505a−cは、続いて当該セレクタ502a−cからより多くの読込み準備ソケットを得ることができる。
読込み準備ソケットが処理される順序はセレクタ502a−cに基づいているため、このキュー処理モデルを用いると、共有キュー506により多くの読込み準備ソケットを有する機会がより多い。その結果、読込み準備ソケットをブロッキングなしにセレクタ502a−cから取得することができ、ネットワーク集約的なワークロードに関して有意な応答時間短縮を実現することができる。
さらに、共有スキームによって、ワーカースレッド505a−eがセレクタ502a−cから連続的に読込み準備ソケットを取得し、サスペンドされるかまたはコンテキストスイッチを行なう必要なくそれらを処理することが可能となる。したがって、このキュー処理モデルは、大きな程度の同時性を実現することができる。
図6は、発明の様々な実施の形態に従うワークシェアリング多重化をサポートする典型的な擬似コードの例を示す。図6に示されるように、マルチプレクサクラスを規定することができる(1−31行目)。ワークのキューをセットアップし、多くのセレクタ(Selector)をポピュレートすることができる(4行目)。さらに、マルチプレクサが実行しているとき、ソケットを処理するために無限ループ(13−30行目)を用いることができる。無限ループ内の各反復については、アレイリスト(ArrayList)から取得されるエントリがセレクタ(Selector)またはセレクションキー(SelectionKey)(18行目)であるかをマルチプレクサクラスが判定することができる。エントリがセレクタ(Selector)である場合、マルチプレクサは、セレクタ(Selector)内のコンテンツをワークのキューに拡張することを試みることができる(18−25行目)。そうでない場合、マルチプレクサはセレクションキー(SelectionKey)を用いて読込み準備チャネル(readReadyChannel)を確立することができる(26−29行目)。
図7は、発明の様々な実施の形態に従うワークシェアリング多重化をサポートする他の典型的な擬似コードの例を示す。図7に示されるように、異なるマルチプレクサクラスを、未済のワークを共有することにより熱心であるように規定することができ(1−31行目)、たとえばアレイリスト(ArrayList)が空でない場合、マルチプレクサクラスは、jobs.offerAll関数呼び出しを用いてそのコンテンツをジョブのキューに拡張することができる(17−21行目)。したがって、無限ループ内では、マルチプレクサクラスは、反復ごとに空でないワークのリストをダンプすることを試みる。その上、マルチプレクサクラスは、スレッドローカルリストと同様のやり方でキューへの同時アクセスを回避することができる。
さらに、セレクタ(Selector)において待機する代わりに、可能な限り多くのマルチプレクサスレッドをソケットを読出すのに忙しい状態に保つために、マルチプレクサクラスは、可能な限り遅くセレクタをキューに追加することを試みる。その理由は、最後のポールからの時間がより長ければ、ワーカースレッドが直ちに戻ることができる可能性が高くなり、したがってあまりブロックしなくなるからである。そうでなければ、ワーカースレッドが過度に早くSelector.selectに入ると、コールがワーカースレッドをブロックさせる可能性が高くなる。なぜなら、セレクタリストが空になったのはほんの少し前であり、ファイルディスクリプタキャッシュが再びポピュレートされるために十分な時間がない場合があるからである。
図8は、発明の実施の形態に従うワークシェアリング多重化をサポートするための典型的なフローチャートを例示する。図8に示されるように、ステップ801において、システムは1つ以上のセレクタを提供することができ、各前記セレクタは、読込み準備ファイルディスクリプタのキューを含む。次いで、ステップ802において、システムは共有キューを提供することができ、各前記セレクタは共有キューへと空にされる。さらに、ステップ803において、システムは、1つ以上のマイクロプロセッサ上で実行されている複数のマルチプレクサスレッドが前記共有キューからワークを得ることを可能にする。
発明の様々な実施の形態に従うと、多くのセレクタからの1つのセレクタの効率的な同時選択に基づいてシステムの効率を実現することができ、1つの大きなキャッシュの代わりに、複数の小さなFDキャッシュからの同時選択が可能となる。さらに、読込み準備ソケットの非ブロッキング共有の使用により、スレッド不足をなくすことができる。固定されたメモリ設置面積で非ブロッキング大量追加操作を同時キューに用いることが有益である(たとえば、図7の20行目に示されるjobs.offerAll(...))。その上、システムは、ソケットが選択された後でセレクタが共有されるという順序(たとえば読込み準備ソケットがセレクタに関連して追加される順序))を保証することによって、読込み準備ソケットの適時の処理を保証することができ、システムの他の進行特性を全体として向上させることができる。
したがって、ワークシェアリング多重化を用いると、システムは効率的なキューの進行を保証することができ、様々な変わりやすい状態の共有を可能にし、読込み準備ソケットの同時処理中のスレッド不足をなくすことができる。
いくつかの実施の形態に従うと、上述の方法のうちの1つを実施するためのコンピュータプログラムが提供される。発明の実施の形態に従うと、コンピュータプログラムは、システムに、各セレクタが読込み準備ファイルディスクリプタのキューを含む1つ以上のセレクタを提供することと、各セレクタが共有キューへと空にされる共有キューを提供することと、複数のマルチプレクサスレッドが前記共有キューからワークを得ることを可能にすることとを含むステップを実行させる。
発明の一局面に従うと、クラスタにおけるワークシェアリング多重化をサポートするためのシステムが提供され、システムは、1つ以上のセレクタと、共有キューとして構成されるバッファと、1つ以上のマイクロプロセッサとを備える。各セレクタは読込み準備ファイルディスクリプタのキューを含む。バッファは共有キューとして構成される。各セレクタは共有キューへと空にされる。1つ以上のマイクロプロセッサは、前記共有キューからワークを得るように動作する複数のマルチプレクサスレッドを実行する。
発明の別の局面に従うと、クラスタにおけるワークシェアリング多重化をサポートするためのシステムが提供され、システムは、1つ以上のセレクタを提供するための手段と、共有キューを提供するための手段と、複数のマルチプレクサスレッドが前記共有キューからワークを得ることを可能にするための手段とを備える。各セレクタは読込み準備ファイルディスクリプタのキューを含む。各セレクタは共有キューへと空にされる。
本発明は、本開示の教示に従いプログラムされた、1つ以上のプロセッサ、メモリ、および/またはコンピュータ読取可能な記録媒体を含む、従来の汎用もしくは専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを1つ以上用いて、適宜実現し得る。適切なソフトウェアコーディングは、熟練したプログラマが本開示の教示に基づいて容易に準備できる。これはソフトウェア技術における当業者には明らかであろう。
実施の形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された記録媒体または(1つまたは複数の)コンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/またはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
本発明に関するこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。変更および変形は、開示されている特徴の適切な組合せを含む。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者が本発明のさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は、以下の特許請求の範囲およびその均等物によって定められることが意図されている。

Claims (24)

  1. クラスタ内でのワークシェアリング多重化をサポートするためのシステムであって、
    1つ以上のマイクロプロセッサと、
    1つ以上のセレクタとを備え、各前記セレクタは読込み準備ファイルディスクリプタのキューを含み、さらに、
    共有キューを備え、各前記セレクタは共有キューへと空にされ、さらに、
    1つ以上のマイクロプロセッサ上で実行され、前記共有キューからワークを得るように動作する複数のマルチプレクサスレッドを備える、システム。
  2. 1つ以上の読込み準備ファイルディスクリプタを含むファイルディスクリプタキャッシュをさらに備える、請求項1に記載のシステム。
  3. 前記ファイルディスクリプタキャッシュ上のスキャンが完了するのを待機しているときには、前記セレクタと関連付けられたスレッドはブロックされる、請求項2に記載のシステム。
  4. 前記セレクタと関連付けられたスレッドは、前記1つ以上の読込み準備ファイルディスクリプタを前記1つ以上のセレクタにコピーするように動作する、請求項2または3に記載のシステム。
  5. 各前記マルチプレクサスレッドは、処理している読込み準備ソケットのスレッドローカルリストを維持する、先行する請求項のいずれか1項に記載のシステム。
  6. 前記クラスタ内の異なるサーバからの1つ以上のリクエストを処理することができるリクエストマネージャをさらに備える、先行する請求項のいずれか1項に記載のシステム。
  7. 前記リクエストマネージャは、前記複数のマルチプレクサスレッドによって準備された前記1つ以上のリクエストが追加される複数のキューを含む、請求項6に記載のシステム。
  8. 前記セレクタより多い前記マルチプレクサスレッドがある、先行する請求項のいずれか1項に記載のシステム。
  9. 前記スレッドは、前記セレクタから読込み準備ソケットを連続的に取得し、サスペンドされるかまたはコンテキストスイッチを行なう必要なしにそれらを処理するように動作する、先行する請求項のいずれか1項に記載のシステム。
  10. 前記セレクタから戻るマルチプレクサスレッドは、最後の1つの読込み準備ソケットを保持することができる、先行する請求項のいずれか1項に記載のシステム。
  11. クラスタ内でのワークシェアリング多重化をサポートするための方法であって、
    1つ以上のセレクタを提供することを含み、各前記セレクタは読込み準備ファイルディスクリプタのキューを含み、さらに、
    共有キューを提供することを含み、各前記セレクタは共有キューへと空にされ、さらに、
    1つ以上のマイクロプロセッサ上で実行される複数のマルチプレクサスレッドが前記共有キューからワークを得ることを可能にすることを含む、方法。
  12. 1つ以上の読込み準備ファイルディスクリプタを含むファイルディスクリプタキャッシュを提供することをさらに含む、請求項11に記載の方法。
  13. 前記ファイルディスクリプタキャッシュ上のスキャンが完了するのを待機しているときに、前記セレクタと関連付けられたスレッドがブロックされるように構成することをさらに含む、請求項12に記載の方法。
  14. 前記セレクタと関連付けられたスレッドを、前記1つ以上の読込み準備ファイルディスクリプタを前記1つ以上のセレクタにコピーするように構成することをさらに含む、請求項12または13に記載の方法。
  15. 処理している読込み準備ソケットのスレッドローカルリストを維持するように各前記マルチプレクサスレッドを構成することをさらに含む、請求項11〜14のうちいずれか1項に記載の方法。
  16. 前記クラスタ内の異なるサーバからの1つ以上のリクエストを処理することができるリクエストマネージャを提供することをさらに含む、請求項11〜15のうちいずれか1項に記載の方法。
  17. 前記複数のマルチプレクサスレッドによって準備された前記1つ以上のリクエストが追加される複数のキューを含むように前記リクエストマネージャを構成することをさらに含む、請求項16に記載の方法。
  18. 前記セレクタよりも多くの前記マルチプレクサスレッドを提供することをさらに含む、請求項11〜17のうちいずれか1項に記載の方法。
  19. 前記セレクタから読込み準備ソケットを連続的に取得し、サスペンドされるかまたはコンテキストスイッチを行なう必要なしにそれらを処理するように1つ以上の前記マルチプレクサスレッドを構成することをさらに含む、請求項11〜18のうちいずれか1項に記載の方法。
  20. 実行されると請求項11〜19のうちいずれか1項に記載の方法をシステムに実行させるマシン読取可能な命令を含むコンピュータプログラム。
  21. 請求項20に記載のコンピュータプログラムを格納するマシン読取可能な記憶媒体を含むコンピュータプログラムプロダクト。
  22. 命令が格納された非一時的なマシン読取可能な記録媒体であって、前記命令は、実行されると、システムに、
    各セレクタが読込み準備ファイルディスクリプタのキューを含む1つ以上のセレクタを提供することと、
    各セレクタが共有キューへと空にされる共有キューを提供することと、
    1つ以上のマイクロプロセッサ上で実行される複数のマルチプレクサスレッドが前記共有キューからワークを得ることを可能にすることとを含むステップを実行させる、非一時的なマシン読取可能な記録媒体。
  23. クラスタ内でのワークシェアリング多重化をサポートするためのシステムであって、
    1つ以上のセレクタを備え、各前記セレクタは読込み準備ファイルディスクリプタのキューを含み、さらに、
    共有キューとして構成されるバッファを備え、各前記セレクタは共有キューへと空にされ、さらに、
    前記共有キューからワークを得るように動作する複数のマルチプレクサスレッドを実行する1つ以上のマイクロプロセッサを備える、システム。
  24. クラスタ内でのワークシェアリング多重化をサポートするためのシステムであって、
    1つ以上のセレクタを提供するための手段を備え、各前記セレクタは読込み準備ファイルディスクリプタのキューを含み、さらに、
    共有キューを提供するための手段を備え、各前記セレクタは共有キューへと空にされ、さらに、
    複数のマルチプレクサスレッドが前記共有キューからワークを得ることを可能にするための手段を備える、システム。
JP2015555995A 2013-01-31 2013-10-29 クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法 Active JP6283376B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/756,207 2013-01-31
US13/756,207 US9086909B2 (en) 2011-05-17 2013-01-31 System and method for supporting work sharing muxing in a cluster
PCT/US2013/067286 WO2014120304A1 (en) 2013-01-31 2013-10-29 System and method for supporting work sharing muxing in a cluster

Publications (3)

Publication Number Publication Date
JP2016509306A true JP2016509306A (ja) 2016-03-24
JP2016509306A5 JP2016509306A5 (ja) 2016-12-22
JP6283376B2 JP6283376B2 (ja) 2018-02-21

Family

ID=49582809

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015555995A Active JP6283376B2 (ja) 2013-01-31 2013-10-29 クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法

Country Status (5)

Country Link
US (1) US9086909B2 (ja)
EP (1) EP2951691B1 (ja)
JP (1) JP6283376B2 (ja)
CN (1) CN104769553B (ja)
WO (1) WO2014120304A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105681321A (zh) * 2016-02-24 2016-06-15 公安部第一研究所 一种数据处理方法及装置
CN108011909B (zh) * 2016-10-28 2020-09-01 北京市商汤科技开发有限公司 通信方法和系统、电子设备和计算机集群
CN107741883B (zh) * 2017-09-29 2018-10-23 武汉斗鱼网络科技有限公司 一种避免线程阻塞的方法、装置及计算机设备
CN109361572A (zh) * 2018-12-10 2019-02-19 浪潮(北京)电子信息产业有限公司 一种主机集群管理方法及相关装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002530736A (ja) * 1998-11-16 2002-09-17 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) 多重処理システムにおける改良結果処理方法
US20030110232A1 (en) * 2001-12-11 2003-06-12 International Business Machines Corporation Distributing messages between local queues representative of a common shared queue
JP2005505833A (ja) * 2001-10-05 2005-02-24 ビーイーエイ システムズ, インコーポレイテッド 多重発送プールを用いたアプリケーションサーバーのメッセージングのためのシステム

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5333274A (en) 1991-10-15 1994-07-26 International Business Machines Corp. Error detection and recovery in a DMA controller
US6192389B1 (en) * 1997-03-28 2001-02-20 International Business Machines Corporation Method and apparatus for transferring file descriptors in a multiprocess, multithreaded client/server system
US6427161B1 (en) * 1998-06-12 2002-07-30 International Business Machines Corporation Thread scheduling techniques for multithreaded servers
US6571274B1 (en) 1998-11-05 2003-05-27 Beas Systems, Inc. Clustered enterprise Java™ in a secure distributed processing system
WO2001073550A2 (en) 2000-03-29 2001-10-04 Nextset Software Inc. System and method of generating and using proxy beans
US20030120822A1 (en) 2001-04-19 2003-06-26 Langrind Nicholas A. Isolated control plane addressing
CA2415043A1 (en) * 2002-12-23 2004-06-23 Ibm Canada Limited - Ibm Canada Limitee A communication multiplexor for use with a database system implemented on a data processing system
US7554993B2 (en) 2003-03-27 2009-06-30 Hewlett-Packard Development Company, L.P. Method and apparatus for performing connection management with multiple stacks
US7536673B2 (en) 2003-07-22 2009-05-19 Sap Ag Application business object processing
US7043518B2 (en) 2003-07-31 2006-05-09 Cradle Technologies, Inc. Method and system for performing parallel integer multiply accumulate operations on packed data
US20050223109A1 (en) 2003-08-27 2005-10-06 Ascential Software Corporation Data integration through a services oriented architecture
US20050102412A1 (en) 2003-11-10 2005-05-12 Jan Hirsimaki Transmission performance of a transport layer protocol connection
US7640357B2 (en) * 2004-04-30 2009-12-29 Sap Ag Transmitting enterprise messages based on buffer sizes
US7649854B2 (en) * 2004-05-19 2010-01-19 Bea Systems, Inc. System and method for providing channels in application servers and transaction-based systems
WO2007014186A2 (en) 2005-07-22 2007-02-01 The Thomson Corporation Systems, methods, and software for online courses
US7673164B1 (en) 2004-12-13 2010-03-02 Massachusetts Institute Of Technology Managing power in a parallel processing environment
US7562138B2 (en) 2004-12-28 2009-07-14 Sap Shared memory based monitoring for application servers
ATE373399T1 (de) 2005-03-04 2007-09-15 Alcatel Lucent Vermittlung für integrierte telekommunikationssnetzwerke
US8762547B2 (en) 2005-04-29 2014-06-24 Sap Ag Shared memory implementations for session data within a multi-tiered enterprise network
US8707323B2 (en) * 2005-12-30 2014-04-22 Sap Ag Load balancing algorithm for servicing client requests
JP2007226398A (ja) 2006-02-22 2007-09-06 Hitachi Ltd データベース接続管理方法及び計算機システム
US8131860B1 (en) 2006-03-30 2012-03-06 Emc Corporation Serialization and deserialization
US20070245005A1 (en) * 2006-04-18 2007-10-18 Banerjee Dwip N Method and data processing system for managing a plurality of interfaces
US8112525B2 (en) 2006-05-16 2012-02-07 Oracle International Corporation Engine near cache for reducing latency in a telecommunications environment
US7371014B2 (en) 2006-08-21 2008-05-13 Intel Corporation Monolithic active optical cable assembly for data device applications and various connector types
EP2177010B1 (en) 2006-12-13 2015-10-28 Quickplay Media Inc. Mobile media platform
US8640086B2 (en) 2006-12-29 2014-01-28 Sap Ag Graphical user interface system and method for presenting objects
JP4706030B2 (ja) * 2007-06-19 2011-06-22 富士通株式会社 キャッシュ制御装置及び制御方法
US20090024764A1 (en) 2007-07-18 2009-01-22 International Business Machines Corporation Tracking The Physical Location Of A Server In A Data Center
US20090182642A1 (en) 2008-01-14 2009-07-16 Neelakantan Sundaresan Methods and systems to recommend an item
US8972978B2 (en) 2008-05-02 2015-03-03 Skytap Multitenant hosted virtual machine infrastructure
US9230002B2 (en) 2009-01-30 2016-01-05 Oracle International Corporation High performant information sharing and replication for single-publisher and multiple-subscriber configuration
CN101989922B (zh) 2009-07-31 2014-05-28 国际商业机器公司 用于恢复会话初始协议事务的方法和系统
US8566509B2 (en) 2009-08-25 2013-10-22 International Business Machines Corporation Efficiently implementing a plurality of finite state machines
US8811417B2 (en) * 2009-11-15 2014-08-19 Mellanox Technologies Ltd. Cross-channel network operation offloading for collective operations
US8543722B2 (en) 2010-03-30 2013-09-24 International Business Machines Corporation Message passing with queues and channels
CN102255794B (zh) * 2010-05-17 2014-07-30 塔塔咨询服务有限公司 远程消息收发吞吐量优化和等待时间缩短用系统和方法
US9185054B2 (en) 2010-09-15 2015-11-10 Oracle International Corporation System and method for providing zero buffer copying in a middleware machine environment
US8856460B2 (en) 2010-09-15 2014-10-07 Oracle International Corporation System and method for zero buffer copying in a middleware environment
US8938598B2 (en) * 2011-07-06 2015-01-20 Nvidia Corporation Facilitating simultaneous submission to a multi-producer queue by multiple threads with inner and outer pointers
US9563480B2 (en) * 2012-08-21 2017-02-07 Rackspace Us, Inc. Multi-level cloud computing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002530736A (ja) * 1998-11-16 2002-09-17 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) 多重処理システムにおける改良結果処理方法
JP2005505833A (ja) * 2001-10-05 2005-02-24 ビーイーエイ システムズ, インコーポレイテッド 多重発送プールを用いたアプリケーションサーバーのメッセージングのためのシステム
US20030110232A1 (en) * 2001-12-11 2003-06-12 International Business Machines Corporation Distributing messages between local queues representative of a common shared queue

Also Published As

Publication number Publication date
US9086909B2 (en) 2015-07-21
EP2951691B1 (en) 2018-08-08
CN104769553B (zh) 2018-06-12
WO2014120304A1 (en) 2014-08-07
CN104769553A (zh) 2015-07-08
EP2951691A1 (en) 2015-12-09
JP6283376B2 (ja) 2018-02-21
US20140215475A1 (en) 2014-07-31

Similar Documents

Publication Publication Date Title
US9864759B2 (en) System and method for providing scatter/gather data processing in a middleware environment
US8209690B2 (en) System and method for thread handling in multithreaded parallel computing of nested threads
JP4526412B2 (ja) マルチプロセッサシステムにおけるタスク管理方法および装置
WO2019223596A1 (zh) 事件处理方法、装置、设备及存储介质
JP6682668B2 (ja) コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法
US10095562B2 (en) System and method for transforming a queue from non-blocking to blocking
WO2010120247A1 (en) Server architecture for multi-core systems
JP6283376B2 (ja) クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法
JP6088528B2 (ja) トランザクションミドルウェアマシン環境においてシングルポイントボトルネックを防止するためのシステムおよび方法
US8156289B2 (en) Hardware support for work queue management
Denis Scalability of the NewMadeleine communication library for large numbers of MPI point-to-point requests
Devarajan et al. Hcl: Distributing parallel data structures in extreme scales
JP6412888B2 (ja) ミドルウェアマシン環境において協働的同時並行性をサポートするためのシステムおよび方法
Fatourou et al. Efficient Distributed Data Structures for Future Many-Core Architectures
Dafir An Empirical Evaluation of Map-Reduce with Remote Direct Memory Access
Venetis Improving basic thread operations with batches of threads

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161028

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161028

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170919

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171219

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180126

R150 Certificate of patent or registration of utility model

Ref document number: 6283376

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250