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

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

Info

Publication number
JP6446475B2
JP6446475B2 JP2016565190A JP2016565190A JP6446475B2 JP 6446475 B2 JP6446475 B2 JP 6446475B2 JP 2016565190 A JP2016565190 A JP 2016565190A JP 2016565190 A JP2016565190 A JP 2016565190A JP 6446475 B2 JP6446475 B2 JP 6446475B2
Authority
JP
Japan
Prior art keywords
spin
tuning period
count
failure rate
spin count
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
JP2016565190A
Other languages
English (en)
Other versions
JP2017515234A (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

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 0006446475
上記の表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 (11)

  1. トランザクションミドルウェアマシン環境において適応ロックメカニズムをサポートするための方法であって、
    複数のプロセスの各プロセスによって、第1のチューニング期間において第1のスピンカウントを用いて、共有メモリ内のデータに対するロックを取得するために複数のテスト・アンド・セット(TAS)オペレーションを行なうことを備え
    前記第1のスピンカウントは、前記第1のチューニング期間について許容されるTASオペレーションの第1の最大回数を特定し、
    前記方法は、さらに、
    前記共有メモリに記憶される最後の良好なスピンカウントとして前記第1のスピンカウントを記憶することと、
    前記第1のチューニング期間の第1のスピン失敗レートを取得することとをさらに備え、
    前記第1のチューニング期間について許容される前記第1の最大回数のTASオペレーションを行った後で前記複数のプロセスのうちの1のプロセスがロックの取得に失敗した場合、第1のスピン失敗が発生し、前記方法はさらに、
    取得した前記第1のスピン失敗レートに基づいて、前記第1のチューニング期間後の第2のチューニング期間の第2のスピンカウントを適応的に構成することを備え、
    前記第2のスピンカウントは、前記第2のチューニング期間について許容されるTASオペレーションの第2の最大回数を特定
    前記方法は、さらに、
    前記複数のプロセスの各プロセスによって、前記第2のチューニング期間において前記第2のスピンカウントを用いて、前記共有メモリ内のデータに対するロックを取得するために前記複数のTASオペレーションを行なうことと、
    前記第2のチューニング期間の第2のスピン失敗レートを取得することとをさらに備え、
    前記第2のチューニング期間について許容される前記第2の最大回数のTASオペレーションを行った後で前記複数のプロセスのうちの1のプロセスがロックの取得に失敗した場合、第2のスピン失敗が発生し、
    前記方法は、さらに、
    前記第2のスピン失敗レートが前記第1のスピン失敗レート未満である場合に、前記第2のスピンカウントになるように、前記第2のチューニング期間後の次のチューニング期間の次のスピンカウントを構成し、前記最後の良好なスピンカウントとして前記第2のスピンカウントを記憶することと、
    前記第2のスピン失敗レートが前記第1のスピン失敗レートよりも大きい場合に、前記最後の良好なスピンカウントになるように、前記第2のチューニング期間後の次のチューニング期間の次のスピンカウントを構成することとを含む、方法。
  2. トランザクションミドルウェアマシン環境において適応ロックメカニズムを提供するためのシステムであって、
    1つ以上のプロセッサと、
    複数のプロセスとを備え、
    前記複数のプロセスの各プロセスは、
    第1のチューニング期間において、共有メモリ内のデータに対する複数のロックを取得するために、前記第1のチューニング期間について許容されるTASオペレーションの第1の最大回数を特定する第1のスピンカウントを用いて複数のテスト・アンド・セット(TAS)オペレーションを行なうように動作し、
    前記第1のチューニング期間後の第2のチューニング期間において、前記共有メモリ内のデータに対するロックを取得するために、前記第2のチューニング期間について許容されるTASオペレーションの第2の最大回数を特定する第2のスピンカウントを用いて前記複数のTASオペレーションを行なうように動作し、
    前記システムはさらに、
    前記1つ以上のプロセッサ上で実行されるトランザクションサーバを備え、
    前記トランザクションサーバは、
    前記共有メモリに記憶された最後の良好なスピンカウントとして前記第1のスピンカウントを格納し、
    前記第1のチューニング期間の第1のスピン失敗レートを取得するように動作し、
    前記第1のチューニング期間について許容される前記第1の最大回数のTASオペレーションを行った後で前記複数のプロセスのうちの1のプロセスがロックの取得に失敗した場合、第1のスピン失敗が発生し、
    前記トランザクションサーバはさらに、
    取得した前記第1のスピン失敗レートに基づいて、前記第1のチューニング期間後の前記第2のチューニング期間の前記第2のスピンカウントを適応的に構成
    前記第2のチューニング期間の第2のスピン失敗レートを取得するように動作し、
    前記第2のチューニング期間について許容される前記第2の最大回数のTASオペレーションを行った後で前記複数のプロセスのうちの1つのプロセスがロックの取得に失敗した場合、第2のスピン失敗が発生し、
    前記トランザクションサーバはさらに、
    前記第2のスピン失敗レートが前記第1のスピン失敗レート未満である場合に、前記第2のスピンカウントになるように、前記第2のチューニング期間後の次のチューニング期間の次のスピンカウントを構成し、前記最後の良好なスピンカウントとして前記第2のスピンカウントを記憶し、
    前記第2のスピン失敗レートが前記第1のスピン失敗レートよりも大きい場合に、前記最後の良好なスピンカウントになるように、前記第2のチューニング期間後の次のチューニング期間の次のスピンカウントを構成するように動作する、システム。
  3. アセンブリコンポーネントを用いて前記複数のTASオペレーションを行なう、請求項2に記載のシステム。
  4. 前記第1のスピンカウントはメタデータを用いて予め構成される、請求項2または3に記載の
    システム。
  5. 管理コンポーネントは、前記第1のチューニング期間のアイドルCPUレートがユーザが構成した最小アイドルCPUレートよりも大きいか否か、および前記第1のチューニング期間の前記第1のスピン失敗レートがユーザが構成した目標を達成しているか否かを判断するように動作する、請求項2〜4のいずれか1項に記載のシステム。
  6. 前記第1のチューニング期間の前記アイドルCPUレートが前記ユーザが構成した最小アイドルCPUレートよりも大きく、前記第1のチューニング期間の前記第1のスピン失敗レート前記ユーザが構成した目標を達成していない場合、前記管理コンポーネントは、
    前記第1のチューニング期間の前記第1のスピン失敗レート、前記共有メモリに記憶された最後の良好なスピン失敗レート未満であるときに、または
    前記第1のチューニング期間の前記第1のスピン失敗レートがチューニングしなくては悪化するときに、
    前記第1のスピンカウントを増加させるように動作する、請求項5に記載のシステム。
  7. 可能性のある第2のスピンカウント値の範囲がいくつかの間隔に分割され、前記管理コンポーネントは、異なる数式を用いて、異なる間隔の各々におけるチューニングされたスピンカウント値を算出するように動作する、請求項6に記載のシステム。
  8. 管理コンポーネントは、
    アプリケーションがアイドル状態である、
    イドルCPUレートがユーザが構成した最小アイドルCPUレートよりも大きく、ユーザCPUレートが十分である、および
    前記第1のスピンカウントが予め定められた期間にわたって安定して保たれている、
    の少なくとも1つである場合、前記第1のスピンカウントを減少させるように動作する、請求項2〜7のいずれか1項に記載のシステム。
  9. 管理コンポーネントは、
    前記第2のチューニング期間の前記第2のスピン失敗レート予め定められた要件を満たしている、
    前記第2のチューニング期間の前記第2のスピンカウントが予め定められた上限または下限スピンカウントに到達している、および
    前記第2のチューニング期間の前記第2のスピン失敗レートが安定して保たれている、
    の少なくとも1つである場合、前記第1のスピンカウントを維持するように動作する、請求項2〜8のいずれか1項に記載のシステム。
  10. 管理コンポーネントは、
    スピン失敗を有するプロセスを、前記共有メモリ内の前記データに対するロックの解除を待機するようにセマフォ待機キューに入れ、
    ロック所有者が前記共有メモリ内の前記データに対する前記ロックを解除すると、前記データにアクセスし、
    前記セマフォ待機キューが空でない場合、前記TASオペレーションを行なう前記プロセスに追加のスピンカウントを加える
    ように動作する、請求項2〜9のいずれか1項に記載のシステム。
  11. 命令を含む機械読取可能なプログラムであって、前記命令は、実行されると、システムに、
    複数のプロセスの各プロセスによって、第1のチューニング期間において、第1のスピンカウントを用いて、共有メモリ内のデータに対するロックを取得するために複数のテスト・アンド・セット(TAS)オペレーションを行なうことを実行させ、
    前記第1のスピンカウントは、前記第1のチューニング期間について許容されるTASオペレーションの第1の最大回数を特定し、
    前記命令は、前記システムに、
    前記共有メモリに記憶された最後の良好なスピンカウントとして前記第1のスピンカウントを記憶することと、
    前記第1のチューニング期間の第1のスピン失敗レートを取得することとを実行させ、
    前記第1のチューニング期間について許容される前記第1の最大回数のTASオペレーションを行った後で前記複数のプロセスのうちの1のプロセスがロックの取得に失敗した場合、第1のスピン失敗が発生し、
    前記命令は、前記システムに、
    取得した前記第1のスピン失敗レートに基づいて、前記第1のチューニング期間後の第2のチューニング期間の第2のスピンカウントを適応的に構成することを実行させ、
    前記第2のスピンカウントは、前記第2のチューニング期間について許容されるTASオペレーションの第2の最大回数を特定
    前記命令は、前記システムに、
    前記複数のプロセスの各プロセスによって、前記第2のチューニング期間において前記第2のスピンカウントを用いて、前記共有メモリ内のデータに対するロックを取得するために前記複数のTASオペレーションを行なうことと、
    前記第2のチューニング期間の第2のスピン失敗レートを取得することとをさらに実行させ、
    前記第2のチューニング期間について許容される前記第2の最大回数のTASオペレーションを行った後で前記複数のプロセスのうちの1のプロセスがロックの取得に失敗した場合、第2のスピン失敗が発生し、
    前記命令は、前記システムに、
    前記第2のスピン失敗レートが前記第1のスピン失敗レート未満である場合に、前記第2のスピンカウントになるように、前記第2のチューニング期間後の次のチューニング期間の次のスピンカウントを構成し、前記最後の良好なスピンカウントとして前記第2のスピンカウントを記憶することと、
    前記第2のスピン失敗レートが前記第1のスピン失敗レートよりも大きい場合に、前記最後の良好なスピンカウントになるように、前記第2のチューニング期間後の次のチューニング期間の次のスピンカウントを構成することとをさらに実行させる、プログラム。
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 JP2017515234A (ja) 2017-06-08
JP6446475B2 true 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 网宿科技股份有限公司 数据处理系统及其执行数据处理任务的方法

Family Cites Families (22)

* 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
JP2001084235A (ja) * 1999-09-10 2001-03-30 Nec Corp ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体
US6549961B1 (en) 1999-10-27 2003-04-15 Infineon Technologies North America Corporation Semaphore access in a multiprocessor system
US6687904B1 (en) * 1999-11-22 2004-02-03 Sun Microsystems, Inc. Method and apparatus for selecting a locking policy based on a per-object locking history
NZ532773A (en) 2001-11-01 2005-11-25 Verisign Inc Transactional memory manager
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
US8782352B2 (en) * 2011-09-29 2014-07-15 Oracle International Corporation System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment
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

Also Published As

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

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
JP6832291B2 (ja) アプリケーションサーバを並列起動するためのシステムおよび方法
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