JP6412888B2 - ミドルウェアマシン環境において協働的同時並行性をサポートするためのシステムおよび方法 - Google Patents

ミドルウェアマシン環境において協働的同時並行性をサポートするためのシステムおよび方法 Download PDF

Info

Publication number
JP6412888B2
JP6412888B2 JP2015560168A JP2015560168A JP6412888B2 JP 6412888 B2 JP6412888 B2 JP 6412888B2 JP 2015560168 A JP2015560168 A JP 2015560168A JP 2015560168 A JP2015560168 A JP 2015560168A JP 6412888 B2 JP6412888 B2 JP 6412888B2
Authority
JP
Japan
Prior art keywords
priority queue
request
thread
requests
competing
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.)
Active
Application number
JP2015560168A
Other languages
English (en)
Other versions
JP2016511904A5 (ja
JP2016511904A (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 JP2016511904A publication Critical patent/JP2016511904A/ja
Publication of JP2016511904A5 publication Critical patent/JP2016511904A5/ja
Application granted granted Critical
Publication of JP6412888B2 publication Critical patent/JP6412888B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Telephonic Communication Services (AREA)

Description

著作権表示:
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
発明の分野:
本発明は、概して、ミドルウェアなどのコンピュータシステムおよびソフトウェアに関し、特に、ミドルウェアマシン環境においてキューをサポートするためのシステムおよび方法に関する。
背景:
どのような大きな組織でも、その中では、長年を経て、さまざまな異なるコンピュータハードウェア、オペレーティングシステム、およびアプリケーションソフトウェアを含むITインフラストラクチャが無秩序に拡大していることが多い。このようなインフラストラクチャの個々のコンポーネント自体は巧みに設計され適切に維持管理されているかもしれないが、このようなコンポーネントを相互に接続、または、リソースを共有しようとすると、それは困難な管理タスクであることが多い。近年、組織の関心は、仮想化およびストレージの集中化といった技術に向けられるようになっており、さらに近年では、共有インフラストラクチャの基礎を提供できるクラウドコンピューティングに向けられている。しかしながら、このような環境に特に適したオールインワンのプラットフォームはほとんどない。これらが、本発明の実施形態が取組もうとしている一般的な分野である。
概要:
プライオリティキューにおける協働的同時並行性(cooperative concurrency)をサポートするためのシステムおよび方法が提供される。プライオリティキューは、カレンダーリングおよび高速レーンを含んでおり、プライオリティキューにおける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 、およびグリッドリンク(GridLink)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接続、遅延デシリアライゼーション、およびグリッドリンクデータソースなどの特徴180を提供することにより、共有されるインフラストラクチャの基礎を提供するとともにこのインフラストラクチャ内での性能を改善することができる。
プライオリティキュー
本発明のさまざまな実施形態に従うと、コンカレントシステムは、適切なサービスレベルアグリーメント(SLA:service level agreement)をサービスに提供するために、プライオリティキューを用いて、受信した要求に優先順位を付けることができる。
図3は、発明のさまざまな実施形態に従った、ミドルウェアマシン環境において要求を処理するためのプライオリティキューを用いる例を示す。図3に示されるように、1つ以上のスレッド、たとえばデシリアライズスレッドA311〜B312は、1つ以上の要求320を含む受信ネットワークトラフィック310をデシリアライズすることができる。デシリアライズスレッドA311〜B312は、たとえばadd()メソッドを用いて、プライオリティキュー301に要求320を配置することができる。次いで、複数のワーカースレッド、たとえば、ワーカースレッドA321〜C323がプライオリティキュー301に同時にアクセスすることができ、たとえばdelete_min()メソッドを用いて、要求320を主張することができる。
プライオリティキュー301は、競合者間のインタラクションがシステム全体のスループットの低下をもたらすことのないように、要求の厳しい同時並行性基準を満たすよう設計することができる。加えて、プライオリティキュー301は、一定のメモリフットプリントを有するように実現することができ、このため、JVMは、一定サイズのプリミティブ配列上でその動作をより最適化することができ、実質的なキャッシュ効率を達成することができるようになる。
本発明のさまざまな実施形態に従うと、プライオリティキュー301は、カレンダーキューに基づいて、たとえばWebLogicアプリケーションサーバにおいて提供されるカレンダーキューに基づいて、実現することができる。カレンダーキューは、複数のバケットを備えたカレンダーを含み得る。複数のバケットの各々は、特定の短時間内に収まるイベントを格納することができる。たとえば、複数のバケットは、目標サービス時間を現在時間と比較することによって、ソートおよび配置することができる。時間差が第1のバイト内であれば、要求は、第1の256個のバケットのうち1つのバケットに格納することができる。特定のバケットは、要求を実行するための目標時間の実際値を用いて選択することができる。さらに、時間差が第2のバイト内であれば、要求は、第2の256個のバケットのうち1つのバケットに格納することができる。
コンシューマが、たとえばワーカースレッドA321〜C323のうちの1つを介して、最早の要求を実行するように構成された次の要求を除去しようとする場合、システムは、空ではない第1のバケットを探してカレンダーをスキャンすることができる。このバケットが第1の256個のバケットのうちの1つでない場合、カレンダーキューは、ループ・アンド・プロモート法(loop and promote method)を用いて、第1の256個のバケットに向かって「1レベル低い」バケットに要求を移動させることができる。最終的に、いくつかの要求を第1の256個のバケットにおける1つ以上のバケットへとプロモートすることができ、コンシューマは要求を主張し、これに応じて次の段階に進むことができる。
上述のプロモーションプロセスは、システムの全体的な性能に影響を及ぼす可能性のある対数コストを含み得る。加えて、カレンダーキューについて他の設計があってもよく、その性能は、「0(1)add, O(logN) delete_min」をとるかまたは「O(logN)add, 0(1)delete_min」をとるかの選択に制限される可能性がある。
図4は、ミドルウェアマシン環境においてノンブロッキングキューをサポートする例を示す。図4に示されるように、複数のコンシューマ、たとえばコンシューマA411〜B412が、ミドルウェアマシン環境400におけるプライオリティキュー401に同時にアクセスすることができる。プライオリティキュー401は、ノンブロッキングキューとして実現することができ、要求マネージャ402を介してアクセスすることができる。
スレッドプール403を管理する要求マネージャ402は、異なるスレッドを異なる要求に関連付けるための別個のロジックを有し得る。たとえば、要求マネージャ402は、ロック構造を用いて、すべてのスレッドプールメソッドコールを、同期されたステートメントでプライオリティキュー401、または同期されたブロック410、にラップすることによって、シリアライズすることができる。
このように、プライオリティキュー401上での動作はシングルスレッド設計によって制限される可能性がある。なぜなら、シリアライズがノンブロッキングプライオリティキュー401の外部でなされるからである。
コンカレントプライオリティキュー
図5は、発明のさまざまな実施形態に従ったコンカレントプライオリティキューをサポートする例を示す。図5に示されるように、複数のコンシューマ、たとえばコンシューマA511〜C513は、ミドルウェアマシン環境500におけるコンカレントプライオリティキュー501に同時にアクセスすることができる。
コンカレントプライオリティキュー501は、受信した要求に優先順位を付けて格納することのできるカレンダー、たとえばカレンダーリング502を含み得る。サイズが制限されているカレンダーリング502は、予め構成された制限時間内の目標応答時間を有する要求を格納するように構成することができる。カレンダーリング502内において、要求は、要求のサービス品質(QoS:Quality of Service)、たとえば目標サービス時間、と合致する位置にあるリングバッファに直接格納または配置することができる。
このため、システムは、カレンダーキューのメモリフットプリントを変更することなく、要求のためのルックアップをはるかに安価に行うことができる。さらに、システムは、O(1)動作としてカレンダーキューにエレメントを追加し続ける一方で、カレンダーキューのdelete_min動作についての対数の複雑さを緩和して、ほぼ線形のキャッシュ効率サーチにすることができる。
加えて、予め構成された制限時間よりも長い目標サービス時間を含む要求は、アウトライアのリスト、たとえばアウトライアリスト504、に追加することができる。これらの要求のスケジューリングがタイムクリティカルでない可能性があるので、システムは、ソート済みのアウトライアのリスト504に対してよりゆっくりと追加することを許可する。さらに、コンカレントプライオリティキュー501は、シーケンサ、たとえばoutliers_seqを用いて、アウトライアリストのための先入れ先出し(FIFO:first-in-first-out)順序を同じQoSで実施することができる。
たとえば、カレンダーリング502は、2秒未満の目標応答時間(またはQoS)を有する要求を格納するように構成することができる。なぜなら、2秒を超えるQoSを有する要求はまれにしかないと考えられ得るからである。さらに、2秒未満のQoSを有する要求は、QoSと合致するカレンダーリング502に配置することができる一方で、2秒を超えるQoSを有する要求はアウトライアのリスト504に配置することができる。
図4に示されるカレンダーキューとは異なり、要求マネージャ510は、同期されたステートメントで、すべてのコールをカレンダーキュー501に入れる必要はない。同期されたブロック506は、継続渡し507をサポートするものであり、コンカレントプライオリティキュー501の範囲内で実現することができる。コンシューマ、たとえばコンシューマA511〜C513は、コンカレントプライオリティキュー501の外部からスレッドプール520にアクセスする必要がないかもしれない。
継続渡しを用いると、システムは、カレンダーキュー501をノンブロッキングからブロッキングに変換することができる。継続渡し507は、コンシューマA511〜C513が、スレッドプール520における活動停止中のワーカーまたはスレッド530を管理することを可能にし、これにより、スレッドプール520において待機している可能性のあるスレッド530を再使用できるようにする。
加えて、コンカレントプライオリティキュー501は、コンカレントプライオリティキュー501が競合を検出することを可能にし、高速レーン505を用いて協働的同時並行性をサポートすることができるシーケンサ503を含み得る。このため、コンカレントプライオリティキュー501は、競合についての情報を公開するのにロックを必要とすることなく、競合を認識して適切に処理することができる。
コンカレントプライオリティキューに対する要求の追加
図6は、発明のさまざまな実施形態に従ったコンカレントプライオリティキューに要求を追加する例を示す。図6に示されるように、ミドルウェアマシン環境600におけるプライオリティキュー601はカレンダーリング602およびアウトライアリスト603を含み得る。プライオリティキュー601は、プライオリティキュー601の外部からアクセスすることのできないスレッドプール610に関連付けることができる。
発呼者、たとえば、デシリアライザA611は、受信した要求、たとえば要求A631、をプライオリティキュー601に追加することができる。たとえば、受信した要求が予め構成された制限時間内のQoSを有する場合、デシリアライザA611は要求A631をカレンダーリング602に直接追加することができる。そうでない場合、要求に関連付けられるQoSが予め構成された制限時間を越えるときには、発呼者は、受信した要求B632をアウトライアリスト603に追加することができる。
加えてプライオリティキュー601が空である場合、プライオリティキュー601は、(待機者リストまたは待機者プールとも称される)スレッドプール610におけるスレッド、たとえばスレッドA621、を起動させることができる。次いで、コンシューマ、たとえばスレッドA621に関連付けられるコンシューマA612は、カレンダーリング602に要求A631が追加されたことを認識することができ、引き続き、要求A631をタイムリーに消費することができる。
発明の一実施形態に従うと、コンカレントプライオリティキューは、継続渡し特徴を用いて、発呼者がスレッドプール610におけるスレッドを管理することを可能にし得る。
コンカレントプライオリティキューに対する要求の主張
図7は、発明のさまざまな実施形態に従った、コンカレントプライオリティキューに対して要求を主張する例を示す。図7に示されるように、コンシューマ、たとえばコンシューマA711は、ミドルウェアマシン環境700においてコンカレントプライオリティキュー701に対して1つ以上の要求、たとえば要求A731を主張することができる。コンカレントプライオリティキュー701はカレンダーリング702、アウトライアリスト703および高速レーン704を含み得る。
ビットマップ705は、カレンダーリング702と同期して作成および更新することができる。コンシューマA711がカレンダーリング702に対して要求A731を主張しようとする場合、カレンダーリング702の効率を向上させるために、ビットマップ705を用いてカレンダーリング702をスキャンすることができる。たとえば、カレンダーリング702におけるリファレンスを調べる代わりに、単純なビットマップ上でのビットスキャン動作を用いて、カレンダーリング702における多数のエントリ(たとえば、64のエントリ)を分析することができる。
さらに、カレンダーリング702が空である場合、コンカレントプライオリティキュー701は、1つ以上の要求、たとえば要求B732を、アウトライアリスト703からカレンダーリング702へとプロモートすることができる。
加えて、作業負荷が集中している場合、複数の要求がカレンダーリング702における同じカレンダーエントリまたはバケットに分類され得る可能性が十分にある。盗まれた要求のリスト706は、カレンダーリング702におけるこのような要求を主張することによってもたらされる競合を減らすために用いることができる。さらに、盗まれた要求のリスト706は、より多くの要求が同じカレンダーエントリにある場合、より長くなる可能性がある。このため、全体としてカレンダーリング702におけるシングルエントリに収まる要求のリストを当該盗まれた要求のリスト706に入れることにより、コンシューマは、カレンダーリング702へのアクセスをそれほど頻繁にシリアライズしなくてもよくなる。
本発明のさまざまな実施形態に従うと、コンカレントプライオリティキュー702は、協働的同時並行性をサポートするために用いることができる高速レーン704を維持することができる。
協働的同時並行性
図8は、発明のさまざまな実施形態に従った、プライオリティキューにおいて協働的同時並行性をサポートする例を示す。図8に示されるように、ミドルウェアマシン環境800は、複数のコンシューマ、たとえばコンシューマA811〜B812によって同時にアクセスすることができるプライオリティキュー801を含み得る。プライオリティキュー801はカレンダーリング802および高速レーン803を含み得る。プライオリティキュー801はまた、プライオリティキュー801の外部からはアクセスできない可能性があるスレッドプール810を用いることもできる。ここで、コンシューマA811〜B812の各々は、スレッドプール810におけるスレッド、たとえばスレッドA821〜B822に関係している可能性がある。
シーケンサ804は、プライオリティキュー801について競合者、たとえばコンシューマB812、を検出するために犠牲者、たとえばコンシューマA811によって用いられてもよい。
本発明のさまざまな実施形態に従うと、プライオリティキュー801は、協働的同時並行性ストラテジーを用いることによって、コンシューマA811〜B812間の競合を減らすことができる。
図8に示されるように、競合を検出した後、犠牲者、たとえばコンシューマA811は要求、たとえば要求A831を高速レーン803(要求A′833として)に配置することができ、引き続き、カレンダーリング802における別の要求、たとえば要求B832を、それが有効であれば、主張し得る。一方で、コンシューマA811は、スレッドプール810における競合スレッド、たとえばスレッドB822を解放することができ、これにより、競合者、たとえばコンシューマB812が最終的に高速レーン803に対して要求A′833を主張することを可能にする。
さらに、競合者が複数いる場合、犠牲者811は、解放され得る最大数の競合者を制御することによって高速レーン803における要求のアクセス可能性を制御することができる。これは、競合者がインデックス、fastLane_wに等しいfastLane_r(fastLane_r = fastLane_w)、を設定することができる場合にのみ、位置fastLane_wにあるカレンダーリング802に対して競合者が要求を主張することができるからである。各々の競合者は、fastLane_rを1つずつしか増やすことができないので、競合者は、解放される競合者の数だけしかfastLane_rの値を増やすことができない。
協働的同時並行性を用いると、コンカレントプライオリティキュー801は、たとえば、さまざまな競合者のための平均的な待ち時間を短縮して、待ち時間を向上させることができる。加えて、協働的同時並行性は、コンカレントプライオリティキュー801のCPUキャッシュ位置を改善させることができる。なぜなら、1つの犠牲コンシューマがより多くの作業をシングルスレッドで行うことができるからである。
図9は、発明の実施形態に従った、プライオリティキューに対して要求を主張するための例示的なフローチャートを示す。図9に示されるように、ステップ901において、コンシューマまたは要求マネージャなどの発呼者が、まず、高速レーンが空であるかどうかをチェックすることができる。
ステップ902において、高速レーンが空でない場合、コンシューマは高速レーンに対して要求を主張するよう試みることができる。高速レーンに対する要求の主張が行なわれない場合、要求の主張に成功した別のコンシューマが存在していることとなる。最終的に、コンシューマは要求を主張することができるかまたは高速レーンが空であることを確認することができ、この場合、delete_minにはこれ以上コンシューマは存在していない。
ステップ903において、高速レーンが空である場合、発呼者は、カレンダーキューに対して要求を主張するためのループに進むことができる。カレンダーキューに対して要求を主張するためのループは複数の繰返しを含み得る。各々の繰返しの初めに、発呼者は、第1の要求のリストをカレンダー配列に配置しようとすることができる。また、発呼者は、リストから第1の要求を選ぶよう試みることができる。
ステップ910において、発呼者は、たとえば、シーケンサにおけるリーダのチケットがシーケンサにおける最新の既知の自由値よりも進められているかどうかをチェックすることによって、競合があるかどうかをチェックすることができる。
次いで、ステップ913において、発呼者が競合を検出しなければ、コンシューマは引き続きカレンダーキューに対する要求を主張することができる。
そうでない場合、ステップ911において、発呼者が競合を検出した場合、コンシューマは、要求を協働的に高速レーンに配置することができ、1人の競合者を解放することができる。このコンシューマがdelete_min内にある限り、解放された競合者は、最終的に高速レーンに対して要求を主張することができる。
さらに、ステップ912において、要求が競合者に与えられるので、コンシューマは、カレンダーリングにおける次の要求を主張するよう試みる。これにより、コンシューマは、ループにおける別の繰返しの初めに相当するステップ910に到達する。
最終的に、キューが空になるか、または、競合者が検出されないか、または、高速レーンが一杯であるとみなされる。高速レーンが一杯であるとみなされる場合、コンシューマはループを破壊し、キューのサイズを更新し、1人以上の競合者を解放することができ、これら1人以上の競合者は、最終的に、高速レーンの外部で要求を主張するためにループに入ることが可能となるだろう。
図10は、発明の実施形態に従った、プライオリティキューにおける協働的同時並行性をサポートするための例示的なフローチャートを示す。図10に示されるように、ステップ1001において、システムは、プライオリティキューにおける1つ以上の要求を主張するよう競合している1つ以上のスレッドを検出することができる。次いで、ステップ1002において、犠牲スレッドはプライオリティキューにおける高速レーンに要求を配置することができる。さらに、ステップ1003において、犠牲スレッドは、スレッドプールにおいてブロックされている上記競合スレッドを解放することができる。この場合、解放された競合スレッドは、引き続き、高速レーンにおける要求を消費する。
いくつかの実施形態においては、上述の方法のうちの1つを実施するためのコンピュータプログラムが提供される。発明の実施形態に従うと、コンピュータプログラムは、システムに、プライオリティキューにおける1つ以上の要求を主張するよう競合する1つ以上のスレッドを検出するステップと;犠牲スレッドを介してプライオリティキューにおける高速レーンに要求を配置するステップと;犠牲スレッドを介して競合スレッドを解放するステップとを実行させる。解放された競合スレッドは、引き続き、高速レーンにおける要求を消費する。
本発明は、本開示の教示に従いプログラムされた、1つ以上のプロセッサ、メモリ、および/またはコンピュータ読取可能な記録媒体を含む、従来の汎用もしくは専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを1つ以上用いて、適宜実現し得る。適切なソフトウェアコーディングは、熟練したプログラマが本開示の教示に基づいて容易に準備できる。これはソフトウェア技術における当業者には明らかであろう。
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された記録媒体または(1つまたは複数の)コンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/またはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
本発明に関するこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者が本発明のさまざまな実施形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は、添付の特許請求の範囲およびその均等物によって定められることが意図されている。

Claims (11)

  1. プライオリティキューにおける協働的同時並行性をサポートするための方法であって、前記プライオリティキューは高速レーンを含み、
    処理対象となる前記プライオリティキューにおける1つ以上の要求を求めて競合する1つ以上のスレッドを検出するステップと、
    前記競合する1つ以上のスレッドのうち、処理対象となる要求を獲得しない犠牲スレッドが、前記高速レーンに前記要求を配置するステップと、
    前記犠牲スレッドが、残りの前記競合するスレッドを解放するステップとを含み、前記解放されたスレッドは、引き続き、前記高速レーンにおける前記要求を消費する、方法。
  2. 前記プライオリティキューにカレンダーリングを含めるステップをさらに含み、前記カレンダーリングは、予め構成されたサービス品質(QoS)未満の目標応答時間を有するさまざまな要求を格納するよう動作する、請求項1に記載の方法。
  3. 前記予め構成されたサービス品質(QoS)を約2秒となるように規定するステップをさらに含む、請求項2に記載の方法。
  4. より高速にスキャンするために前記カレンダーリングと同期して更新されるビットマップを用いるステップをさらに含む、請求項2または3に記載の方法。
  5. アウトライアリストを前記カレンダーリングに関連付けるステップをさらに含み、前記アウトライアリストは、前記予め構成されたサービス品質(QoS)よりも長い目標応答時間を有する要求を格納するよう動作する、請求項2から4のいずれかに記載の方法。
  6. 前記カレンダーリングにおいて要求を見つけることができない場合、前記アウトライアリストにおける要求を前記カレンダーリングへとプロモートするステップをさらに含む、請求項5に記載の方法。
  7. シーケンサを用いて、1つ以上の競合スレッドを順序付けるステップをさらに含む、請求項1から6のいずれかに記載の方法。
  8. 引き続き、前記犠牲スレッドを介して、前記カレンダーリングにおける別の要求を主張するステップをさらに含む、請求項2〜6のいずれかに記載の方法。
  9. 前記プライオリティキューが空である場合にスレッドプールのスレッドを利用可能にするステップをさらに含む、請求項1から8のいずれかに記載の方法。
  10. 機械読取可能な命令を含むコンピュータプログラムであって、前記機械読取可能な命令は、実行されると、システムに、請求項1から9のいずれかに記載の方法を実行させる、コンピュータプログラム。
  11. プライオリティキューにおける協働的同時並行性をサポートするためのシステムであって、前記プライオリティキューは高速レーンを含み、
    1つ以上のマイクロプロセッサと、
    前記1つ以上のマイクロプロセッサ上に延びるプライオリティキューとを含み、前記プライオリティキューは、
    処理対象となる前記プライオリティキューにおける1つ以上の要求を求めて競合する1つ以上のスレッドを検出するステップと、
    前記競合する1つ以上のスレッドのうち、処理対象となる要求を獲得しない犠牲スレッドが、前記高速レーンに要求を配置するステップと、
    前記犠牲スレッドが、残りの前記競合するスレッドを解放するステップとを実行するよう動作し、前記解放されたスレッドは引き続き前記高速レーンにおける前記要求を消費する、システム。
JP2015560168A 2013-02-28 2013-10-28 ミドルウェアマシン環境において協働的同時並行性をサポートするためのシステムおよび方法 Active JP6412888B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/781,475 US9378045B2 (en) 2013-02-28 2013-02-28 System and method for supporting cooperative concurrency in a middleware machine environment
US13/781,475 2013-02-28
PCT/US2013/067106 WO2014133594A1 (en) 2013-02-28 2013-10-28 System and method for supporting cooperative concurrency in a middleware machine environment

Publications (3)

Publication Number Publication Date
JP2016511904A JP2016511904A (ja) 2016-04-21
JP2016511904A5 JP2016511904A5 (ja) 2016-12-15
JP6412888B2 true JP6412888B2 (ja) 2018-10-24

Family

ID=49551815

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015560168A Active JP6412888B2 (ja) 2013-02-28 2013-10-28 ミドルウェアマシン環境において協働的同時並行性をサポートするためのシステムおよび方法

Country Status (6)

Country Link
US (1) US9378045B2 (ja)
EP (1) EP2962199B1 (ja)
JP (1) JP6412888B2 (ja)
KR (1) KR102050524B1 (ja)
CN (1) CN104798044B (ja)
WO (1) WO2014133594A1 (ja)

Family Cites Families (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109384A (en) 1988-11-02 1992-04-28 Tseung Lawrence C N Guaranteed reliable broadcast network
JPH06282447A (ja) * 1993-03-29 1994-10-07 Mitsubishi Electric Corp 待ち行列管理方式
JP3157113B2 (ja) * 1996-10-25 2001-04-16 沖電気工業株式会社 トラヒックシェイパー装置
US6571274B1 (en) 1998-11-05 2003-05-27 Beas Systems, Inc. Clustered enterprise Java™ in a secure distributed processing system
US6449614B1 (en) * 1999-03-25 2002-09-10 International Business Machines Corporation Interface system and method for asynchronously updating a share resource with locking facility
US6874144B1 (en) * 1999-04-05 2005-03-29 International Business Machines Corporation System, method, and program for implementing priority inheritance in an operating system
US6701367B1 (en) 1999-09-24 2004-03-02 Sun Microsystems, Inc. Mechanism for enabling customized session managers to interact with a network server
CA2302959A1 (en) 2000-03-23 2001-09-23 Ibm Canada Limited-Ibm Canada Limitee Priority resource allocation in programming environments
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
US7209921B2 (en) 2000-09-01 2007-04-24 Op40, Inc. Method and system for deploying an asset over a multi-tiered network
US20020174136A1 (en) 2000-12-14 2002-11-21 Ducan Cameron Method and system for high performance transaction processing using a relational database management system
US6895585B2 (en) 2001-03-30 2005-05-17 Hewlett-Packard Development Company, L.P. Method of mixed workload high performance scheduling
US7409420B2 (en) 2001-07-16 2008-08-05 Bea Systems, Inc. Method and apparatus for session replication and failover
US6993642B2 (en) * 2001-07-24 2006-01-31 Microsoft Corporation Method and system for creating and employing an operating system having selected functionality
US7136392B2 (en) 2001-08-31 2006-11-14 Conexant Systems, Inc. System and method for ordering data messages having differing levels of priority for transmission over a shared communication channel
US6895590B2 (en) 2001-09-26 2005-05-17 Intel Corporation Method and system enabling both legacy and new applications to access an InfiniBand fabric via a socket API
US7143227B2 (en) 2003-02-18 2006-11-28 Dot Hill Systems Corporation Broadcast bridge apparatus for transferring data to redundant memory subsystems in a storage controller
US7046676B2 (en) * 2001-11-01 2006-05-16 International Business Machines Corporation QoS scheduler and method for implementing quality of service with cached status array
US20030110232A1 (en) 2001-12-11 2003-06-12 International Business Machines Corporation Distributing messages between local queues representative of a common shared queue
US7403996B2 (en) 2002-02-21 2008-07-22 Bea Systems, Inc. Systems and methods for migratable services
US7350186B2 (en) * 2003-03-10 2008-03-25 International Business Machines Corporation Methods and apparatus for managing computing deployment in presence of variable workload
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
US7953860B2 (en) 2003-08-14 2011-05-31 Oracle International Corporation Fast reorganization of connections in response to an event in a clustered computing system
US7366109B2 (en) 2003-10-29 2008-04-29 Nortel Networks Limited Virtual private networks within a packet network having a mesh topology
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
US7219198B2 (en) 2004-06-22 2007-05-15 International Business Machines Corporation Facilitating communication within shared memory environments using lock-free queues
US7447861B2 (en) 2004-07-14 2008-11-04 International Business Machines Corporation Integrated multi-function object locks
WO2007014186A2 (en) 2005-07-22 2007-02-01 The Thomson Corporation Systems, methods, and software for online courses
EP1699257B1 (en) 2005-03-04 2007-09-12 Alcatel Lucent Switch for integrated telecommunication networks.
EP1645968B1 (en) * 2004-10-11 2008-03-19 Texas Instruments Incorporated Multi-threaded DMA
US7685391B1 (en) * 2004-10-12 2010-03-23 Sun Microsystems, Inc. Kernel/user stack relocation during system uptime
JP4189374B2 (ja) * 2004-11-19 2008-12-03 富士通株式会社 処理システム
US7562138B2 (en) 2004-12-28 2009-07-14 Sap Shared memory based monitoring for application servers
US20060176884A1 (en) 2005-02-04 2006-08-10 Sytex, Inc. Sytems, Methods And Devices For Remotely Administering A Target Device
US7409709B2 (en) 2005-02-14 2008-08-05 Etsec, Inc. Systems and methods for automatically reconfiguring a network device
US7603502B2 (en) * 2005-04-12 2009-10-13 Microsoft Corporation Resource accessing with locking
EP2582158B1 (en) 2005-06-05 2016-08-10 Starkey Laboratories, Inc. Communication system for wireless audio devices
US7480823B2 (en) 2005-06-24 2009-01-20 Sun Microsystems, Inc. In-memory replication of timing logic for use in failover within application server node clusters
JP2007034555A (ja) * 2005-07-26 2007-02-08 Fujifilm Corp 動的メモリ管理方法、メモリ管理装置、電子機器及び撮像装置
US8166547B2 (en) 2005-09-06 2012-04-24 Fortinet, Inc. Method, apparatus, signals, and medium for managing a transfer of data in a data network
US8015256B2 (en) 2005-11-23 2011-09-06 Medicalis Corp. Method and apparatus for parallel sequencing of messages between disparate information systems
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 データベース接続管理方法及び計算機システム
US7685131B2 (en) 2006-02-28 2010-03-23 International Business Machines Corporation Web services database cluster architecture
US8131860B1 (en) 2006-03-30 2012-03-06 Emc Corporation Serialization and deserialization
WO2007113539A1 (en) 2006-03-31 2007-10-11 British Telecommunications Public Limited Company Interactive development tool and debugger for web services
US20070263650A1 (en) 2006-05-09 2007-11-15 Srivatsa Sivan Subramania Method for prioritizing web service requests
JP2007329617A (ja) * 2006-06-07 2007-12-20 Nippon Telegr & Teleph Corp <Ntt> 通信制御処理実行方法およびシステム、ならびにそのプログラム
US7371014B2 (en) 2006-08-21 2008-05-13 Intel Corporation Monolithic active optical cable assembly for data device applications and various connector types
US7876677B2 (en) 2007-05-22 2011-01-25 Apple Inc. Transmission control protocol queue sorting
US7991904B2 (en) 2007-07-10 2011-08-02 Bytemobile, Inc. Adaptive bitrate management for streaming media over packet networks
US8391295B2 (en) 2007-07-31 2013-03-05 Oracle International Corporation Temporal affinity-based routing of workloads
US7809925B2 (en) 2007-12-07 2010-10-05 International Business Machines Corporation Processing unit incorporating vectorizable execution unit
US20090182642A1 (en) 2008-01-14 2009-07-16 Neelakantan Sundaresan Methods and systems to recommend an item
US8306951B2 (en) 2009-09-18 2012-11-06 Oracle International Corporation Automated integrated high availability of the in-memory database cache and the backend enterprise database
US8473594B2 (en) 2008-05-02 2013-06-25 Skytap Multitenant hosted virtual machine infrastructure
US8255914B1 (en) * 2008-09-25 2012-08-28 Emc Corporation Information retrieval techniques involving the use of prioritized object requests
US9262357B2 (en) 2008-09-29 2016-02-16 International Business Machines Corporation Associating process priority with I/O queuing
US8347302B1 (en) 2008-10-09 2013-01-01 Amazon Technologies, Inc. System-aware resource scheduling
US20100100889A1 (en) 2008-10-16 2010-04-22 International Business Machines Corporation Accelerating mutual exclusion locking function and condition signaling while maintaining priority wait queues
US9230002B2 (en) 2009-01-30 2016-01-05 Oracle International Corporation High performant information sharing and replication for single-publisher and multiple-subscriber configuration
US8612930B2 (en) 2009-01-30 2013-12-17 Oracle America, Inc. Methods and apparatus for dynamic class reloading and versioning
US7986706B2 (en) 2009-04-29 2011-07-26 Telefonaktiebolaget Lm Ericsson Hierarchical pipelined distributed scheduling traffic manager
US8539486B2 (en) * 2009-07-17 2013-09-17 International Business Machines Corporation Transactional block conflict resolution based on the determination of executing threads in parallel or in serial mode
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
US8130776B1 (en) 2009-08-28 2012-03-06 Massachusetts Institute Of Technology Method and apparatus providing network coding based flow control
EP2293524A1 (en) 2009-09-07 2011-03-09 Nxp B.V. Set-up of media stream transmission and server and client for media stream transmission
US8811417B2 (en) 2009-11-15 2014-08-19 Mellanox Technologies Ltd. Cross-channel network operation offloading for collective operations
US8972994B2 (en) 2009-12-23 2015-03-03 Intel Corporation Method and apparatus to bypass object lock by speculative execution of generated bypass code shell based on bypass failure threshold in managed runtime environment
CN101739293B (zh) * 2009-12-24 2012-09-26 航天恒星科技有限公司 一种基于多线程的卫星数据产品生产任务并行调度方法
IT1397440B1 (it) 2009-12-30 2013-01-10 St Microelectronics Srl Procedimento e sistemi per la distribuzione di contenuti mediali e relativo prodotto informatico
US8549538B2 (en) 2010-03-18 2013-10-01 Microsoft Corporation Coordinating communication medium state for subtasks
US8627317B2 (en) 2010-03-25 2014-01-07 International Business Machines Corporation Automatic identification of bottlenecks using rule-based expert knowledge
JP5553685B2 (ja) * 2010-05-24 2014-07-16 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
JP5408353B2 (ja) 2010-07-13 2014-02-05 富士通株式会社 マルチスレッド処理装置,マルチスレッド処理システム,マルチスレッド処理プログラム,及びマルチスレッド処理方法
US9185054B2 (en) 2010-09-15 2015-11-10 Oracle International Corporation System and method for providing zero buffer copying in a middleware machine environment
US8756329B2 (en) 2010-09-15 2014-06-17 Oracle International Corporation System and method for parallel multiplexing between servers in a cluster
US20120158684A1 (en) 2010-12-21 2012-06-21 Lsi Corporation Performance enhanced synchronization mechanism with intensity-oriented reader api
TW201237632A (en) 2010-12-21 2012-09-16 Ibm Buffer management scheme for a network processor
US8504691B1 (en) * 2010-12-29 2013-08-06 Amazon Technologies, Inc. System and method for allocating resources for heterogeneous service requests
US8918791B1 (en) 2011-03-10 2014-12-23 Applied Micro Circuits Corporation Method and system for queuing a request by a processor to access a shared resource and granting access in accordance with an embedded lock ID
US8863136B2 (en) * 2011-05-19 2014-10-14 International Business Machines Corporation Lock control in multiple processor systems
JP5885481B2 (ja) 2011-12-01 2016-03-15 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
US9219765B2 (en) 2012-05-10 2015-12-22 International Business Machines Corporation End user QoS selection
US8930584B2 (en) * 2012-08-09 2015-01-06 Oracle International Corporation System and method for providing a linearizable request manager
CN102902512B (zh) * 2012-08-31 2015-12-16 浪潮电子信息产业股份有限公司 一种基于多线程编程及消息队列的多线程并行处理方法

Also Published As

Publication number Publication date
KR102050524B1 (ko) 2019-11-29
WO2014133594A1 (en) 2014-09-04
JP2016511904A (ja) 2016-04-21
EP2962199A1 (en) 2016-01-06
CN104798044A (zh) 2015-07-22
CN104798044B (zh) 2018-07-31
KR20150122117A (ko) 2015-10-30
US9378045B2 (en) 2016-06-28
EP2962199B1 (en) 2020-07-15
US20140245312A1 (en) 2014-08-28

Similar Documents

Publication Publication Date Title
JP6682668B2 (ja) コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法
WO2017133623A1 (zh) 一种数据流处理方法、装置和系统
US8051227B1 (en) Programmable queue structures for multiprocessors
US10095562B2 (en) System and method for transforming a queue from non-blocking to blocking
WO2018176998A1 (zh) 数据存储方法及装置
US10331500B2 (en) Managing fairness for lock and unlock operations using operation prioritization
JP6088528B2 (ja) トランザクションミドルウェアマシン環境においてシングルポイントボトルネックを防止するためのシステムおよび方法
US10445096B2 (en) Managing lock and unlock operations using traffic prioritization
JP6283376B2 (ja) クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法
JP6412888B2 (ja) ミドルウェアマシン環境において協働的同時並行性をサポートするためのシステムおよび方法
JP6883521B2 (ja) トランザクション処理環境においてmssq通知を提供するためのシステムおよび方法
US8688880B2 (en) Centralized serialization of requests in a multiprocessor system
Mahmud An adaptive load sensing priority assignment protocol for distributed real-time database systems.

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161026

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161026

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170831

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180830

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181001

R150 Certificate of patent or registration of utility model

Ref document number: 6412888

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