特許第6446475号(P6446475)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許6446475トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法
<>
  • 特許6446475-トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 図000003
  • 特許6446475-トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 図000004
  • 特許6446475-トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 図000005
  • 特許6446475-トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 図000006
  • 特許6446475-トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 図000007
  • 特許6446475-トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 図000008
  • 特許6446475-トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 図000009
  • 特許6446475-トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6446475
(24)【登録日】2018年12月7日
(45)【発行日】2018年12月26日
(54)【発明の名称】トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法
(51)【国際特許分類】
   G06F 9/52 20060101AFI20181217BHJP
   G06F 12/00 20060101ALI20181217BHJP
【FI】
   G06F9/52 120B
   G06F12/00 535Z
【請求項の数】11
【全頁数】17
(21)【出願番号】特願2016-565190(P2016-565190)
(86)(22)【出願日】2014年4月30日
(65)【公表番号】特表2017-515234(P2017-515234A)
(43)【公表日】2017年6月8日
(86)【国際出願番号】CN2014076594
(87)【国際公開番号】WO2015165073
(87)【国際公開日】20151105
【審査請求日】2017年4月7日
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ジン,ヨンシュン
(72)【発明者】
【氏名】シェン,シュガン
(72)【発明者】
【氏名】ヂャン,チンシェン
【審査官】 原 忠
(56)【参考文献】
【文献】 国際公開第2013/048826(WO,A1)
【文献】 特開2001−297008(JP,A)
【文献】 特開2001−084235(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46 − 9/54
G06F 12/00
(57)【特許請求の範囲】
【請求項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のチューニング期間後の次のチューニング期間の次のスピンカウントを構成することとをさらに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
著作権表示
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
【0002】
関連出願との相互参照
本願は以下の特許出願に関連しており、以下の特許出願の各々はその全内容が参照により本明細書に援用される。
【0003】
2012年3月7日に出願され、「トランザクショナルミドルウェアマシン環境においてセルフチューニングロックメカニズムをサポートするためのシステムおよび方法(SYSTEM AND METHOD FOR SUPPORTING A SELF-TUNING LOCKING MECHANISM IN A TRANSACTIONAL MIDDLEWARE MACHINE ENVIRONMENT)」と題された、出願番号第13/414,593号である米国特許出願(代理人整理番号:ORACL−05255US1)。
【0004】
発明の分野
本発明は、概して、コンピュータシステムおよびミドルウェアなどのソフトウェアに関し、特に、トランザクションミドルウェアマシン環境をサポートすることに関する。
【背景技術】
【0005】
背景
トランザクションミドルウェアシステムまたはトランザクション指向型ミドルウェアは、組織内のさまざまなトランザクションを処理することができるエンタープライズアプリケーションサーバを含む。高性能ネットワークおよびマルチプロセッサコンピュータなどの新技術の開発によって、トランザクションミドルウェアの性能をさらに改善する必要がある。これらは、発明の実施形態が対処しようとする一般的領域である。
【発明の概要】
【課題を解決するための手段】
【0006】
概要
トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートすることができるシステムおよび方法が本明細書中に記載される。当該システムは、複数のプロセスの各プロセスが、共有メモリ内のデータに対するロックを取得するために1つ以上のテスト・アンド・セット(test-and-set:TAS)オペレーションを行なうことを可能にする。当該システムは次に、現在のチューニング期間のスピン失敗レートを取得することができ、許容される最大回数のTASオペレーションを行った後でプロセスがロックの取得に失敗した場合、スピン失敗が発生する。さらに、当該システムは、取得したスピン失敗レートに基づいて次のチューニング期間のスピンカウントを適応的に構成することができ、スピンカウントは、次のチューニング期間について許容されるTASオペレーションの最大回数を特定する。
【図面の簡単な説明】
【0007】
図1】発明の一実施形態に従う、ロックメカニズムをサポートするトランザクションミドルウェアマシン環境の例を示す図である。
図2】発明の一実施形態に従う、トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートする例を示す図である。
図3】発明の一実施形態に従う、トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするための例示的なフローチャートを示す図である。
図4】発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境においてスピンカウント値を動的に増加させる例を示す図である。
図5】発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境においてスピンカウント値を動的に減少させる例を示す図である。
図6】発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境においてスピンカウント値をそのまま維持する例を示す図である。
図7】発明の一実施形態に従う、適応セルフチューニングロックメカニズムをサポートするトランザクションミドルウェアマシン環境において負荷サージ保護を用いてスピンカウントを構成する例を示す図である。
図8】発明の一実施形態に従う、トランザクションミドルウェアマシン環境において負荷サージ保護を用いてスピンカウントを構成するための例示的なフローチャートを示す図である。
【発明を実施するための形態】
【0008】
詳細な説明
トランザクションミドルウェアマシン環境において適応セルフチューニングロックメカニズムをサポートするためのシステムおよび方法が本明細書中に記載される。
【0009】
発明の一実施形態に従うと、当該システムは、高性能ハードウェア、たとえば64ビットプロセッサ技術、高性能な大容量メモリ、ならびに冗長なインフィニバンドおよびイーサネット(登録商標)ネットワーキングと、WebLogic Suiteのようなアプリケーションサーバまたはミドルウェア環境との組合せを含み、これにより、迅速に備えられ得るとともにオンデマンドでスケール変更可能な大規模並列インメモリグリッドを含む完全なJava(登録商標)EEアプリケーションサーバコンプレックスを提供する。一実施形態に従うと、当該システムは、アプリケーションサーバグリッド、ストレージエリアネットワーク、およびインフィニバンド(IB)ネットワークを提供するフルラック、ハーフラック、もしくはクォーターラック、または他の構成としてデプロイされ得る。ミドルウェアマシンソフトウェアは、たとえばWebLogic Server、JRockitまたはHotspot JVM、Oracle Linux(登録商標)またはSolaris、およびOracle VMといった、アプリケーションサーバと、ミドルウェアと、他の機能性とを提供し得る。一実施形態に従うと、当該システムは、IBネットワークによって互いに通信する複数のコンピュートノードと、IBスイッチゲートウェイと、ストレージノードまたはユニットとを含み得る。ラック構成として実装される場合、当該ラックの未使用部分は、空のままとされるか、またはフィラー(filler)によって占有され得る。
【0010】
本明細書において「Sun Oracle Exalogic」または「Exalogic」と称される発明の一実施形態に従うと、当該システムは、Oracle Middleware SW suiteまたはWeblogicといったミドルウェアまたはアプリケーションサーバソフトウェアをホスティングするための、デプロイが容易なソリューションである。本明細書に記載されるように、一実施形態に従うと、当該システムは、1つ以上のサーバと、ストレージユニットと、ストレージネットワーキングのためのIBファブリックと、ミドルウェアアプリケーションをホストするために要求されるすべての他のコンポーネントとを含む「グリッド・イン・ア・ボックス(grid in a box)」である。たとえばReal Application ClustersおよびExalogic Open storageを用いて大規模並列グリッドアーキテクチャを活用することにより、すべてのタイプのミドルウェアアプリケーションのために有意な性能が与えられ得る。このシステムは、線形のI/Oスケーラビリティとともに向上した性能を与え、使用および管理が簡易であり、ミッションクリティカルな可用性および信頼性を与える。
【0011】
発明の一実施形態に従うと、Tuxedo(登録商標)は、高性能の分散ビジネスアプリケーションの構築、実行および管理を可能にし、多くの多階層アプリケーション開発ツールによってトランザクションミドルウェアとして使用されてきた一組のソフトウェアモジュールである。Tuxedoは、分散コンピューティング環境において分散トランザクション処理を管理するために使用することができるミドルウェアプラットフォームである。無限のスケーラビリティおよび規格に基づいたインターオペラビリティを提供しつつ、企業レガシーアプリケーションをアンロックし、それらをサービス指向のアーキテクチャに拡張するための検証済みのプラットフォームである。
【0012】
発明の一実施形態に従うと、Tuxedoシステムのようなトランザクションミドルウェアシステムは、Exalogicミドルウェアマシンのような複数のプロセッサを有する高速マシン、およびインフィニバンド(IB)ネットワークのような高性能ネットワーク接続を利用することができる。
【0013】

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

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

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

static int _calc_spintuning(_TCADEF)

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

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

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

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

Tuned SPINCOUNT -= Tuned SPINCOUNT>>3

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

Tuned SPINCOUNT = Tuned SPINCOUNT>>2

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

Tuned SPINCOUNT -= Tuned SPINCOUNT>>3

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

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

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

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