JP6556726B2 - コンピューティング環境においてアダプティブビジーウェイトをサポートするためのシステムおよび方法 - Google Patents

コンピューティング環境においてアダプティブビジーウェイトをサポートするためのシステムおよび方法 Download PDF

Info

Publication number
JP6556726B2
JP6556726B2 JP2016541001A JP2016541001A JP6556726B2 JP 6556726 B2 JP6556726 B2 JP 6556726B2 JP 2016541001 A JP2016541001 A JP 2016541001A JP 2016541001 A JP2016541001 A JP 2016541001A JP 6556726 B2 JP6556726 B2 JP 6556726B2
Authority
JP
Japan
Prior art keywords
thread
queue
sleep state
putting
idle
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
JP2016541001A
Other languages
English (en)
Other versions
JP2017504887A (ja
JP2017504887A5 (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 JP2017504887A publication Critical patent/JP2017504887A/ja
Publication of JP2017504887A5 publication Critical patent/JP2017504887A5/ja
Application granted granted Critical
Publication of JP6556726B2 publication Critical patent/JP6556726B2/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
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/544Buffers; Shared memory; Pipes
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Description

著作権表示
この特許文書の開示の一部は、著作権の保護下にある内容を含む。著作権所有者は、特許商標庁の特許ファイルまたはレコードに現れるので、誰でも当該特許文書または特許開示を複製することについて異議はないが、そうでなければ如何なる場合でもすべての著作権を留保する。
発明の分野
本発明は一般にコンピュータシステムに関し、特に、コンピューティング環境におけるスレッド管理に関する。
背景
現代のコンピューティングシステム、特に大組織およびエンタープライズによって使用されるコンピューティングシステムは、サイズおよび複雑性が増加し続けている。特に、インターネットアプリケーションのような領域では、何百万ものユーザが当該アプリケーションに同時にアクセスすることが可能であるべきであるとの期待が存在し、これは、実際上、ユーザによって生成および消費されるコンテンツの量とそのコンテンツに伴うトランザクションとの指数関数的な増加に結びつく。また、そのようなアクティビティにより、データベースおよびメタデータストアへのトランザクションコールの数が対応して増加することになり、当該需要に対応するキャパシティが限られることになる。
これは、本発明の実施形態が対応することが意図される一般的な領域である。
概要
分散データグリッドのようなコンピューティング環境において、キュープロセッシングをサポートし得るシステムおよび方法が本願明細書において記載される。中央処理装置(CPU)をサポートする1つ以上のマイクロプロセッサ上で実行されるスレッドが、コンピューティング環境においてキューに関連付けられ得る。システムは、1つ以上のタスクがキューに到着すると、上記1つ以上のタスクを処理するために当該スレッドを使用し得る。さらに、システムは、キューにタスクが存在しない場合、スリープ状態およびアイドル状態のうちの1つにスレッドを適合するように構成し得る。
本発明のさまざまな実施形態に従ったデータグリッドクラスタの図である。 本発明の実施形態に従った、コンピューティング環境におけるキュープロセッシングをサポートすることについての図を示す図である。 本発明の実施形態に従った、コンピューティング環境においてスレッドを管理するためにアダプティブビジーウェイトアプローチを使用する図を示す図である。 本発明の実施形態に従った、コンピューティング環境においてキュープロセッシングをサポートするためにスレッドプールを使用する図を示す図である。 本発明の実施形態に従った、コンピューティング環境においてスレッドを管理するためにアダプティブビジーウェイトアプローチを使用するための例示的なフローチャートを示す図である。 本発明の実施形態の機能的構成を示す図である。 本発明の実施形態が実現され得るコンピュータシステムを示す図である。
詳細な説明
コンピューティング環境においてキュープロセッシング(queue processing)をサポートし得るシステムおよび方法が本願明細書において記載される。
分散データグリッド
ある実施形態に従うと、本願明細書において「データグリッドクラスタ」または「データグリッド」と称されるものは、分散化またはクラスタ化された環境内において情報および演算のような関連するオペレーションを管理するために一緒に作動する複数のコンピュータサーバを含むシステムである。データグリッドクラスタは、これらのサーバにわたって共有されるアプリケーションオブジェクトおよびデータを管理するために使用され得る。好ましくは、データグリッドクラスタは、低い応答時間、高いスループット、予測可能なスケーラビリティ、連続的な可用性、および情報信頼性を有するべきである。これらの能力の結果、データグリッドクラスタは、計算集中的である、ステートフルな中間層アプリケーションにおける使用に良好に好適である。たとえばオラクルコヒーレンスデータグリッドクラスタ(Oracle Coherence data grid cluster)といったデータグリッドクラスタのいくつかの例は、より高い性能を達成するために情報をインメモリで格納し得るとともに、複数のサーバにわたって同期される当該情報のコピーを保つ際に冗長性を用い得、これにより、サーバの故障の場合にシステムの回復性とデータの可用性とを保証する。たとえば、オラクルコヒーレンスデータグリッドクラスタは、信頼性があり、非常にスケーラブルなピアツーピアクラスタリングプロトコル上で、レプリケート(replicated)および分散(パーティション化)されたデータ管理およびキャッシングサービスを提供する。
インメモリデータグリッドは、共に作動する多くのサーバ上にデータを分散することによってデータストレージおよび管理能力を提供し得る。データグリッドは、アプリケーションサーバと同じ層において実行されるか、または、アプリケーションサーバ内において実行されるミドルウェアであり得る。データグリッドは、データの管理および処理を提供し得、さらに、データがグリッドにおいて位置するところに処理をプッシュし得る。さらに、インメモリデータグリッドは、サーバが作動しなくなるかまたはネットワークから切断される場合に、自動的かつトランスピアレントにフェイルオーバーし、そのクラスタデータ管理サービスを再分散することによって単一障害点(single points of failure)を除去し得る。新しいサーバが追加されるか、または、フェイルしたサーバが再起動されると、当該サーバは自動的にクラスタに加わり、サービスはそれに戻るようにフェイルオーバーされ得、トランスピアレントにクラスタロードを再分散する。データグリッドはさらに、ネットワークレベルのフォールトトレランス機能と、トランスピアレントなソフトリスタート(soft restart)能力とを含み得る。
実施形態に従うと、データグリッドクラスタの機能は、異なるクラスタサービスの使用に基づく。クラスタサービスは、ルートクラスタサービス、パーティション化されたキャッシュサービス、および、プロキシサービスを含み得る。データグリッドクラスタ内では、各クラスタノードは、クラスタサービスを提供および消費する両方の点において多くのクラスタサービスに参加し得る。各クラスタサービスは、データグリッドクラスタ内のサービスを一意に識別するサービス名と、クラスタサービスが行うことが可能であることを定義するサービスタイプとを有する。データグリッドクラスタにおいて各クラスタノード上で実行されるルートクラスタサービス以外に、各サービスタイプの複数の名称付けされたインスタンス(multiple named instances)が存在し得る。サービスは、ユーザによって構成されるか、または、サービスのデフォルトセットとしてデータグリッドクラスタによって提供されるかのいずれかであり得る。
図1は、本発明のさまざまな実施形態に従ったデータグリッドクラスタの図である。図1に示されるように、たとえばオラクルコヒーレンスデータグリッドクラスタといったデータグリッドクラスタ100は、さまざまなクラスタサービス111〜116が実行される複数のクラスタノード101〜106を含む。さらに、キャッシュコンフィギュレーションファイル110は、データグリッドクラスタ100を構成するために使用され得る。
キュープロセッシングウェイト(Queue Processing Wait)
図2は、本発明の実施形態に従った、コンピューティング環境におけるキュープロセッシングをサポートすることについての図を示す。図2に示されるように、分散データグリッドのようなコンピューティング環境200は、キュープロセッシングをサポートするために1つ以上のスレッド(たとえばスレッド211)を使用し得る。スレッド211は、たとえば、分散データグリッドに基づいたメッセージングバスをサポートするために、キュー201に到着するさまざまなタスクを扱うことを担い得る。
さらに、キュー201にタスクが存在しない場合、システムは、次のタスク(たとえばタスク203)がキュー201に到着するまでスレッド211が待機することを可能にする。スレッド211は、タスク203の到着を待っている間、異なる状態へ構成され得る(すなわち異なるストラテジーを使用する)。
本発明の実施形態に従うと、スレッド211は、システムがCPU202をスピンし得る(すなわちCPUが別のスレッドを実行するようにスイッチングされ得ない)アイドル状態に構成され得る。待機の間にCPU202をスピンすることによって、システムは、新しいタスク203がキュー201に到着するとすぐに、タスク203を扱うようスレッド211を使用し得る。したがって、システムは、低レイテンシーおよび高性能を達成し得る。
スレッド211がアイドル状態である場合、CPU202がスピンしている際にCPU202は他のスレッドを実行するためにスイッチングされ得ないので、トレードオフとして、CPU時間が浪費され得る。したがって、ワークロードが重く、かつ、2つの連続するタスク間のインターバル時間が短い傾向がある場合に、このアプローチは有利である。
代替的には、スレッド211はスリープ状態にされ得、その場合には、たとえばタスク203がキュー101に到着する際にスレッド211が起動されるまで、CPU202は別のスレッドを実行するようスイッチングするようにされる。
一方、スレッド211をキュープロセッシングのために使用するために、システムは、この第2のアプローチを使用して2つのオペレーション(すなわちスレッド211をスリープさせる第1のオペレーション、および、スレッド211を起動する第2のオペレーション)を実行する必要がある。
したがって、このアプローチは、2つの連続するタスク同士間のインターバル時間が、スレッド211をスリープさせ、その後、次のタスク203が到着する際にスレッド211を起動するのにシステムによって費やされる合計のCPU時間よりも長い場合に有利である。
さらに、当該システムは、コヒーレンスデータグリッドクラスタによって使用されるインフィニバンド(IB:InfiniBand)ネットワークのような高性能ネットワークを利用し得る。結果として、全体的なレイテンシーは劇的に低減され得る。そのような場合において、上記2つのオペレーションを実行するために費やされるCPU時間は、全体的なレイテンシーの有意な部分に寄与し得る。
アダプティブビジーウェイト(Adaptive Busy Wait)
図3は、本発明の実施形態に従った、コンピューティング環境においてスレッドを管理するためにアダプティブビジーウェイトアプローチを使用する図を示す。図3に示されるように、スレッド311は、コンピューティング環境300においてキュー301を処理するために使用され得る。
キュー301が空の場合、システムは、新しいタスクがキュー301に到着するのを待っている間、スレッド311を構成するためにどのストラテジーを使用するべきであるか決定する(すなわちスレッド311をスリープにするべきかまたはCPU302をスピンするべきかを決める)よう、アダプティブビジーウェイトアプローチを使用し得る。
アダプティブビジーウェイトアプローチを使用して、システムは、スレッド211をスリープさせることと、その後で起動することとの両方に必要とされ得る合計のCPU時間を取得し得る。次いで、システムはまず、スレッド311をスリープ状態にしてスリープ状態からスレッド311を起動することについてのトータルコストを、CPU302をスピンすることによりスレッドをアイドル状態にすることについてのコストと比較する。
これに対応して、スレッド311をスリープ状態にすることについてのトータルコストがスレッド311をアイドル状態にすることについてのコストよりも小さい場合、システムは、スリープ状態になるようにスレッド311を構成し得る。そうでなければ、システムは、アイドル状態になるようにスレッド311を構成し得る。
図3に示されるように、システムは、オペレーションを実行することについてのコストを判定するために、オペレーティングシステム(OS)303によって提供されるファンクション313を利用し得る。たとえば、CPU302の上で実行されるOSファンクション313は、スレッド311によってどれだけ多くのCPU時間が消費されたかについての情報を提供し得る。システムは、あるオペレーションを実行する前および実行した後のスレッド311によって消費される合計のCPU時間を比較することにより、当該オペレーションを実行することについてのコストを推定し得る。
さらに、システムは、システムがスレッド311をスリープさせる代わりにCPU302をスピンする必要があり得るCPU時間を推定し得る。たとえば、システムは、キュー301に到着する2つの連続するタスク同士間の平均インターバル時間がどれだけ長いかに基づき、そのような情報を得ることができる。
本発明の実施形態に従うと、システムは、キュー301上のワークロードに基づいてスレッド311を適合するように(adaptively)構成し得る。たとえば、キュー301上のワークロードが軽い場合、システムは、新しいタスクを待っている間、スレッド311をスリープ状態になるように構成し得る。その後、ワークロードが重くなると、CPUをスピンさせておくのに必要とされるCPU時間が劇的に低減され得る。
結果として、システムは、スレッド311をスリープさせ、次いで、新しいタスクがキュー301に到着した後で起動させるプロセスを行うよりも、CPU302をアイドル状態にしておく(またはスピンさせておく)ほうが実際にコストが低い(cheaper)であると判断し得る。その後、ワークロードが再び軽くなると、システムは、新しいタスクを待っている間、スレッド311をスリープ状態になるように再構成し得る。
さらに、アダプティブビジーウェイトアプローチを使用する代わりに、システムは、どれだけ多くのCPU時間がスピン(すなわちアイドル状態)の際に消費されることが許容されるかを定義するしきい値をセットし得る。別の態様では、スピンのために使用されるCPU時間がしきい値を越える場合には、システムはスレッド211をスリープ状態にセットし得る。
したがって、このアプローチについての不利な面は、均一なしきい値は、動的なキュープロセッシングシステムについて常に最適化され得るわけではないということである。キュー301上のワークロードが軽く、かつ、スレッド311が他のタスクを実行するためにスイッチングされ得る場合であっても、均一なしきい値では、スピンに使用されるCPU時間の一部が浪費されることが防止されない。
図4は、本発明の実施形態に従った、コンピューティング環境においてキュープロセッシングをサポートするためにスレッドプールを使用する図を示す。図4に示されるように、コンピューティング環境400におけるスレッドプール410は、たとえばスレッドA411〜C413のような、CPU420上で実行される複数のスレッドを含み得る。さらに、スレッドプール410は、たとえばキューA401〜C403といった複数のキューに関連付けられ得る。
さらに、スレッドA411〜C413は、キューA401〜C403に到着するタスクを処理するよう使用され得る。スレッドプール410におけるスレッドA411〜C413の各々について、システムは独立して、新しいタスクがキューA401〜C403に到着するのを待っている間、CPU420をスピンするべきであるかまたはスレッドをスリープさせるべきであるかどうかを決定し得る。
したがって、システムは、キューA401〜C403上の異なるワークロードに基づいて、スレッドA411〜C413が異なって構成されることを可能にし得る。
図5は、本発明の実施形態に従った、コンピューティング環境においてスレッドを管理するためにアダプティブビジーウェイトアプローチを使用するための例示的なフローチャートを示す。図5に示されるように、ステップ501では、システムは、コンピューティング環境において、キューに、1つ以上のマイクロプロセッサ上で実行されるスレッドを関連付け得る。その後、ステップ502では、システムは、1つ以上のタスクがキューに到着すると、1つ以上のタスクを処理するためにスレッドを使用し得る。さらに、ステップ503では、システムは、キューにタスクが存在しない場合、スリープ状態およびアイドル状態のうちの1つにスレッドを適合するように構成し得る。
図6を参照して、本発明の実施形態に従ったシステム600が示される。図6は、システム600によって実現される機能的な構成の図を示す。システム600は、コンピューティングモジュール610、マネージャ620、プロセッサ630、タスクプロセッサ640、および、構成モジュール650を含む。
コンピューティングモジュール610はマネージャ620にキューを提供する。マネージャ620は、コンピューティングモジュール610において、キューにスレッドを関連付ける。スレッドは、プロセッサ620のような1つ以上のマイクロプロセッサ上で実行される。タスクプロセッサ640は、1つ以上のタスクがキューに到着すると、1つ以上のタスクを処理するためにスレッドを使用する。構成モジュール650は、キューにタスクが存在しない場合、スリープ状態およびアイドル状態のうちの1つにスレッドを適合するように構成する。
図7は、周知のハードウェア要素を含むコンピュータシステム700の図を示す。すなわち、コンピュータシステム700は、中央処理装置(CPU)710、マウス720、キーボード730、ランダムアクセスメモリ(RAM)740、ハードディスク750、ディスクドライブ760、通信インターフェイス(I/F)770、およびモニタ780を含む。コンピュータシステム700は、システム600を構成するサーバノードとして機能し得る。
本発明の実施形態に従うと、コンピューティングモジュール610、マネージャ620、プロセッサ630、タスクプロセッサ640、および、構成モジュール650は、1つ以上のコンピュータシステム700によって提供される。コンピューティングモジュール610、マネージャ620、プロセッサ630、タスクプロセッサ640、および、構成モジュール650は、CPU710によって実現される。さらに別の局面において、コンピューティングモジュール610、マネージャ620、プロセッサ630、タスクプロセッサ640、および、構成モジュール650が実現されるように、1つより多いプロセッサが使用され得る。すなわち、コンピューティングモジュール610、マネージャ620、プロセッサ630、タスクプロセッサ640、および、構成モジュール650のいずれかは、互いから物理的に遠隔であり得る。
さらに別の局面において、システム600は、コンピューティングモジュール610、マネージャ620、プロセッサ630、タスクプロセッサ640、および、構成モジュール650として機能する複数のハードワイヤード回路を使用することによって実現され得る。
本発明は、1つ以上のプロセッサ、メモリ、および/または本開示の教示に従ってプログラムされたコンピュータ読取可能な記録媒体を含む1つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを用いて簡便に実施され得る。ソフトウェア技術の当業者には明らかであるように、適切なソフトウェアコーディングは、熟練したプログラマによって本開示の教示に基づき容易に用意され得る。
いくつかの実施形態では、本発明は、本発明の処理のいずれかを実行するようコンピュータをプログラムするのに用いられ得る命令を格納した記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラムプロダクトを含む。当該記憶媒体は、フロッピーディスク(登録商標)、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリ素子、磁気または光学カード、ナノシステム(分子メモリICを含む)、または命令および/またはデータを格納するのに好適な任意のタイプの媒体もしくは装置を含み得るが、これらに限定されない。
本発明の上記の記載は、例示および説明目的で与えられている。網羅的であることまたは開示されたそのものの形態に本発明を限定することを意図したものではない。当業者にとっては、多くの修正例および変形例が明確であろう。上記修正例および変形例は、記載された機能の任意の関連する組合せを含む。上記の実施形態は、本発明の原理およびその実際的な適用を最もよく説明するために選択および記載されたものであり、これにより他の当業者が、特定の使用に好適なさまざまな修正例を考慮して、さまざまな実施形態について本発明を理解するのが可能になる。本発明の範囲は、添付の特許請求の範囲およびそれらの均等物によって定義されることが意図される。

Claims (7)

  1. コンピューティング環境においてキュープロセッシングをサポートするための方法であって、
    前記コンピューティング環境において、1つ以上の中央処理装置(CPU)によって実現される1つ以上のマイクロプロセッサ上で実行されるスレッドをキューに関連付けることと、
    1つ以上のタスクが前記キューに到着すると、前記1つ以上のタスクを処理するために前記スレッドを使用することと、
    前記キューにタスクが存在しない場合に、スリープ状態およびアイドル状態のうちの1つに前記スレッドを適合するように構成することとを含み、
    前記スレッドがスリープ状態である場合、前記1つ以上のCPUは、別のスレッドにスイッチングすることを可能にされ、
    タスクが前記キューに到着すると、前記スレッドは、前記スリープ状態から起動され、
    前記スリープ状態およびアイドル状態のうちの1つに前記スレッドを適合するように構成することは、
    オペレーティングシステム(OS)のファンクションに基づいて、前記スレッドを前記スリープ状態にし、前記スリープ状態から前記スレッドを起動することについてのトータルコストを得ることと、
    前記キューに対するワークロードに基づいて、前記スレッドを前記アイドル状態にすることについてのコストを得ることと、
    前記スレッドを前記スリープ状態にし、前記スリープ状態から前記スレッドを起動することについての前記トータルコストを、前記スレッドを前記アイドル状態にすることについての前記コストと比較することと、
    前記スレッドを前記スリープ状態にすることについての前記トータルコストが、前記スレッドを前記アイドル状態にすることについての前記コストよりも小さい場合、前記スレッドをスリープ状態になるように構成することと、そうでなければ、前記スレッドをアイドル状態になるように構成することとを含む、方法。
  2. 前記スレッドが前記アイドル状態である場合、前記スレッドが前記1つ以上のCPUをスピンすることを可能にすることをさらに含む、請求項1に記載の方法。
  3. 前記1つ以上のマイクロプロセッサ上で実行される複数のスレッドを含むスレッドプールを提供することをさらに含む、請求項1または2に記載の方法。
  4. 各前記スレッドがスリープ状態またはアイドル状態であるべきであるかどうかを独立して決定することを可能にすることをさらに含む、請求項に記載の方法。
  5. マシン読取可能な形態のプログラム命令を含むコンピュータプログラムであって、前記プログラム命令は、コンピュータシステムによって実行されると、請求項1〜のいずれか1項に記載の方法を前記コンピュータシステムに行わせる、コンピュータプログラム。
  6. 分散データグリッドにおいて非同期メッセージプロセッシングをサポートするためのシステムであって、
    1つ以上の中央処理装置(CPU)によって実現される1つ以上のマイクロプロセッサと、
    1つ以上のマイクロプロセッサ上で実行されるスレッドとを含み、前記スレッドはコンピューティング環境においてキューに関連付けられており、前記スレッドは、
    1つ以上のタスクが前記キューに到着すると、前記1つ以上のタスクを処理することを行なうように動作し
    前記キューにタスクが存在しない場合、スリープ状態およびアイドル状態のうちの1つに適合するように構成され、
    前記スレッドがスリープ状態である場合、前記1つ以上のCPUは別のスレッドにスイッチングすることを可能にされ、
    タスクが前記キューに到着すると、前記スレッドは前記スリープ状態から起動され、
    前記システムは、オペレーティングシステム(OS)のファンクションに基づいて、前記スレッドを前記スリープ状態にし、前記スリープ状態から前記スレッドを起動することについてのトータルコストを得るよう動作し、
    前記スレッドは、自らが前記アイドル状態である場合、前記1つ以上のCPUをスピンするよう動作し、
    前記システムは、前記キューに対するワークロードに基づいて、前記スレッドを前記アイドル状態にすることについてのコストを得るよう動作し、
    前記システムは、前記スレッドを前記スリープ状態にし、前記スリープ状態から前記スレッドを起動することについての前記トータルコストを、前記スレッドを前記アイドル状態にすることについての前記コストと比較するよう動作し、
    前記スレッドは、前記スレッドを前記スリープ状態にすることについての前記トータルコストが、前記スレッドを前記アイドル状態にすることについての前記コストよりも小さい場合、スリープ状態になるように構成され、そうでなければ、前記スレッドはアイドル状態になるように構成される、システム。
  7. 前記1つ以上のマイクロプロセッサ上で実行される複数のスレッドを含むスレッドプールをさらに含み、前記システムは、各前記スレッドスリープ状態またはアイドル状態であるべきであるかどうかを独立して決定する、請求項に記載のシステム。
JP2016541001A 2013-12-18 2014-12-04 コンピューティング環境においてアダプティブビジーウェイトをサポートするためのシステムおよび方法 Active JP6556726B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361917709P 2013-12-18 2013-12-18
US61/917,709 2013-12-18
US14/449,357 US9558035B2 (en) 2013-12-18 2014-08-01 System and method for supporting adaptive busy wait in a computing environment
US14/449,357 2014-08-01
PCT/US2014/068661 WO2015094704A1 (en) 2013-12-18 2014-12-04 System and method for supporting adaptive busy wait in a computing environment

Publications (3)

Publication Number Publication Date
JP2017504887A JP2017504887A (ja) 2017-02-09
JP2017504887A5 JP2017504887A5 (ja) 2017-12-28
JP6556726B2 true JP6556726B2 (ja) 2019-08-07

Family

ID=53368551

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016541001A Active JP6556726B2 (ja) 2013-12-18 2014-12-04 コンピューティング環境においてアダプティブビジーウェイトをサポートするためのシステムおよび方法

Country Status (5)

Country Link
US (1) US9558035B2 (ja)
EP (1) EP3084603B1 (ja)
JP (1) JP6556726B2 (ja)
CN (1) CN105830029B (ja)
WO (1) WO2015094704A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798582B2 (en) * 2015-10-22 2017-10-24 International Business Machines Corporation Low latency scheduling on simultaneous multi-threading cores
CN107147641A (zh) * 2017-05-10 2017-09-08 深圳市万游引力科技有限公司 一种信息处理方法、系统及计算机存储介质
CN110806925B (zh) * 2018-08-06 2022-08-23 成都鼎桥通信技术有限公司 音频播放方法及设备
US11630738B2 (en) * 2019-04-24 2023-04-18 International Business Machines Corporation Automatic objective-based compression level change for individual clusters

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434975A (en) * 1992-09-24 1995-07-18 At&T Corp. System for interconnecting a synchronous path having semaphores and an asynchronous path having message queuing for interprocess communications
US6427161B1 (en) * 1998-06-12 2002-07-30 International Business Machines Corporation Thread scheduling techniques for multithreaded servers
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
AU2001247789A1 (en) * 2000-03-22 2001-10-03 Sidestep, Inc. Method and apparatus for dynamic information connection engine
US7137117B2 (en) * 2000-06-02 2006-11-14 Microsoft Corporation Dynamically variable idle time thread scheduling
US7849463B2 (en) * 2000-06-02 2010-12-07 Microsoft Corporation Dynamically variable idle time thread scheduling
US7509671B1 (en) * 2001-06-20 2009-03-24 Microstrategy Incorporated Systems and methods for assigning priority to jobs in a reporting system
US8522192B1 (en) * 2001-06-20 2013-08-27 Microstrategy Incorporated Systems and methods for performing operations in a reporting system
US6965961B1 (en) * 2002-03-01 2005-11-15 University Of Rochester Queue-based spin lock with timeout
US7448036B2 (en) * 2002-05-02 2008-11-04 International Business Machines Corporation System and method for thread scheduling with weak preemption policy
US7234143B2 (en) * 2002-06-20 2007-06-19 Hewlett-Packard Development Company, L.P. Spin-yielding in multi-threaded systems
US7143412B2 (en) * 2002-07-25 2006-11-28 Hewlett-Packard Development Company, L.P. Method and apparatus for optimizing performance in a multi-processing system
US7383368B2 (en) * 2003-09-25 2008-06-03 Dell Products L.P. Method and system for autonomically adaptive mutexes by considering acquisition cost value
US7606804B2 (en) * 2004-03-15 2009-10-20 Emc Corporation System and method for information management in a distributed network
US7594234B1 (en) * 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US7823158B2 (en) * 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US8566827B2 (en) * 2005-10-27 2013-10-22 International Business Machines Corporation System and method of arbitrating access of threads to shared resources within a data processing system
US20070282928A1 (en) * 2006-06-06 2007-12-06 Guofang Jiao Processor core stack extension
US8136111B2 (en) * 2006-06-27 2012-03-13 International Business Machines Corporation Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system
US8402463B2 (en) * 2006-10-30 2013-03-19 Hewlett-Packard Development Company, L.P. Hardware threads processor core utilization
KR100962531B1 (ko) * 2007-12-11 2010-06-15 한국전자통신연구원 동적 로드 밸런싱을 지원하는 멀티 쓰레딩 프레임워크를 수행하는 장치 및 이를 이용한 프로세싱 방법
US8245236B2 (en) * 2008-02-27 2012-08-14 International Business Machines Corporation Lock based moving of threads in a shared processor partitioning environment
JP5469940B2 (ja) * 2009-07-13 2014-04-16 株式会社日立製作所 計算機システム、仮想計算機モニタ及び仮想計算機モニタのスケジューリング方法
US8510738B2 (en) * 2009-08-20 2013-08-13 Microsoft Corporation Preventing unnecessary context switching by employing an indicator associated with a lock on a resource
JP2011175378A (ja) * 2010-02-23 2011-09-08 Renesas Electronics Corp マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法
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 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
US8869118B2 (en) * 2011-06-01 2014-10-21 International Business Machines Corporation System aware performance counters
JP5799797B2 (ja) * 2011-12-21 2015-10-28 富士通株式会社 算出方法、算出プログラム及びコンピュータ
CN103294531B (zh) * 2012-03-05 2017-03-01 阿里巴巴集团控股有限公司 一种任务分配方法及系统
JP2013222407A (ja) * 2012-04-18 2013-10-28 Bank Of Tokyo-Mitsubishi Ufj Ltd 流量制御機能を有するシステム
US9736271B2 (en) * 2012-12-21 2017-08-15 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism with usage-based billing
US9830199B2 (en) * 2013-05-22 2017-11-28 International Business Machines Corporation Low overhead contention-based switching between ticket lock and queued lock
US9563474B2 (en) * 2013-06-13 2017-02-07 Wipro Limited Methods for managing threads within an application and devices thereof
US10579413B2 (en) * 2013-08-14 2020-03-03 International Business Machines Corporation Efficient task scheduling using a locking mechanism
US10089142B2 (en) * 2013-08-21 2018-10-02 Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh Dynamic task prioritization for in-memory databases

Also Published As

Publication number Publication date
US20150169367A1 (en) 2015-06-18
CN105830029A (zh) 2016-08-03
JP2017504887A (ja) 2017-02-09
CN105830029B (zh) 2019-12-17
WO2015094704A1 (en) 2015-06-25
US9558035B2 (en) 2017-01-31
EP3084603A1 (en) 2016-10-26
EP3084603B1 (en) 2018-07-25

Similar Documents

Publication Publication Date Title
US10402220B2 (en) System and method for supporting a scalable thread pool in a distributed data grid
US10050857B2 (en) System and method for supporting a selection service in a server environment
US10122595B2 (en) System and method for supporting service level quorum in a data grid cluster
EP3039844B1 (en) System and method for supporting partition level journaling for synchronizing data in a distributed data grid
JP6615761B2 (ja) 分散データグリッドにおいて非同期呼出をサポートするためのシステムおよび方法
JP6920513B2 (ja) 分散データグリッドにおける分散データ構造をサポートするためのシステムおよび方法
JP6556726B2 (ja) コンピューティング環境においてアダプティブビジーウェイトをサポートするためのシステムおよび方法
US9672038B2 (en) System and method for supporting a scalable concurrent queue in a distributed data grid
US9424147B2 (en) System and method for supporting memory allocation control with push-back in a distributed data grid
WO2015099974A1 (en) System and method for supporting asynchronous invocation in a distributed data grid

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171117

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190128

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190710

R150 Certificate of patent or registration of utility model

Ref document number: 6556726

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