JP2019071108A - コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法 - Google Patents

コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法 Download PDF

Info

Publication number
JP2019071108A
JP2019071108A JP2019001317A JP2019001317A JP2019071108A JP 2019071108 A JP2019071108 A JP 2019071108A JP 2019001317 A JP2019001317 A JP 2019001317A JP 2019001317 A JP2019001317 A JP 2019001317A JP 2019071108 A JP2019071108 A JP 2019071108A
Authority
JP
Japan
Prior art keywords
priority queue
sequencer
requests
threads
ticket
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
JP2019001317A
Other languages
English (en)
Other versions
JP6682668B2 (ja
Inventor
オテンコ,オレクサンドル
Otenko Oleksandr
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.)
Oracle International Corp
Original Assignee
Oracle International 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 Oracle International Corp filed Critical Oracle International Corp
Publication of JP2019071108A publication Critical patent/JP2019071108A/ja
Application granted granted Critical
Publication of JP6682668B2 publication Critical patent/JP6682668B2/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
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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
    • 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Telephonic Communication Services (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】システムおよび方法はコンカレントプライオリティキューをサポートする。【解決手段】コンカレントプライオリティキューは、複数のスレッドがプライオリティキューとインタラクトすることを可能にする。プライオリティキューは、シーケンサを用いて、プライオリティキューにおける1つ以上の要求を求めて競合する複数のスレッドを検出して順序付けることができる。さらに、プライオリティキューは複数のスレッド間における競合を減少させるよう動作する。【選択図】図11

Description

著作権表示:
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
発明の分野:
本発明は、概して、ミドルウェアなどのコンピュータシステムおよびソフトウェアに関し、特に、ミドルウェアマシン環境においてキューをサポートするためのシステムおよび方法に関する。
背景:
どのような大きな組織でも、その中では、長年を経て、さまざまな異なるコンピュータハードウェア、オペレーティングシステム、およびアプリケーションソフトウェアを含むITインフラストラクチャが無秩序に拡大していることが多い。このようなインフラストラクチャの個々のコンポーネント自体は巧みに設計され適切に維持管理されているかもしれないが、このようなコンポーネントを相互に接続、または、リソースを共有しようとすると、それは困難な管理タスクであることが多い。近年、組織の関心は、仮想化およびストレージの集中化といった技術に向けられるようになっており、さらに近年では、共有インフラストラクチャの基礎を提供できるクラウドコンピューティングに向けられている。しかしながら、このような環境に特に適したオールインワンのプラットフォームはほとんどない。これらが、本発明の実施形態が取組もうとしている一般的な分野である。
概要:
コンカレントプライオリティキューをサポートするためのシステムおよび方法を提供する。コンカレントプライオリティキューは、複数のスレッドがプライオリティキューとインタラクトすることを可能にする。プライオリティキューは、シーケンサを用いて、プライオリティキューにおける1つ以上の要求を求めて競合する複数のスレッドを検出して順序付けることができる。さらに、プライオリティキューは複数のスレッド間における競合を減少させるよう動作する。
本発明の他の目的および利点は、添付の図面に照らして読まれると、さまざまな実施形態の以下の詳細な説明から当業者にとって明らかになるであろう。
発明のある実施形態に従ったミドルウェアマシン環境100の例を示す図である。 発明のある実施形態に従ったミドルウェアマシンプラットフォームまたは環境の別の例を示す図である。 発明のさまざまな実施形態に従った、ミドルウェアマシン環境において要求を処理するためにプライオリティキューを用いる例を示す図である。 ミドルウェアマシン環境においてノンブロッキングキューをサポートする例を示す図である。 発明のさまざまな実施形態に従った、コンカレントプライオリティキューをサポートする例を示す図である。 発明のさまざまな実施形態に従った、アウトライアリストのための先入れ先出し(FIFO:first-in-first-out)順序を保証する例を示す図である。 発明の実施形態に従った、コンカレントプライオリティキューにおけるアウトライアリストに複数の要求を追加するための例示的なインタラクティブチャートを示す図である。 発明のさまざまな実施形態に従った、コンカレントプライオリティキューのさまざまな消費者間における競合を検出する例を示す図である。 発明の実施形態に従った、競合が検出される場合における犠牲者と競合者との間のインタラクションを示すための例示的なインタラクティブチャートである。 発明の実施形態に従った、競合が検出されない場合における犠牲者と競合者との間のインタラクションを示すための例示的なインタラクティブチャートである。 発明の実施形態に従った、プライオリティキューにおける協働的同時並行性(cooperative concurrency)をサポートするための例示的なフローチャートを示す図である。
詳細な説明:
ここで、クラスタにおけるワークシェアリングの多重化をサポートすることができるシステムおよび方法を記載する。
図1は、発明のある実施形態に従ったミドルウェアマシン環境100の例を示す。図1に示されるように、各ミドルウェアマシンシステム102は、数個のミドルウェアマシンラックコンポーネント104を含み、ミドルウェアマシンラックコンポーネント104は各々、高性能ミドルウェアマシンハードウェアノード106(たとえば64ビットプロセッサ、高性能大型メモリ、ならびに冗長インフィニバンドおよびイーサネット(登録商標)ネットワーキング)と、ミドルウェアマシンソフトウェア環境108との組合せを含む。その結果は、数日または数カ月ではなく数分で提供することができ、要求に応じて拡大縮小できる、完全なアプリケーションサーバ環境である。ある実施形態に従うと、各ミドルウェアマシンシステムは、満杯の、2分の1の、もしくは4分の1のラックとしてまたはラックコンポーネントからなるその他の構成として準備することができ、数個のミドルウェアマシンシステムを、ここでもインフィニバンドを用いて連結することにより、より大きな環境を作ることができる。各ミドルウェアマシンソフトウェア環境に、数個のアプリケーションサーバインスタンスまたはその他のソフトウエアインスタンスを設けることができる。たとえば、図1に示されるように、アプリケーションサーバインスタンス109が、仮想マシン116と、オペレーティングシステム120と、仮想化層124と、アプリケーションサーバ層128(たとえば、サーブレット(Servlet)132、EJB1
34、およびグリッドリンク(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は、競合についての情報を公開するのにロックを必要とすることなく、競合を認識して適切に処理することができる。
アウトライアリストのためのFIFOの維持
図6は、発明のさまざまな実施形態に従った、アウトライアリストのための先入れ先出し(FIFO)順序を保証する例を示す。図6に示されるように、ミドルウェアマシン環境600におけるプライオリティキュー601は、カレンダーリング602およびアウトライアリスト603を含み得る。
複数の発呼者、たとえば異なるスレッド上のデシリアライザA611〜B612は、プライオリティキュー601に同時にアクセスしようとしてもよい。プライオリティキュー601は、チケット機構に基づいたシーケンサ604を用いて、アウトライアリスト603のための先入れ先出し(FIFO)順序を保証することができる。
たとえば、発呼者、たとえばデシリアライザA611がアウトライアリスト603に要求A621を追加することが可能となる前に、デシリアライザA611は、まず、チケットを要求するメッセージをシーケンサ604に送信することができる。競合がなければ、シーケンサ604は、デシリアライザA611に、チケット、たとえばチケットA631を発行することができる。
さらに、別の発呼者、たとえばデシリアライザB612は、アウトライアリスト603に別の要求、たとえば要求B622を追加しようとしてもよい。シーケンサ604は、デシリアライザB612からチケットについての別の要求を受取ってもよい。このとき、デシリアライザA611がアウトライアリスト603に要求A621を追加しているので、シーケンサ604はデシリアライザB612をブロックすることができる。
デシリアライザA611がアウトライアリスト603に要求A621を追加し終えた後、デシリアライザA611はシーケンサ604を進めさせることができる。次いで、シーケンサ604はデシリアライザB612にチケット、たとえばチケットB632を発行することができ、これにより、デシリアライザB612が要求A621の後にアウトライアリスト603に要求B622を追加することが可能となる。
図7は、発明の実施形態に従った、コンカレントプライオリティキューにおけるアウトライアリストに複数の要求を追加するための例示的なインタラクティブチャートを示す。図7に示されるように、シーケンサ710は、プライオリティキューに同時にアクセスしようとし得る複数の発呼者またはスレッド、たとえばデシリアライザA711〜B722を調整することができる。
ステップ701において、デシリアライザA711は、シーケンサ710からチケットを獲得しようとすることができる。次いで、ステップ702において、シーケンサ710はチケット機構をチェックすることができる。これが成功した場合、プライオリティキューにアクセスしようとしている発呼者は他に存在しないこととなる。そうでない場合、デシリアライザA711は、誰かがそれを解放するまでブロックされてもよい。
次いで、ステップ703において、別の発呼者、すなわちデシリアライザB712は、デシリアライザA711がブロックされている間、アウトライアリストに要求を追加することができる。ステップ704において、デシリアライザBは、シーケンサ710を進めさせようとすることができる。
ステップ705において、シーケンサ710が進むようにとのメッセージを受取った後、シーケンサ710はチケットを作成して、待機しているデシリアライザA711にこのチケットを発行することができる。結果的に、ステップ706において、デシリアライザA711はチケットを受取る。次いで、ステップ707において、デシリアライザA711は、引き続き、別の要求をアウトライアリストに追加することができる。
このように、シーケンサ710を用いると、同期機構またはロック構造を実現しなくても、アウトライアリストのFIFO順序を保存することができる。
さまざまな消費者間における競合の検出および処理
図8は、発明のさまざまな実施形態に従った、コンカレントプライオリティキューの異なる消費者間における競合を検出する例を示す。図8に示されるように、さまざまな消費者、たとえば消費者A811〜B812は、ミドルウェアマシン環境800におけるプライオリティキュー801に同時にアクセスすることができる。プライオリティキュー801はカレンダーリング802、アウトライアリスト803および高速レーン804を含み得る。
各々の消費者は、盗まれた要求のリストを利用して、同時並行性をさらに低下させることができる。たとえば、消費者A811は、消費者A811にとってローカルなリストとして現れる可能性のある盗まれた要求のリスト807を用いることができる。加えて、消費者A811〜B812の各々はシーケンサ805にメッセージを送信して、プライオリ
ティキュー801へのアクセスが許可される前にチケットを要求することができる。
シーケンサ805は、シーケンサ805に対してチケットを要求したリーダ総数の現在のカウントであるリーダカウント806を維持することができる。シーケンサ805は、チケット要求を受取るたびにリーダカウント806を増やすことができる。さらに、このリーダカウント806を用いて競合を検出することができる。
たとえば、消費者A811は、プライオリティキュー801へのアクセスが許可される前に、シーケンサ805からチケット、たとえばチケットA831を得ることができる。次いで、別の消費者B812は、チケット、たとえばチケットB832についての要求をシーケンサ805に送信することができる。シーケンサ805は、消費者A811がその動作を終了するまで、リーダカウント806を増やして、消費者B812をブロックすることができる。
他方で、消費者A811は、シーケンサ805における現在のリーダカウント806(t)が、それが有するチケット番号を上回ったこと(t>チケット番号)を検出した場合、消費者B812から競合を検出することができる。次いで、消費者A811は、高速レーン804に要求を配置し、それが消費者B812によって消費されることを可能にすることによって、競合を減少させることができる。これは協働的同時並行性ストラテジーと称され得る。
こうして、シーケンサ805を用いると、プライオリティキューは、ロック機構または同期機構を必要とすることなく、カレンダーリング802に加えて高速レーン804および盗まれた要求のリスト807に消費者がアクセスすることを可能にすることによって、複数の消費者間における競合を処理するために最適化することができる。
図9は、発明の実施形態に従った、競合が検出される場合における犠牲者と競合者との間のインタラクションを示すための例示的なインタラクティブチャートである。図9に示されるように、シーケンサ920は、コンカレントプライオリティキューのさまざまな消費者間、たとえば犠牲者922と競合者921との間の競合を検出して処理するために用いることができる。
ステップ901において、競合者921は、チケットを待っていることを示すメッセージをシーケンサ920に送信することができる。犠牲者922が現在プライオリティキューにアクセスしているので、ステップ902において、シーケンサ920は競合者921をブロックし、リーダカウント、すなわちリーダ、を増やすことができる。
ステップ903〜905において、犠牲者922は、コンカレントプライオリティキューから要求をピックアップして、現在のリーダについてシーケンサ920をチェックすることができる(ステップ903〜904はまた、非時間的遷移913と称することもできる。これは以降の段落において説明する)。
次いで、ステップ906において、犠牲者922は、獲得したリーダカウント(t)をチケット番号、すなわちそれが保持するチケット番号、と比較することができる。シーケンサ920が既にリーダカウントを増やしているので、犠牲者922は、t>チケット番号であることが判明すると、競合を検出することができる。
その後、ステップ907〜908において、犠牲者922は、当該犠牲者922がステップ909においてリーダシーケンサを進めさせようと試みる前に、高速レーンに要求を配置して、高速レーンにおける要求カウントfastLane_wを更新することができる(ステッ
プ907〜908はまた、非時間的遷移914と称することもできる。これは以降の段落で説明する)。
犠牲者922からメッセージを受取ってリーダシーケンサを進ませた後、ステップ910において、シーケンサ920は、引き続き、競合者921にチケットを発行して、競合者921を解放することができる。
最終的に、ステップ911において、競合者921はチケットを受取ることができ、ステップ912において、競合者921は、引き続き、高速レーンに対して要求を主張することができる。
図10は、発明の実施形態に従った、競合が検出されない場合における犠牲者と競合者との間のインタラクションを示すための例示的なインタラクティブチャートである。図10に示されるように、犠牲者1022は、プライオリティキューにアクセスするコンカレント特性のせいで、必ずしも競合者1021から競合を検出することができるとは限らないだろう。
ステップ1001〜1003において、犠牲者1022はコンカレントプライオリティキューから要求をピックアップすることができ、さらに、現在のリーダカウント、すなわちリーダ、についてシーケンサ1020をチェックすることができる(ステップ1001〜1002は非時間的遷移1011とも称され得る。これは以降の段落で説明する)。
さらに、ステップ1004において、シーケンサ1020は、競合者1021からチケットについての要求を受取り、ステップ1005において、シーケンサ1020は、リーダカウント、すなわちリーダ、を増やすことができる。
ステップ1006において、犠牲者1022は、競合者1021から競合を検出することができないかもしれない。なぜなら、競合者1021が犠牲者1022に現在のリーダを返した後、シーケンサ1020がリーダカウントを増やしたからである。
ステップ1007において、犠牲者1022は要求を主張し、リーダシーケンサを進ませることができ、さらに、ステップ1008において、競合者1021にチケットを発行することができる。
次いで、ステップ1009において、競合者1021はチケットを受取ることができ、ステップ1010において、競合者1021は、引き続き、プライオリティキュー、たとえば高速レーンに対して要求を主張することができる。
図11は、発明の実施形態に従った、プライオリティキューにおける協働的同時並行性をサポートするための例示的なフローチャートを示す。図11に示されるように、ステップ1101において、システムは、複数のスレッドがコンカレントプライオリティキューとインタラクトすることを可能にする。次いで、ステップ1102において、システムは、シーケンサを用いて、プライオリティキューにおける1つ以上の要求を求めて競合する複数のスレッドを検出することができる。さらに、ステップ1103において、システムは、プライオリティキューにおける複数のスレッド間における競合を減少させることができる。
時間的遷移および非時間的遷移
発明の実施形態に従うと、コンカレントプログラミングモデルは、時間的遷移および非時間的遷移などのさまざまな種類の遷移をサポートすることができる。
非時間的遷移ステップは、通常のプログラムオーダーステップを含んでおり、コンパイラおよびプロセッサによって自由に順序を並べ替えることができる。たとえば、図9は非時間的遷移ステップ913および914を含み、図10は非時間的遷移ステップ1011を含む。これらの各々の非時間的遷移ステップ内においては、順序を並べ替えてもプログラムオーダーによって企図されるロジックが破壊されないことを確実にすることができる。
他方で、時間的遷移のために順序を並べ替えることに対しては制限があり、これはプログラムオーダーにも現われる可能性がある。時間的遷移は計画的な設計選択をコンカレントアルゴリズムに含み得る。時間的遷移は、コンパイラおよびプロセッサのバリアとして実現することができる。たとえば、delete_minにおける時間的遷移は、たとえばfastLane_wを読出すいかなるデータロードも、データロードたとえばfastLane_rのロードに先行できないことを示し得る。
時間的遷移および非時間的遷移を用いることにより、状態の変化を一定にするために、発呼者が、コンカレントアルゴリズムの他の部分の進捗状況についての情報を集めることが可能となる。
図9に示される例においては、犠牲者922がステップ906において競合者を検出した後、リーダは、さらに多くの競合者がいつ到着するかを変更することができる。犠牲者922がリーダの正確な値を認識していない可能性があっても、実際には、リーダカウントが単に増えるだけであるかもしれない。このため、高速レーンリングに要求を配置しても問題はない。
他方で、図10に示される例においては、ステップ1006において、競合者が存在しない(リーダ==チケット番号)と犠牲者1022が判断した後、リーダの真値は、実際には、以前に返されたものよりも大きくなり得る。なぜなら、競合者1021が到着しているからである。このようなことが起こるのはまれであり、リーダの正確な値を決定するためのコストがこの値を知ることによる利益よりも高くなることが想定され得る。加えて、この場合、間違った推測をすることの損害は少ないと考えることができる。なぜなら、犠牲者1022が、引き続き、ステップ1007においてほぼ速やかにリーダシーケンサを進ませて、これにより、いずれの競合者もかなり素早くブロック解除することができるからである。
さらに、図8に示される例においては、要求たとえば要求A821を消費者A811によって高速レーン804に追加することは非時間的遷移として実現することができ、消費者B812によって高速レーン804に対して要求A821を主張することは時間的遷移として実現することができる。
この例においては、競合者、すなわち消費者B812は、要求が高速レーンリング804に実際に格納される前に、fastLane_wの値を観察し得る。ここでは、犠牲者、すなわち消費者A811がリーダシーケンサを進ませた後、1つの競合者だけが高速レーン804にアクセスすることが可能となる。その後、高速レーン804にアクセスしている競合者は、観察することができる要求の数よりも多くは存在し得ない。
このため、たとえ高速レーン804fastLane_wについての要求カウントが高速レーン804の実際の充填部分よりも上まっていることを競合者811が観察し得たとしても、競合者は、各々の競合者によって一度だけ更新されるインデックス(fastLane_r)を用いる値にしかアクセスすることができない。言いかえれば、犠牲者、すなわち消費者A811
は、解放され得る最大数の競合者を制御することによって、高速レーン804における要求のアクセス可能性を制御することができる。なぜなら、十分な競合者が犠牲者812によって解放される場合にだけ、fastLane_rの値がfastLane_wに達し得るからである。
いくつかの実施形態においては、上述の方法のうちの1つを実現するためのコンピュータプログラムが提供される。発明の実施形態に従うと、コンピュータプログラムは、システムに、複数のスレッドがコンカレントプライオリティキューとインタラクトすることを可能にするステップと、プライオリティキューにおける1つ以上の要求を求めて競合する複数のスレッドをシーケンサを介して検出するステップと、複数のスレッド間における競合をプライオリティキューを介して減少させるステップとを実行させる。
一実施形態においては、コンカレントプライオリティキューをサポートするためのシステムが提供される。システムは、複数のスレッドがコンカレントプライオリティキューとインタラクトすることを可能にするための手段と、プライオリティキューにおける1つ以上の要求を求めて競合する複数のスレッドをシーケンサを介して検出するための手段と、複数のスレッド間における競合をプライオリティキューを介して減少させるための手段とを含む。
一実施形態においては、システムはさらに、プライオリティキューにカレンダーリングを含めるための手段を含む。カレンダーリングは、予め構成されたサービス品質(QoS)よりも短い目標応答時間を有するさまざまな要求を格納するよう動作する。
一実施形態においては、システムはさらに、予め構成されたサービス品質(QoS)を約2秒となるように規定するための手段を含む。
一実施形態においては、システムはさらに、より高速にスキャンするためにカレンダーリングと同期して更新されたビットマップを用いるための手段を含む。
一実施形態においては、システムはさらに、作業負荷が集中している場合、カレンダーリングについての競合を減少させるのに用いることができる盗まれた要求のリストをプライオリティキューに関連付けるための手段を含む。盗まれた要求のリストは、同じカレンダーエントリ上にある1つ以上の要求を含む。
一実施形態においては、システムはさらに、協働的同時並行性をサポートするのに用いることができるプライオリティキューに高速レーンを含めるための手段を含む。
一実施形態においては、システムはさらに、複数のスレッドを順序付けることができるチケット機構をシーケンサを介して用いるための手段を含む。
一実施形態においては、システムはさらに、消費者がプライオリティキューにアクセスしようとするたびに増やされるリーダカウントを、チケット機構を介して、維持するための手段を含む。
一実施形態においては、システムはさらに、シーケンサを介してチケットを競合スレッドに発行するための手段を含む。チケットは、競合スレッドがプライオリティキューにアクセスすることを可能にする。
本発明は、本開示の教示に従いプログラムされた、1つ以上のプロセッサ、メモリ、および/またはコンピュータ読取可能な記録媒体を含む、従来の汎用もしくは専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを1つ
以上用いて、適宜実現し得る。適切なソフトウェアコーディングは、熟練したプログラマが本開示の教示に基づいて容易に準備できる。これはソフトウェア技術における当業者には明らかであろう。
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された記録媒体または(1つまたは複数の)コンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/またはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
本発明に関するこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者が本発明のさまざまな実施形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は、添付の特許請求の範囲およびその均等物によって定められることが意図されている。

Claims (22)

  1. コンカレントプライオリティキューをサポートするためのシステムであって、
    1つ以上のマイクロプロセッサと、
    プライオリティキューとを含み、前記プライオリティキューは、複数のスレッドが前記プライオリティキューとインタラクトすることを可能にし、前記システムはさらに、
    前記1つ以上のマイクロプロセッサ上で実行されるシーケンサを含み、前記シーケンサは、前記プライオリティキューにおける1つ以上の要求を求めて競合する複数のスレッドを検出するよう動作し、
    前記プライオリティキューは、前記複数のスレッド間における前記競合を減少させるよう動作する、システム。
  2. 前記プライオリティキューはカレンダーリングを含み、前記カレンダーリングは、予め構成されたサービス品質(QoS)よりも短い目標応答時間を有するさまざまな要求を格納するよう動作する、請求項1に記載のシステム。
  3. 前記予め構成されたサービス品質(QoS)は約2秒となるように規定される、請求項2に記載のシステム。
  4. 前記カレンダーリングと同期して更新されるビットマップは、より高速にスキャンするために用いられる、請求項2または3に記載のシステム。
  5. 前記プライオリティキューは、作業負荷が集中している場合、前記カレンダーリングについての競合を減少させるのに用いることができる盗まれた要求のリストを含み、前記盗まれた要求のリストは、同じカレンダーエントリ上にある1つ以上の要求を含む、請求項2から4のいずれかに記載のシステム。
  6. 前記プライオリティキューは、協働的同時並行性をサポートするのに用いられる高速レーンを含む、請求項2から5のいずれかに記載のシステム。
  7. 前記シーケンサは、前記複数のスレッドを順序付けることができるチケット機構を用いる、請求項1から6のいずれかに記載のシステム。
  8. 前記チケット機構は、消費者が前記プライオリティキューにアクセスしようとするたびに増やされるリーダカウントを維持する、請求項7に記載のシステム。
  9. 前記シーケンサは、競合スレッドにチケットを発行するよう動作し、前記チケットは、前記競合スレッドが前記プライオリティキューにアクセスすることを可能にする、請求項7または8に記載のシステム。
  10. 前記シーケンサは、前記プライオリティキューにおけるアウトライアリストの先入れ先出し(FIFO)順序を維持するよう動作する、請求項1から9のいずれかに記載のシステム。
  11. コンカレントプライオリティキューをサポートするための方法であって、
    複数のスレッドが前記コンカレントプライオリティキューとインタラクトすることを可能にするステップと、
    前記プライオリティキューにおける1つ以上の要求を求めて競合する複数のスレッドをシーケンサを介して検出するステップと、
    前記複数のスレッド間における前記競合を前記プライオリティキューを介して減少させ
    るステップとを含む、方法。
  12. 前記プライオリティキューにカレンダーリングを含めるステップをさらに含み、前記カレンダーリングは、予め構成されたサービス品質(QoS)よりも短い目標応答時間を有するさまざまな要求を格納するよう動作する、請求項11に記載の方法。
  13. 前記予め構成されたサービス品質(QoS)を約2秒となるように規定するステップをさらに含む、請求項12に記載の方法。
  14. より高速にスキャンするために前記カレンダーリングと同期して更新されるビットマップを用いるステップをさらに含む、請求項12または13に記載の方法。
  15. 作業負荷が集中している場合、前記カレンダーリングについての競合を減少させるのに用いることができる盗まれた要求のリストを前記プライオリティキューに関連付けるステップをさらに含み、前記盗まれた要求のリストは、同じカレンダーエントリ上にある1つ以上の要求を含む、請求項12から14のいずれかに記載の方法。
  16. 協働的同時並行性をサポートするのに用いられる前記プライオリティキューに高速レーンを含めるステップをさらに含む、請求項12から15のいずれかに記載の方法。
  17. 前記複数のスレッドを順序付けることができるチケット機構を、前記シーケンサを介して用いるステップをさらに含む、請求項11から16のいずれかに記載の方法。
  18. 消費者が前記プライオリティキューにアクセスしようとするたびに増やされるリーダカウントを前記チケット機構を介して維持するステップをさらに含む、請求項17に記載の方法。
  19. 前記シーケンサを介して競合スレッドにチケットを発行するステップをさらに含み、前記チケットは、前記競合スレッドが前記プライオリティキューにアクセスすることを可能にする、請求項17または18に記載の方法。
  20. 機械読取可能な命令を含むコンピュータプログラムであって、前記機械読取可能な命令は、実行されると、システムに、請求項11から19のいずれかに記載の方法を実行させる、コンピュータプログラム。
  21. 請求項20に記載のコンピュータプログラムを格納する機械読取可能な記憶媒体を含むコンピュータプログラムプロダクト。
  22. 命令が格納された非一時的な機械読取可能な記憶媒体であって、前記命令は、実行されると、システムに、
    複数のスレッドがコンカレントプライオリティキューとインタラクトすることを可能にするステップと、
    前記プライオリティキューにおける1つ以上の要求を求めて競合する複数のスレッドをシーケンサを介して検出するステップと、
    前記複数のスレッド間における競合を前記プライオリティキューを介して減少させるステップとを実行させる、非一時的な機械読取可能な記憶媒体。
JP2019001317A 2013-02-28 2019-01-08 コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法 Active JP6682668B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/781,493 2013-02-28
US13/781,493 US9110715B2 (en) 2013-02-28 2013-02-28 System and method for using a sequencer in a concurrent priority queue

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015560169A Division JP6505610B2 (ja) 2013-02-28 2013-10-28 コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2019071108A true JP2019071108A (ja) 2019-05-09
JP6682668B2 JP6682668B2 (ja) 2020-04-15

Family

ID=49551816

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015560169A Active JP6505610B2 (ja) 2013-02-28 2013-10-28 コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法
JP2019001317A Active JP6682668B2 (ja) 2013-02-28 2019-01-08 コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2015560169A Active JP6505610B2 (ja) 2013-02-28 2013-10-28 コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法

Country Status (6)

Country Link
US (1) US9110715B2 (ja)
EP (1) EP2962200B1 (ja)
JP (2) JP6505610B2 (ja)
KR (1) KR101997816B1 (ja)
CN (1) CN104798045B (ja)
WO (1) WO2014133595A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372716B1 (en) * 2013-09-23 2016-06-21 Amazon Technologies, Inc. Download prioritization
US10127061B2 (en) * 2015-08-21 2018-11-13 International Business Machines Corporation Controlling priority of dynamic compilation
US10496577B2 (en) * 2017-02-09 2019-12-03 Hewlett Packard Enterprise Development Lp Distribution of master device tasks among bus queues
CN108563495A (zh) * 2018-04-08 2018-09-21 郑州云海信息技术有限公司 数据中心综合管理系统的云资源队列分级调度系统和方法
US11422856B2 (en) 2019-06-28 2022-08-23 Paypal, Inc. Adaptive program task scheduling to blocking and non-blocking queues
CN111541623B (zh) * 2020-04-10 2022-12-06 深圳前海微众银行股份有限公司 一种数据处理方法及装置
US11893613B2 (en) 2020-12-23 2024-02-06 Shopify Inc. Systems, manufacture, and methods for controlling access to resources
CN114924849A (zh) * 2022-04-27 2022-08-19 上海交通大学 一种工业控制系统高并发执行和资源调度方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030037117A1 (en) * 2001-08-16 2003-02-20 Nec Corporation Priority execution control method in information processing system, apparatus therefor, and program
JP2005505833A (ja) * 2001-10-05 2005-02-24 ビーイーエイ システムズ, インコーポレイテッド 多重発送プールを用いたアプリケーションサーバーのメッセージングのためのシステム
JP2005128952A (ja) * 2003-10-27 2005-05-19 Nippon Telegr & Teleph Corp <Ntt> 監視制御装置及び監視制御プログラム
JP2006146589A (ja) * 2004-11-19 2006-06-08 Fujitsu Ltd 処理システムおよび調停サーバ
JP2006202310A (ja) * 2000-12-28 2006-08-03 Future System Consulting Corp フレームワークシステム

Family Cites Families (80)

* 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
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
US20020004856A1 (en) 2000-03-29 2002-01-10 Krishna Sudarshan 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
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
US7392302B2 (en) 2002-02-21 2008-06-24 Bea Systems, Inc. Systems and methods for automated service migration
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
DE602004012563T2 (de) 2004-10-11 2009-05-07 Texas Instruments Inc., Dallas Mehrfädiges DMA
US7685391B1 (en) 2004-10-12 2010-03-23 Sun Microsystems, Inc. Kernel/user stack relocation during system uptime
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
ATE373399T1 (de) 2005-03-04 2007-09-15 Alcatel Lucent Vermittlung für integrierte telekommunikationssnetzwerke
US7603502B2 (en) 2005-04-12 2009-10-13 Microsoft Corporation Resource accessing with locking
EP1889513B1 (en) 2005-06-05 2016-09-21 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
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
US20090172636A1 (en) 2006-03-31 2009-07-02 Tim Griffith 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
US7371014B2 (en) 2006-08-21 2008-05-13 Intel Corporation Monolithic active optical cable assembly for data device applications and various connector types
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
US10127059B2 (en) 2008-05-02 2018-11-13 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
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
US8612930B2 (en) 2009-01-30 2013-12-17 Oracle America, Inc. Methods and apparatus for dynamic class reloading and versioning
US9230002B2 (en) 2009-01-30 2016-01-05 Oracle International Corporation High performant information sharing and replication for single-publisher and multiple-subscriber configuration
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
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
WO2012008016A1 (ja) 2010-07-13 2012-01-19 富士通株式会社 マルチスレッド処理装置,マルチスレッド処理システム,マルチスレッド処理プログラム,及びマルチスレッド処理方法
US8856460B2 (en) 2010-09-15 2014-10-07 Oracle International Corporation System and method for zero buffer copying in a middleware environment
US9185054B2 (en) 2010-09-15 2015-11-10 Oracle International Corporation System and method for providing zero buffer copying in a middleware machine environment
US8387057B2 (en) * 2010-12-16 2013-02-26 Intel Corporation Fast and linearizable concurrent priority queue via dynamic aggregation of operations
TW201237632A (en) 2010-12-21 2012-09-16 Ibm Buffer management scheme for a network processor
US20120158684A1 (en) 2010-12-21 2012-06-21 Lsi Corporation Performance enhanced synchronization mechanism with intensity-oriented reader api
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 浪潮电子信息产业股份有限公司 一种基于多线程编程及消息队列的多线程并行处理方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006202310A (ja) * 2000-12-28 2006-08-03 Future System Consulting Corp フレームワークシステム
US20030037117A1 (en) * 2001-08-16 2003-02-20 Nec Corporation Priority execution control method in information processing system, apparatus therefor, and program
JP2003058382A (ja) * 2001-08-16 2003-02-28 Nec Corp 情報処理システムにおける優先実行制御方法及びその装置並びにプログラム
JP2005505833A (ja) * 2001-10-05 2005-02-24 ビーイーエイ システムズ, インコーポレイテッド 多重発送プールを用いたアプリケーションサーバーのメッセージングのためのシステム
US20050149612A1 (en) * 2001-10-05 2005-07-07 Bea Systems, Inc. System for application server messaging with multiple dispatch pools
JP2005128952A (ja) * 2003-10-27 2005-05-19 Nippon Telegr & Teleph Corp <Ntt> 監視制御装置及び監視制御プログラム
JP2006146589A (ja) * 2004-11-19 2006-06-08 Fujitsu Ltd 処理システムおよび調停サーバ

Also Published As

Publication number Publication date
CN104798045A (zh) 2015-07-22
WO2014133595A1 (en) 2014-09-04
JP6682668B2 (ja) 2020-04-15
JP2016508651A (ja) 2016-03-22
EP2962200B1 (en) 2020-07-15
KR101997816B1 (ko) 2019-10-01
US20140245313A1 (en) 2014-08-28
US9110715B2 (en) 2015-08-18
KR20150122119A (ko) 2015-10-30
EP2962200A1 (en) 2016-01-06
CN104798045B (zh) 2018-10-16
JP6505610B2 (ja) 2019-04-24

Similar Documents

Publication Publication Date Title
JP6682668B2 (ja) コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法
US10095562B2 (en) System and method for transforming a queue from non-blocking to blocking
US8051227B1 (en) Programmable queue structures for multiprocessors
US10331500B2 (en) Managing fairness for lock and unlock operations using operation prioritization
US20100153957A1 (en) System and method for managing thread use in a thread pool
US9658905B2 (en) Information processing apparatus and method for carrying out multi-thread processing
CN101208671A (zh) 管理消息队列
US10445096B2 (en) Managing lock and unlock operations using traffic prioritization
CN116893899A (zh) 资源分配方法、装置、计算机设备和存储介质
JP6283376B2 (ja) クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法
CN115408117A (zh) 协程运行方法、装置、计算机设备和存储介质
JP6412888B2 (ja) ミドルウェアマシン環境において協働的同時並行性をサポートするためのシステムおよび方法
JP2024520146A (ja) 決定論的フロー伝送方法および装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190205

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200207

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200325

R150 Certificate of patent or registration of utility model

Ref document number: 6682668

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