JP2017515234A - トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 - Google Patents

トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 Download PDF

Info

Publication number
JP2017515234A
JP2017515234A JP2016565190A JP2016565190A JP2017515234A JP 2017515234 A JP2017515234 A JP 2017515234A JP 2016565190 A JP2016565190 A JP 2016565190A JP 2016565190 A JP2016565190 A JP 2016565190A JP 2017515234 A JP2017515234 A JP 2017515234A
Authority
JP
Japan
Prior art keywords
spin
tuning period
lock
failure rate
rate
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
JP2016565190A
Other languages
English (en)
Other versions
JP6446475B2 (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 JP2017515234A publication Critical patent/JP2017515234A/ja
Application granted granted Critical
Publication of JP6446475B2 publication Critical patent/JP6446475B2/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0784Routing of error reports, e.g. with a specific transmission path or data flow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

システムおよび方法は、トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートすることができる。当該システムは、複数のプロセスの各プロセスが、共有メモリ内のデータに対するロックを取得するために1つ以上のテスト・アンド・セット(TAS)オペレーションを行なうことを可能にする。当該システムは次に、現在のチューニング期間のスピン失敗レートを取得することができ、許容される最大回数のTASオペレーションを行った後でプロセスがロックの取得に失敗した場合、スピン失敗が発生する。さらに、当該システムは、取得したスピン失敗レートに基づいて次のチューニング期間のスピンカウントを適応的に構成することができ、スピンカウントは、次のチューニング期間について許容されるTASオペレーションの最大回数を特定する。

Description

著作権表示
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
関連出願との相互参照
本願は以下の特許出願に関連しており、以下の特許出願の各々はその全内容が参照により本明細書に援用される。
2012年3月7日に出願され、「トランザクショナルミドルウェアマシン環境においてセルフチューニングロックメカニズムをサポートするためのシステムおよび方法(SYSTEM AND METHOD FOR SUPPORTING A SELF-TUNING LOCKING MECHANISM IN A TRANSACTIONAL MIDDLEWARE MACHINE ENVIRONMENT)」と題された、出願番号第13/414,593号である米国特許出願(代理人整理番号:ORACL−05255US1)。
発明の分野
本発明は、概して、コンピュータシステムおよびミドルウェアなどのソフトウェアに関し、特に、トランザクションミドルウェアマシン環境をサポートすることに関する。
背景
トランザクションミドルウェアシステムまたはトランザクション指向型ミドルウェアは、組織内のさまざまなトランザクションを処理することができるエンタープライズアプリケーションサーバを含む。高性能ネットワークおよびマルチプロセッサコンピュータなどの新技術の開発によって、トランザクションミドルウェアの性能をさらに改善する必要がある。これらは、発明の実施形態が対処しようとする一般的領域である。
概要
トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートすることができるシステムおよび方法が本明細書中に記載される。当該システムは、複数のプロセスの各プロセスが、共有メモリ内のデータに対するロックを取得するために1つ以上のテスト・アンド・セット(test-and-set:TAS)オペレーションを行なうことを可能にする。当該システムは次に、現在のチューニング期間のスピン失敗レートを取得することができ、許容される最大回数のTASオペレーションを行った後でプロセスがロックの取得に失敗した場合、スピン失敗が発生する。さらに、当該システムは、取得したスピン失敗レートに基づいて次のチューニング期間のスピンカウントを適応的に構成することができ、スピンカウントは、次のチューニング期間について許容されるTASオペレーションの最大回数を特定する。
発明の一実施形態に従う、ロックメカニズムをサポートするトランザクションミドルウェアマシン環境の例を示す図である。 発明の一実施形態に従う、トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートする例を示す図である。 発明の一実施形態に従う、トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするための例示的なフローチャートを示す図である。 発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境においてスピンカウント値を動的に増加させる例を示す図である。 発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境においてスピンカウント値を動的に減少させる例を示す図である。 発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境においてスピンカウント値をそのまま維持する例を示す図である。 発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境において負荷サージ保護を用いてスピンカウントを構成する例を示す図である。 発明の一実施形態に従う、トランザクションミドルウェアマシン環境において負荷サージ保護を用いてスピンカウントを構成するための例示的なフローチャートを示す図である。
詳細な説明
トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法が本明細書中に記載される。
発明の一実施形態に従うと、当該システムは、高性能ハードウェア、たとえば64ビットプロセッサ技術、高性能な大容量メモリ、ならびに冗長なインフィニバンドおよびイーサネット(登録商標)ネットワーキングと、WebLogic Suiteのようなアプリケーションサーバまたはミドルウェア環境との組合せを含み、これにより、迅速に備えられ得るとともにオンデマンドでスケール変更可能な大規模並列インメモリグリッドを含む完全なJava(登録商標)EEアプリケーションサーバコンプレックスを提供する。一実施形態に従うと、当該システムは、アプリケーションサーバグリッド、ストレージエリアネットワーク、およびインフィニバンド(IB)ネットワークを提供するフルラック、ハーフラック、もしくはクォーターラック、または他の構成としてデプロイされ得る。ミドルウェアマシンソフトウェアは、たとえばWebLogic Server、JRockitまたはHotspot JVM、Oracle Linux(登録商標)またはSolaris、およびOracle VMといった、アプリケーションサーバと、ミドルウェアと、他の機能性とを提供し得る。一実施形態に従うと、当該システムは、IBネットワークによって互いに通信する複数のコンピュートノードと、IBスイッチゲートウェイと、ストレージノードまたはユニットとを含み得る。ラック構成として実装される場合、当該ラックの未使用部分は、空のままとされるか、またはフィラー(filler)によって占有され得る。
本明細書において「Sun Oracle Exalogic」または「Exalogic」と称される発明の一実施形態に従うと、当該システムは、Oracle Middleware SW suiteまたはWeblogicといったミドルウェアまたはアプリケーションサーバソフトウェアをホスティングするための、デプロイが容易なソリューションである。本明細書に記載されるように、一実施形態に従うと、当該システムは、1つ以上のサーバと、ストレージユニットと、ストレージネットワーキングのためのIBファブリックと、ミドルウェアアプリケーションをホストするために要求されるすべての他のコンポーネントとを含む「グリッド・イン・ア・ボックス(grid in a box)」である。たとえばReal Application ClustersおよびExalogic Open storageを用いて大規模並列グリッドアーキテクチャを活用することにより、すべてのタイプのミドルウェアアプリケーションのために有意な性能が与えられ得る。このシステムは、線形のI/Oスケーラビリティとともに向上した性能を与え、使用および管理が簡易であり、ミッションクリティカルな可用性および信頼性を与える。
発明の一実施形態に従うと、Tuxedo(登録商標)は、高性能の分散ビジネスアプリケーションの構築、実行および管理を可能にし、多くの多階層アプリケーション開発ツールによってトランザクションミドルウェアとして使用されてきた一組のソフトウェアモジュールである。Tuxedoは、分散コンピューティング環境において分散トランザクション処理を管理するために使用することができるミドルウェアプラットフォームである。無限のスケーラビリティおよび規格に基づいたインターオペラビリティを提供しつつ、企業レガシーアプリケーションをアンロックし、それらをサービス指向のアーキテクチャに拡張するための検証済みのプラットフォームである。
発明の一実施形態に従うと、Tuxedoシステムのようなトランザクションミドルウェアシステムは、Exalogicミドルウェアマシンのような複数のプロセッサを有する高速マシン、およびインフィニバンド(IB)ネットワークのような高性能ネットワーク接続を利用することができる。

ロックメカニズム
図1は、発明の一実施形態に従う、ロックメカニズムをサポートするトランザクションミドルウェアマシン環境の例を示す。図1に示されるように、トランザクションミドルウェア環境100は、同時トランザクションが(すなわちプロセス111〜115について)ある場合、Tuxedo環境においてたとえば掲示板(bulletin board:BB)などの共有メモリ101内のさまざまなトランザクションデータ102を保護するためのロックメカニズム103を採用することができる。
発明の一実施形態に従うと、トランザクションミドルウェア環境100は、有効なロックメカニズムを実装するためのアトミックTAS(テスト・アンド・セット)104アセンブリコンポーネントを用いることによってマルチプロセッサマシンを利用することができる。その上、トランザクションアプリケーションにおけるプロセスは、必要に応じて、オペレーティングシステム(OS)によって提供されるセマフォメカニズム107を用いてデータ102に対するロックを取得することができる。
たとえば、プロセス111がデータ102に対するロックの取得を望む場合、プロセス111はTASオペレーションを多数回行なうことができる。システムは、許容されるTASオペレーションの最大回数であるスピンカウント(spin count)105を特定することができる。
図1に示されるように、スピンカウント105に到達する前にロック103が利用可能になった場合、プロセス111は、OSによって提供されるセマフォ107メカニズムよりもはるかに低いコストでロック103を取得することができる。
そうでなく、許容される最大回数のTASオペレーションをプロセス111が行なうまではロック103が利用可能にならない場合、プロセス111はセマフォ107上でブロックし、ロック所有者がロック103を解除するまで待機することができる。たとえば、セマフォ107上でブロックしているロック要求を、たとえばセマフォ待機キュー106などのキューに入れることができる。
その上、セマフォ107上でブロックしているロック要求は、TASアセンブリコンポーネント104に基づくロック要求よりも高い優先順位を有することができる。したがって、セマフォ待機キュー106が空でない限り、ロック保持者はまずロック103をセマフォ待機キュー106内のプロセスに対して解除する。

適応セルフチューニングロックメカニズム
図2は、発明の一実施形態に従う、トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートする例を示す。図2に示されるように、トランザクションミドルウェア環境200は、同時トランザクションが(すなわちプロセス211〜215について)ある場合、共有メモリ201内のさまざまなトランザクションデータ202を保護するためのロックメカニズム203を採用することができる。
たとえば、プロセス211〜215がデータ202に対するロック203の取得を望む場合、プロセス211〜215の各々はTAS204オペレーションを多数回行なうことができる。システムは、許容されるTASオペレーションの最大回数であるスピンカウント205を特定することができる。発明の一実施形態に従うと、Tuxedo構成ファイルにおけるSPINCOUNTパラメータなどのメタデータを用いて、スピンカウント205のデフォルト値および/または初期値を特定することができる。
図2に示されるように、スピンカウント205に到達する前にロック203が利用可能になった場合、プロセス(たとえばプロセス211〜212および214〜215の1つ)は、OSによって提供されるセマフォメカニズムよりもはるかに低いコストでロック203を取得することができる。
そうでなく、スピンカウント205に到達するまではロック203が利用可能にならない(すなわちスピン失敗が起こる)場合は、セマフォ上でブロックし、ロック所有者がロック203を解除して覚醒させるまで待機するようにプロセス(たとえばプロセス213)を構成することができる。
さらに、スピンカウント値205を共有メモリ201に記憶させることができる。Tuxedoデーモンプロセスのような特殊なプロセスは、先のチューニング期間中に収集された動作情報に従ってスピンカウント値205を周期的に調整(または変更)することができる。たとえば、Tuxedoデーモンは、デフォルトで目標スピンカウント値を5秒につき一度更新することができる。
一実施形態に従うと、異なるアルゴリズムを用いてスピンカウント205の値を算出および構成することができる。たとえば、現在のチューニング期間のCPUアイドル率が十分である場合、スピン失敗レート208が目標よりも高い(すなわち、現在のチューニング期間中にあまりに多くのTAS204オペレーションがロック203の取得に失敗し、セマフォに切換わった)ときに、単純アルゴリズム206がスピンカウント205の値を増加させることができる。さらに、この単純アルゴリズムは、CPUアイドル率が高過ぎる場合、スピンカウント205の値を減少させることができる。
単純アルゴリズム206は容易に実行できるが、単純アルゴリズム206は、たとえばOracle databaseなどの実際のリソースマネージャ(RM)上で実行されると異なる問題に直面し得る。たとえば、スピン失敗率が標準以下である限り単純アルゴリズム206はスピンカウント値205を増加させることになるため、単純アルゴリズム206は極めて大きいスピンカウント値205を生成し得る。また、スピンカウント値205を増加させるために単純アルゴリズム206が取るステップは大きくなり過ぎる傾向があり、スピンカウント値205は数回のチューニングで上限に到達し得るため、単純アルゴリズム206はスピンカウント値205を微調整できない場合がある。その上、単純アルゴリズム206は大きいスピンカウント値205を生成し得、これは実のところ、実際のRM上で実行された場合にシステムにおけるスループットの悪化の原因となる。さらに、単純アルゴリズム206は、アイドルCPU率が十分高い場合、スピンカウント値205を減少させない場合がある。さらに、単純アルゴリズム206が実際のRM環境に従ってデフォルトの元のスピンカウント値205およびスピン失敗レート208のデフォルト目標を構成することは困難であり得る。
代替的に、システムは適応アルゴリズム207を採用して、リアルタイムでスピンカウント205の値を動的に算出することができる。適応アルゴリズム207は、単純アルゴリズム206を用いて、システムがたとえばOracle databaseなどの実際のリソースマネージャ(RM)上で実行されると起こり得るさまざまな問題を回避することができる。
発明の一実施形態に従うと、適応アルゴリズム207は良好なチューニングを維持することによって不良のチューニングを防止することができる。たとえば、適応アルゴリズム207は、最後の良好なチューニング期間からのスピンカウント値205およびスピン失敗レート208を記憶することができる。
チューニング期間210毎に、システムは、現在のスピン失敗レート208が、記憶された最後の良好なスピン失敗率よりも良好であるか否かを確認することができる。現在のスピン失敗レート208が最後の良好なスピン失敗率よりも良好である場合、システムは現在のチューニング期間210を良好なチューニングと見なすことができる。そして、システムは、現在のスピンカウント値205および現在のスピン失敗レート208をキャッシュすることができる。一方、現在のスピン失敗レートがチューニング後に増加した(すなわち悪化した)場合、システムは、記憶された最後の良好なスピンカウント値205を次のチューニング期間210に用いることができる。
したがって、トランザクションミドルウェア環境200は、大規模な同時トランザクションシナリオをサポートし、高スループットを達成することができる。
図3は、発明の一実施形態に従う、トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするための例示的なフローチャートを示す。図3に示されるように、ステップ301において、各プロセスは、共有メモリ内のデータに対するロックを取得するために1つ以上のテスト・アンド・セット(TAS)オペレーションを行なうことができる。その上、ステップ302において、システムは現在のチューニング期間のスピン失敗レートを取得することができ、許容される最大回数のTASオペレーションを行った後でプロセスがロックの取得に失敗した場合、スピン失敗が発生する。さらに、ステップ303において、システムは、取得したスピン失敗レートに基づいて次のチューニング期間のスピンカウント値を適応的に構成することができ、スピンカウントは、次のチューニング期間について許容されるTASオペレーションの最大回数を特定する。

目標スピンカウント値を動的に算出するための適応アルゴリズム
発明の一実施形態に従うと、システムは適応アルゴリズムを用いて、リアルタイムで目標スピンカウント値を動的に求めることができる。また、システムは、ハードウェア構成およびアプリケーションシナリオのコンテキストにおいて目標スピンカウント値を算出することができる。
たとえば、Tuxedo環境において、システムは以下に示されるようなファンクションを呼出すことによってスピンカウント値を算出することができる。

static int _calc_spintuning(_TCADEF)

Tuxedoにおいて、アプリケーションは、たとえば各走査ユニット(RESOURCEセクションにおけるパラメータSCANUNITを用いて構成され得る)において、各チューニング期間中に上記のファンクションを呼出すことができる。
その上、以下に示されるように、システムは、CPU率の取出しを担う別のファンクションを呼出すことができる。

static int getCPUrate(int type, float* rate, int size)

上記のファンクションについての実装はプラットフォームに依存し得る。たとえば、上記のファンクションは、Exalogic Elastic Cloud(Linux 64bit)プラットフォームにおけるfile/proc/statツールのようなシステムツールを介してCPU率を取得することができる。代替的に、上記のファンクションは、SPARC SuperCluster(Sparc 64bit)プラットフォームにおけるkstatライブラリのようなシステムライブラリを介してCPU率を取得することができる。
図4は、発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境においてスピンカウント値を動的に増加させる例を示す。図4に示されるように、適応アルゴリズムは、適切な場合、スピンカウントを動的に増加させることができる。
ステップ401において、システムは、現在のアイドルCPUが十分であるか否か、すなわち、現在のチューニング期間のアイドルCPUレートがユーザが構成した最小アイドルCPUレートよりも大きいか否かを確認することができる。また、ステップ402において、システムは、現在のスピン失敗率がユーザが構成した目標未満であるか否かを確認することができる。
次に、適応アルゴリズムは、現在のアイドルCPUが不十分である場合、または現在のチューニング期間の現在のスピン失敗率がユーザが構成した目標を既に達成している場合、スピンカウントを増加させないと決定し得る。
そうでなければ、ステップ403において、適応アルゴリズムは、現在のスピン失敗率が、記憶されている最後の良好なスピン失敗率よりも良好であるか否かを確認することができる。また、ステップ404において、適応アルゴリズムは、現在のスピン失敗率がチューニングしなくては悪化するか否かを確認することができる。
結果として、ステップ405において、現在のチューニング期間のスピン失敗率が最後の良好なスピン失敗率未満である場合、または現在のチューニング期間のスピン失敗率がチューニングしなくては悪化する場合、システムはスピンカウントを増加させることができる。
最後に、ステップ406において、システムは次のチューニング期間に進むことができ、これによってプロセスは、次のチューニング期間について上記のステップ401〜405を再び繰返すことができる。
Tuxedoにおいて、システムは以下のアルゴリズムを用いてスピンカウントの増加を求める(すなわち次のチューニング期間のtuned SPINCOUNTを算出する)ことができる。

Tuned SPINCOUNT +=
(SPINCOUNT * base_factor) * min(max_times,(idle CPU ratio/ user CPU ratio))

上記のアルゴリズムは、2つのファクターを用いて、現在のSPINCOUNT値およびidle CPU ratio/user CPU ratioの値に依存するSPINCOUNTの増加を微調整する。現在のSPINCOUNTの貢献を減少させるために用いられ得る第1のファクターであるbase_factorは1よりも小さい。第2のファクターであるmax_timesは、idle CPU ratio/user CPU ratioの上限として用いられ得る。
その上、可能性のあるSPINCOUNT値の範囲はいくつかの間隔に分割され得る。以下の表1は、いくつかの間隔の例示的な分割を示す。
Figure 2017515234
上記の表1に示されるように、異なる間隔は異なるbase_factorおよびmax_timesの値で構成され得る。SPINCOUNTが徐々に目標値に到達可能であることを確実にするために、base_factorおよびmax_timesの値は、SPINCOUNTが大きくなるにつれて小さくなるように設定され得る。
図5は、発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境においてスピンカウント値を動的に減少させる例を示す。図5に示されるように、適応アルゴリズムは、適切な場合、スピンカウントを動的に減少させることができる。
ステップ501において、適応アルゴリズムは、アプリケーションがアイドル状態であるか否かを確認することができる。また、ステップ502において、適応アルゴリズムは、現在のアイドルCPU率が限界よりも大きいか否か、およびユーザCPU率が十分であるか否かを確認することができ、ステップ503において、適応アルゴリズムは、現在のスピンカウントが十分長い期間にわたってそのまま(または安定して)保たれているか否かを確認することができる。
次に、ステップ504において、アプリケーションがアイドル状態である場合、アルゴリズムはスピンカウントを減少させることができる。たとえば、Tuxedoは以下の数式を用いてSPINCOUNT値を減少させることができる。

Tuned SPINCOUNT -= Tuned SPINCOUNT>>3

上記のアルゴリズムを用いて、Tuxedoは、アプリケーションがアイドル状態である場合、高いSPINCOUNT値を自動的に元のSPINCOUNT値に戻すことができる。
また、ステップ504において、現在のアイドルCPU率が(ユーザによって構成されるような)限界よりも大きく、ユーザCPU率が十分である場合、アルゴリズムはスピンカウントを減少させることができる。たとえば、Tuxedoは以下の数式を用いてSPINCOUNT値を減少させることができる。

Tuned SPINCOUNT = Tuned SPINCOUNT>>2

その上、ステップ504において、現在のSPINCOUNTが十分長い期間にわたって安定して保たれている場合、アルゴリズムはスピンカウントを減少させることができる。たとえば、Tuxedoは以下の数式を用いてSPINCOUNT値を減少させることができる。

Tuned SPINCOUNT -= Tuned SPINCOUNT>>3

上記のアルゴリズムを用いて、Tuxedoは、長い安定期間の後にSPINCOUNT値を減少させることができる。したがって、Tuxedoは、負荷が軽くなると、高いSPINCOUNTを自動的に適切な値に戻すことができる。
最後に、ステップ505において、システムは次のチューニング期間に進むことができ、これによってプロセスは、次のチューニング期間について上記のステップ501〜504を再び繰返すことができる。
図6は、発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境においてスピンカウント値をそのまま維持する例を示す。図6に示されるように、適応アルゴリズムは、異なるシナリオにおいてスピンカウントをそのまま維持することができる。
ステップ601において、適応アルゴリズムは、現在のスピン失敗率が要件を満たしているか否かを確認することができる。また、ステップ602において、適応アルゴリズムは、現在のスピンカウントがチューニング時に上限または下限に到達するか否かを確認することができ、ステップ603において、適応アルゴリズムは、現在のスピン失敗率が安定して保たれているか否かを確認することができる。
次に、ステップ604において、現在のスピン失敗率が要件を満たしている場合、または現在のSPINCOUNTがチューニング時に上限もしくは下限に到達する場合、または現在のスピン失敗率が安定して保たれている場合、アルゴリズムはスピンカウントをそのまま保つことができる。

負荷サージ保護を用いたスピンカウントの構成
図7は、発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境において負荷サージ保護を用いてスピンカウントを構成する例を示す。図7に示されるように、トランザクションミドルウェア環境700は、同時トランザクションが(すなわちプロセス711〜715ついて)ある場合、共有メモリ701内のさまざまなトランザクションデータ702を保護するためのロック703を採用することができる。
さらに、トランザクションミドルウェア環境700は、アトミックTAS(テスト・アンド・セット)704アセンブリコンポーネントを用いて有効なロックメカニズムを実装することができる。その上、システムは、スピン失敗が発生すると、プロセス(たとえばプロセス711〜713)をセマフォ待機キュー706に入れることができる。
図7に示されるように、セマフォ待機キュー706内で待機するプロセス711〜713によるロック要求は、TASアセンブリコンポーネント704に基づくプロセス714〜715によるロック要求よりも高い優先順位を有することができる。
したがって、セマフォ待機キュー706が空でない限り、ロック保持者はまずロック703をセマフォ待機キュー706内のプロセス711〜713に対して解除し、プロセス714〜715はロック703へのアクセスを有し得ない。
発明の一実施形態に従うと、セマフォ待機キュー706の長さは時々異なり得るため、システムはリアルタイムでスピンカウント値を動的に求めることができる。
図7に示されるように、システムは、TASアセンブリコンポーネント704を用いるプロセス714〜715に追加のスピンを加えることができる。たとえば、Tuxedoにおいて、システムは以下のアルゴリズムを用いて、実際に使用されるスピンカウント(すなわちused SPINCOUNT)をリアルタイムで求めることができる。

Used SPINCOUNT = tuned SPINCOUNT+ extraspin * depth of the semaphore waiting queue

上記に示されるように、使用されるSPINCOUNTを算出する際、Tuxedoはセマフォ待機キューの現在の深さを考慮に入れることができる。セマフォ待機キューが深いほど、used SPINCOUNTは大きく設定され得る。
発明の一実施形態に従うと、トランザクションミドルウェアマシン環境700において負荷サージが起こると、TASアセンブリコンポーネント704においてスピン失敗が急激に増加し得、これによって、セマフォ待機キュー706内でロック703を待機するプロセスが増加し得る。
TASアセンブリコンポーネント704を用いるプロセス714〜715に追加のスピンを加えることによって、システムは、セマフォキューが深い場合にスピン失敗率を減少させることができる。さらに、システム内の負荷が最終的に軽くなると、セマフォ待機キュー706の長さは短くなる。したがって、実際に使用されるスピンカウントをチューニング期間内にリアルタイムで減少させることができる。
図8は、発明の一実施形態に従う、トランザクションミドルウェアマシン環境において負荷サージ保護を用いてスピンカウントを構成するための例示的なフローチャートを示す。図8に示されるように、ステップ801において、スピン失敗を有するプロセスが、セマフォ待機キュー内で、共有メモリ内のデータに対するロックの解除を待機することができる。次に、ステップ802において、ロック所有者が共有メモリ内のデータに対するロックを解除すると、プロセスは当該データにアクセスすることができる。さらに、ステップ803において、セマフォ待機キューが空でない場合、システムはTASオペレーションを行なう各プロセスに追加のスピンカウントを加えることができる。
本発明は、本開示の教示に従ってプログラムされる1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取可能記憶媒体を含む、1つ以上の従来の汎用もしくは専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを用いて便利に実装され得る。ソフトウェア技術の当業者にとっては明確であるように、適切なソフトウェアコーディングは、本開示の教示に基づいて熟練プログラマによって容易に準備され得る。
いくつかの実施形態において、本発明は、本発明の処理のいずれかを実行するようコンピュータをプログラムするのに用いられ得る命令を格納した記憶媒体またはコンピュータ可読媒体であるコンピュータプログラムプロダクトを含む。当該記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリ素子、磁気もしくは光学カード、ナノシステム(分子メモリICを含む)、または命令および/もしくはデータを格納するのに好適な任意のタイプの媒体もしくは装置を含み得るが、これらに限定されない。
本発明の上記の記載は、例示および説明目的で与えられている。網羅的であることまたは開示されたそのものの形態に本発明を限定することを意図したものではない。当業者にとっては、多くの修正および変形が明確であろう。これらの修正および変形は、開示された特徴の関連するあらゆる組合せを含む。上記の実施形態は、本発明の原理およびその実際的な適用をもっともよく説明するために選択および記載されたものであり、これにより他の当業者が、特定の使用に好適なさまざまな修正例を考慮して、さまざまな実施形態について本発明を理解するのが可能になる。本発明の範囲は、添付の特許請求の範囲およびそれらの均等物によって定義されることが意図される。

Claims (20)

  1. トランザクションミドルウェアマシン環境において適応ロックメカニズムをサポートするための方法であって、
    複数のプロセスの各プロセスによって、共有メモリ内のデータに対するロックを取得するために1つ以上のテスト・アンド・セット(TAS)オペレーションを行なうことと、
    現在のチューニング期間のスピン失敗レートを取得することとを備え、許容される最大回数のTASオペレーションを行った後でプロセスが前記ロックの取得に失敗した場合、スピン失敗が発生し、前記方法はさらに、
    取得した前記スピン失敗レートに基づいて次のチューニング期間のスピンカウントを適応的に構成することを備え、前記スピンカウントは、前記次のチューニング期間について許容されるTASオペレーションの最大回数を特定する、方法。
  2. アセンブリコンポーネントを用いて前記1つ以上のTASオペレーションを行なうことをさらに備える、請求項1に記載の方法。
  3. メタデータを用いて前記スピンカウントを予め構成することをさらに備える、請求項1に記載の方法。
  4. 前記現在のチューニング期間のアイドルCPUレートがユーザが構成した最小アイドルCPUレートよりも大きいか否か、および前記現在のチューニング期間のスピン失敗率がユーザが構成した目標を達成しているか否かを判断することをさらに備える、請求項1に記載の方法。
  5. 前記現在のチューニング期間のアイドルCPUレートがユーザが構成した最小アイドルCPUレートよりも大きく、前記現在のチューニング期間のスピン失敗率がユーザが構成した目標を達成していない場合、
    前記現在のチューニング期間の前記スピン失敗率が最後の良好なスピン失敗率よりも良好であるときに、または
    前記現在のチューニング期間の前記スピン失敗率がチューニングしなくては悪化するときに、
    前記スピンカウントを増加させることをさらに備える、請求項4に記載の方法。
  6. 可能性のあるスピンカウント値の範囲をいくつかの間隔に分割することと、
    異なる数式を用いて、異なる間隔の各々におけるチューニングされたスピンカウント値を算出することとをさらに備える、請求項5に記載の方法。
  7. アプリケーションがアイドル状態である、
    前記アイドルCPU率がユーザが構成した最小アイドルCPUレートよりも大きく、前記ユーザCPU率が十分である、および
    前記スピンカウントがある期間にわたって安定して保たれている、
    の少なくとも1つである場合、前記スピンカウントを減少させることをさらに備える、請求項1に記載の方法。
  8. 前記現在のチューニング期間の前記スピン失敗率が要件を満たしている、
    前記現在のチューニング期間の前記スピンカウントが上限または下限に到達している、および
    前記現在のチューニング期間の前記スピン失敗率が安定して保たれている、
    の少なくとも1つである場合、前記スピンカウントを維持することをさらに備える、請求項1に記載の方法。
  9. スピン失敗を有するプロセスによって、前記共有メモリ内の前記データに対するロックの解除をセマフォ待機キュー内で待機することと、
    ロック所有者が前記共有メモリ内の前記データに対する前記ロックを解除すると、前記データにアクセスすることとをさらに備える、請求項1に記載の方法。
  10. 前記セマフォ待機キューが空でない場合、前記TASオペレーションを行なう各プロセスに追加のスピンカウントを加えることをさらに備える、請求項9に記載の方法。
  11. トランザクションミドルウェアマシン環境において適応ロックメカニズムを提供するためのシステムであって、
    1つ以上のプロセッサと、
    複数のプロセスとを備え、前記複数のプロセスの各プロセスは、共有メモリ内のデータに対するロックを取得するために1つ以上のテスト・アンド・セット(TAS)オペレーションを行なうように動作し、前記システムはさらに、
    前記1つ以上のプロセッサ上で実行されるトランザクションサーバを備え、前記トランザクションサーバは、
    現在のチューニング期間のスピン失敗レートを取得するように動作し、許容される最大回数のTASオペレーションを行った後でプロセスが前記ロックの取得に失敗した場合、スピン失敗が発生し、前記トランザクションサーバはさらに、
    取得した前記スピン失敗レートに基づいて次のチューニング期間のスピンカウントを適応的に構成するように動作し、前記スピンカウントは、前記次のチューニング期間について許容されるTASオペレーションの最大回数を特定する、システム。
  12. アセンブリコンポーネントを用いて前記1つ以上のTASオペレーションを行なう、請求項11に記載のシステム。
  13. 前記スピンカウントはメタデータを用いて予め構成される、請求項11に記載のシステム。
  14. 管理コンポーネントは、前記現在のチューニング期間のアイドルCPUレートがユーザが構成した最小アイドルCPUレートよりも大きいか否か、および前記現在のチューニング期間のスピン失敗率がユーザが構成した目標を達成しているか否かを判断するように動作する、請求項11に記載のシステム。
  15. 前記現在のチューニング期間のアイドルCPUレートがユーザが構成した最小アイドルCPUレートよりも大きく、前記現在のチューニング期間のスピン失敗率がユーザが構成した目標を達成していない場合、前記管理コンポーネントは、
    前記現在のチューニング期間の前記スピン失敗率が最後の良好なスピン失敗率よりも良好であるときに、または
    前記現在のチューニング期間の前記スピン失敗率がチューニングしなくては悪化するときに、
    前記スピンカウントを増加させるように動作する、請求項14に記載のシステム。
  16. 可能性のあるスピンカウント値の範囲がいくつかの間隔に分割され、前記管理コンポーネントは、異なる数式を用いて、異なる間隔の各々におけるチューニングされたスピンカウント値を算出するように動作する、請求項15に記載のシステム。
  17. 管理コンポーネントは、
    アプリケーションがアイドル状態である、
    前記アイドルCPU率がユーザが構成した最小アイドルCPUレートよりも大きく、前記ユーザCPU率が十分である、および
    前記スピンカウントがある期間にわたって安定して保たれている、
    の少なくとも1つである場合、前記スピンカウントを減少させるように動作する、請求項11に記載のシステム。
  18. 管理コンポーネントは、
    前記現在のチューニング期間の前記スピン失敗率が要件を満たしている、
    前記現在のチューニング期間の前記スピンカウントが上限または下限に到達している、および
    前記現在のチューニング期間の前記スピン失敗率が安定して保たれている、
    の少なくとも1つである場合、前記スピンカウントを維持するように動作する、請求項11に記載のシステム。
  19. 管理コンポーネントは、
    スピン失敗を有するプロセスを、前記共有メモリ内の前記データに対するロックの解除を待機するようにセマフォ待機キューに入れ、
    ロック所有者が前記共有メモリ内の前記データに対する前記ロックを解除すると、前記データにアクセスし、
    前記セマフォ待機キューが空でない場合、前記TASオペレーションを行なう前記プロセスに追加のスピンカウントを加える
    ように動作する、請求項11に記載のシステム。
  20. 命令を格納している非一時的な機械読取可能記憶媒体であって、前記命令は、実行されると、システムに、
    複数のプロセスの各プロセスによって、共有メモリ内のデータに対するロックを取得するために1つ以上のテスト・アンド・セット(TAS)オペレーションを行なうことと、
    現在のチューニング期間のスピン失敗レートを取得することとを備えるステップを実行させ、許容される最大回数のTASオペレーションを行った後でプロセスが前記ロックの取得に失敗した場合、スピン失敗が発生し、前記ステップはさらに、
    取得した前記スピン失敗レートに基づいて次のチューニング期間のスピンカウントを適応的に構成することを備え、前記スピンカウントは、前記次のチューニング期間について許容されるTASオペレーションの最大回数を特定する、機械読取可能記憶媒体。
JP2016565190A 2014-04-30 2014-04-30 トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 Active JP6446475B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/076594 WO2015165073A1 (en) 2014-04-30 2014-04-30 System and method for supporting adaptive self-tuning locking mechanism in transactional middleware machine environment

Publications (2)

Publication Number Publication Date
JP2017515234A true JP2017515234A (ja) 2017-06-08
JP6446475B2 JP6446475B2 (ja) 2018-12-26

Family

ID=54355309

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016565190A Active JP6446475B2 (ja) 2014-04-30 2014-04-30 トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法

Country Status (5)

Country Link
US (1) US9846603B2 (ja)
JP (1) JP6446475B2 (ja)
KR (1) KR102239280B1 (ja)
CN (1) CN106471486B (ja)
WO (1) WO2015165073A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017131624A1 (en) * 2016-01-26 2017-08-03 Hewlett Packard Enterprise Development Lp A unified lock
US10740158B2 (en) * 2018-05-02 2020-08-11 EMC IP Holding Company LLC Synchronization object aborting systems and methods
CN110309024B (zh) * 2019-04-23 2023-07-18 网宿科技股份有限公司 数据处理***及其执行数据处理任务的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001084235A (ja) * 1999-09-10 2001-03-30 Nec Corp ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体
JP2001297008A (ja) * 1999-11-22 2001-10-26 Sun Microsyst Inc オブジェクトごとのロック履歴に基づくロック方針選択方法および装置
WO2013048826A1 (en) * 2011-09-29 2013-04-04 Oracle International Corporation System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295262A (en) * 1991-05-16 1994-03-15 International Business Machines Corporation Read-only access without blocking via access vectors
JP2853608B2 (ja) 1995-05-30 1999-02-03 日本電気株式会社 並列処理システムのファイルアクセス制御方式
US6119115A (en) * 1998-03-12 2000-09-12 Microsoft Corporation Method and computer program product for reducing lock contention in a multiple instruction execution stream processing environment
US6148300A (en) * 1998-06-19 2000-11-14 Sun Microsystems, Inc. Hybrid queue and backoff computer resource lock featuring different spin speeds corresponding to multiple-states
US6549961B1 (en) 1999-10-27 2003-04-15 Infineon Technologies North America Corporation Semaphore access in a multiprocessor system
WO2003038596A1 (en) 2001-11-01 2003-05-08 Verisign, Inc. High speed non-concurrency controlled database
CA2374290A1 (en) * 2002-03-01 2003-09-01 Ibm Canada Limited-Ibm Canada Limitee Updating spin counters for spin latches
US7051026B2 (en) * 2002-07-31 2006-05-23 International Business Machines Corporation System and method for monitoring software locks
US7610585B2 (en) * 2004-06-03 2009-10-27 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
US7594234B1 (en) * 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
GB0518516D0 (en) * 2005-09-10 2005-10-19 Ibm Managing a resource lock
CN101546275B (zh) 2008-03-26 2012-08-22 中国科学院微电子研究所 一种获取多处理器硬件信号量的方法
CN101256509B (zh) * 2008-04-07 2010-09-01 中兴通讯股份有限公司 一种锁机制的加锁方法、解锁方法和实现方法
US8191046B2 (en) * 2008-10-06 2012-05-29 Microsoft Corporation Checking transactional memory implementations
US8392925B2 (en) * 2009-03-26 2013-03-05 Apple Inc. Synchronization mechanisms based on counters
US8495311B2 (en) * 2009-06-25 2013-07-23 International Business Machines Corporation Updating shared variables atomically
US9575985B2 (en) * 2009-12-07 2017-02-21 Novell, Inc. Distributed lock administration
US9354945B2 (en) * 2012-10-12 2016-05-31 International Business Machines Corporation Managing a lock to a resource shared among a plurality of processors
US9772888B2 (en) * 2013-04-10 2017-09-26 Wind River Systems, Inc. Semaphore with timeout and lock-free fast path for message passing architectures

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001084235A (ja) * 1999-09-10 2001-03-30 Nec Corp ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体
JP2001297008A (ja) * 1999-11-22 2001-10-26 Sun Microsyst Inc オブジェクトごとのロック履歴に基づくロック方針選択方法および装置
WO2013048826A1 (en) * 2011-09-29 2013-04-04 Oracle International Corporation System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment

Also Published As

Publication number Publication date
JP6446475B2 (ja) 2018-12-26
CN106471486A (zh) 2017-03-01
WO2015165073A1 (en) 2015-11-05
US20150317191A1 (en) 2015-11-05
KR102239280B1 (ko) 2021-04-13
US9846603B2 (en) 2017-12-19
KR20160147984A (ko) 2016-12-23
CN106471486B (zh) 2019-05-17

Similar Documents

Publication Publication Date Title
US9559977B2 (en) System and method for supporting a dynamic resource broker in a transactionial middleware machine environment
US9389907B2 (en) System and method for providing a distributed transaction lock in a transactional middleware machine environment
US8756379B2 (en) Managing concurrent accesses to a cache
US20140143367A1 (en) Robustness in a scalable block storage system
US10198271B2 (en) System and method for booting application servers in parallel
US8914588B2 (en) System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment
JP6446475B2 (ja) トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法
JP2020184365A (ja) アプリケーションサーバを並列起動するためのシステムおよび方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170407

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170407

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180502

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181203

R150 Certificate of patent or registration of utility model

Ref document number: 6446475

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