(57)【要約】  同時トランザクションがある場合に、トランザクショナルミドルウェアシステムにおいてロックメカニズムをサポートして、共有メモリ中のトランザクションデータを保護することができる。トランザクショナルミドルウェアマシン環境は、複数のプロセッサ上で作動するオペレーティングシステムによって提供されるセマフォを含む。複数のプロセッサは、共有メモリ中のデータにアクセスするように動作する。トランザクショナルミドルウェアマシン環境は、１つ以上のプロセスに関連付けられるテストアンドセット（ＴＡＳ）アセンブリコンポーネントも含む。各上記プロセスは、共有メモリ中のデータについてのロックを取得するために、ＴＡＳアセンブリコンポーネントを用いて１回以上のＴＡＳオペレーションを行なう。その上、ＴＡＳコンポーネントが多くのＴＡＳオペレーションを行ない、ロックの取得に失敗した後で、プロセスは、セマフォ上でブロックされ、共有メモリ中のデータに対するロックの解除を待機するように動作する。
2014528609.tif 000002
【特許請求の範囲】
【請求項１】
トランザクショナルミドルウェアマシン環境においてロックメカニズムをサポートするためのシステムであって、
複数のプロセッサ上で作動するオペレーティングシステムによって提供されるセマフォを備え、複数のプロセッサは共有メモリ中のデータにアクセスするように動作し、さらに、
１つ以上のプロセスに関連付けられるテストアンドセット（ＴＡＳ）アセンブリコンポーネントを備え、各前記プロセスは、共有メモリ中のデータについてのロックを取得するために、ＴＡＳアセンブリコンポーネントを用いて１回以上のＴＡＳオペレーションを行なうように動作し、
ＴＡＳコンポーネントが特定数のＴＡＳオペレーションを行ない、ロックの取得に失敗した後、プロセスは、セマフォ上でブロックされ、共有メモリ中のデータに対するロックの解除を待機するように動作する、システム。
【請求項２】
ロックメカニズムは、複数の同時トランザクションがある場合、共有メモリ中のトランザクションデータを保護する、請求項１に記載のシステム。
【請求項３】
ロックメカニズムは、ＴＡＳオペレーションの許容される特定最大回数であるスピンカウントを使用する、請求項１に記載のシステム。
【請求項４】
スピンカウントは、メタデータにおいてあらかじめ構成される、請求項３に記載のシステム。
【請求項５】
スピンカウントは、ハードウェアコンフィギュレーションおよびアプリケーションシナリオの両方に基づいて動的に決定される、請求項３に記載のシステム。
【請求項６】
スピンカウントは、特殊なプロセスを用いて周期的に決定される、請求項３に記載のシステム。
【請求項７】
スピンカウントは、アルゴリズムを用いて動的に決定され、アルゴリズムは、
先の期間のスピン失敗の回数がスピン失敗限度を越え、先の期間のＣＰＵアイドル比率がＣＰＵアイドル比率限度未満である場合、スピンカウントは先の期間のスピンカウントから増大し、
ＣＰＵアイドル比率がＣＰＵアイドル比率限度を越えた場合、スピンカウントは先の期間のスピンカウントから減少することを特定する、請求項６に記載のシステム。
【請求項８】
ＴＡＳオペレーションを特定回数試みた後で、プロセスがデータに対するロックの取得に失敗した場合、スピン失敗が発生する、請求項７に記載のシステム。
【請求項９】
セマフォを用いて、プロセスは、ロック所有者が覚醒してロックを解除する際にロックを取得するように動作する、請求項１に記載のシステム。
【請求項１０】
スピンカウントは、最適値を見つけるために手動で微調整される、請求項１に記載のシステム。
【請求項１１】
トランザクショナルミドルウェアマシン環境においてロックメカニズムをサポートする方法であって、
複数のプロセッサ上で作動するオペレーティングシステムに関連付けられたセマフォを提供することを備え、複数のプロセッサは、共有メモリ中のデータにアクセスするように動作し、さらに、
共有メモリ中のデータについてのロックを取得するために、１つ以上のプロセスによって、テストアンドセット（ＴＡＳ）アセンブリコンポーネントを用いて１回以上のＴＡＳオペレーションを行なうことと、
ＴＡＳコンポーネントが特定数のＴＡＳオペレーションを行ない、ロックの取得に失敗した後に、プロセスによってセマフォ上でブロックし、共有メモリ中のデータに対するロックの解除を待機することを備える、方法。
【請求項１２】
複数の同時トランザクションがある場合に、共有メモリ中のトランザクションデータを保護することをさらに備える、請求項１１に記載の方法。
【請求項１３】
ＴＡＳオペレーションの許容される特定最大回数であるスピンカウントを使用することをロックメカニズムに許可することをさらに備える、請求項１１に記載の方法。
【請求項１４】
メタデータにおいてスピンカウントをあらかじめ構成することをさらに備える、請求項１３に記載の方法。
【請求項１５】
ハードウェアコンフィギュレーションおよびアプリケーションシナリオの両方に基づいてスピンカウントを動的に決定することをさらに備える、請求項１３に記載の方法。
【請求項１６】
特殊なプロセスを用いてスピンカウントを周期的に決定することをさらに備える、請求項１３に記載の方法。
【請求項１７】
スピンカウントはアルゴリズムを用いて動的に決定され、アルゴリズムは、
先の期間のスピン失敗の回数がスピン失敗限度を越え、先の期間のＣＰＵアイドル比率がＣＰＵアイドル比率限度未満である場合、スピンカウントは先の期間のスピンカウントから増大され、
ＣＰＵアイドル比率がＣＰＵアイドル比率限度を越えた場合、スピンカウントは先の期間のスピンカウントから減少されることを特定する、請求項１６に記載の方法。
【請求項１８】
ＴＡＳオペレーションを特定回数試みた後でプロセスがデータに対するロックの取得に失敗した場合、スピン失敗が発生する、請求項１７に記載の方法。
【請求項１９】
ロック所有者が覚醒してロックを解除する際に、セマフォを用いてロックを取得することをさらに備える、請求項１１に記載の方法。
【請求項２０】
最適値を見つけるために、スピンカウントを手動で微調整することをさらに備える、請求項１１に記載の方法。
【請求項２１】
請求項１１〜２０のうちいずれか１項に記載の方法をコンピュータに行なわせる、プログラム。
【請求項２２】
請求項２１に記載のプログラムを格納する、コンピュータ読取り可能な不揮発性メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文書の開示の一部は、著作権の保護下にある内容を含む。特許商標庁の特許ファイルまたは記録に現れる限りにおいては、著作権所有者は、誰でも当該特許文書または特許開示を複製することについて異議はないが、そうでなければ如何なる場合でもすべての著作権を留保する。
【０００２】
発明の分野
本発明は概して、コンピュータシステムおよびミドルウェアのようなソフトウェアに関し、特定的にはトランザクショナルミドルウェアマシン環境をサポートすることに関する。
【背景技術】
【０００３】
背景
トランザクショナルミドルウェアシステム、すなわちトランザクション指向のミドルウェアは、組織内の様々なトランザクションを処理することができる企業アプリケーションサーバを含む。高性能ネットワークおよびマルチプロセッサコンピュータのような新たな技術の発展により、トランザクショナルミドルウェアの性能をさらに向上させる必要がある。これらは、一般に発明の実施例が対処することが意図される分野である。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
本願明細書に記載されるのは、同時トランザクションがある場合に、共有メモリ中のトランザクションデータを保護するためにトランザクショナルミドルウェアシステムにおいてサポートされることができるロックメカニズムである。トランザクショナルミドルウェアマシン環境は、各々が共有メモリ中のデータにアクセスするように動作する複数のプロセッサ上で作動するオペレーティングシステムを含む。トランザクショナルミドルウェアマシン環境は、オペレーティングシステムによって提供されるセマフォ、および１つ以上のプロセスに関連付けられるテストアンドセット（ＴＡＳ）アセンブリコンポーネントも含む。各プロセスは、共有メモリ中のデータについてのロックを取得するために、ＴＡＳアセンブリコンポーネントを用いて１回以上のＴＡＳオペレーションを行なうことができる。さらに、ＴＡＳコンポーネントが特定数のＴＡＳオペレーションを行なった後でロックの取得に失敗した後、プロセスはセマフォをブロックし、共有メモリ中のデータに対するロックの解除を待機することができる。
【図面の簡単な説明】
【０００５】
【図１】発明の実施例に係る、セルフチューニングロックメカニズムをサポートするトランザクショナルミドルウェアマシン環境の例証を示す図である。
【図２】発明の実施例に係る、トランザクショナルミドルウェアマシン環境においてセルフチューニングロックメカニズムをサポートするための典型的なフローチャートを例示する図である。
【図３】発明の実施例に係る、トランザクショナルミドルウェアマシン環境においてロックメカニズムをサポートするためのシステムの機能ブロック図である。
【発明を実施するための形態】
【０００６】
詳細な説明
本願明細書に記載されるのは、複数のプロセッサを有する高速マシンを利用することができるＴｕｘｅｄｏ（登録商標）のようなトランザクショナルミドルウェアシステムおよび高性能ネットワーク接続をサポートするためのシステムおよび方法である。同時トランザクションがある場合、共有メモリ中のトランザクションデータを保護するために、トランザクショナルミドルウェアシステムにおいてロックメカニズムをサポートすることができる。トランザクショナルミドルウェアマシン環境は、複数のプロセッサ上で作動するオペレーティングシステムによって提供されるセマフォを含む。複数のプロセッサは、共有メモリ中のデータにアクセスすることができる。トランザクショナルミドルウェアマシン環境は、１つ以上のプロセスに関連付けられるテストアンドセット（ＴＡＳ）アセンブリコンポーネントも含む。各上記プロセスは、共有メモリ中のデータについてのロックを取得するために、ＴＡＳアセンブリコンポーネントを用いて１回以上のＴＡＳオペレーションを行なうように動作する。その上、ＴＡＳコンポーネントが多くのＴＡＳオペレーションを行ない、ロックの取得に失敗した後、プロセスは、セマフォ上でブロックされ、共有メモリ中のデータに対するロックの解除を待機する。
【０００７】
本発明の実施例に従うと、当該システムは、高性能ハードウェア、たとえば６４ビットプロセッサ技術、高性能な大きなメモリ、ならびに冗長なインフィニバンドおよびイーサネット（登録商標）ネットワーキングと、ＷｅｂＬｏｇｉｃ  Ｓｕｉｔｅのようなアプリケーションサーバまたはミドルウェア環境との組合せを含み、これにより、迅速に備えられ得るとともにオンデマンドでスケール変更可能な大規模並列メモリグリッドを含む完全なＪａｖａ（登録商標）ＥＥアプリケーションサーバコンプレックスを提供する。本発明の実施例に従うと、当該システムは、アプリケーションサーバグリッド、ストレージエリアネットワーク、およびインフィニバンド（ＩＢ）ネットワークを提供するフルラック、ハーフラック、もしくはクォーターラック、または他の構成としてデプロイされ得る。ミドルウェアマシンソフトウェアは、たとえばＷｅｂＬｏｇｉｃ  Ｓｅｒｖｅｒ、ＪＲｏｃｋｉｔまたはＨｏｔｓｐｏｔ  ＪＶＭ、Ｏｒａｃｌｅ  Ｌｉｎｕｘ（登録商標）またはＳｏｌａｒｉｓ、およびＯｒａｃｌｅ  ＶＭといった、アプリケーションサーバと、ミドルウェアと、他の機能性とを提供し得る。本発明の実施例に従うと、当該システムは、ＩＢネットワークによって互いに通信する複数のコンピュートノードと、ＩＢスイッチゲートウェイと、ストレージノードまたはユニットとを含み得る。ラック構成として実施される場合、当該ラックの未使用部分は、空のままとされるか、またはフィラー（ｆｉｌｌｅｒ）によって占有され得る。
【０００８】
本願明細書において「Ｓｕｎ  Ｏｒａｃｌｅ  Ｅｘａｌｏｇｉｃ」または「Ｅｘａｌｏｇｉｃ」と称される本発明の実施例に従うと、当該システムは、Ｏｒａｃｌｅ  Ｍｉｄｄｌｅｗａｒｅ  ＳＷ  ｓｕｉｔｅまたはＷｅｂｌｏｇｉｃといったミドルウェアまたはアプリケーションサーバソフトウェアをホスティングするための、デプロイが容易なソリューションである。本願明細書に記載されるように、実施例に従うと、当該システムは、１つ以上のサーバと、ストレージユニットと、ストレージネットワーキングのためのＩＢファブリックと、ミドルウェアアプリケーションをホストするために要求されるすべての他のコンポーネントとを含む「グリッド・イン・ア・ボックス（ｇｒｉｄ  ｉｎ  ａ  ｂｏｘ）」である。たとえばＲｅａｌ  Ａｐｐｌｉｃａｔｉｏｎ  ＣｌｕｓｔｅｒｓおよびＥｘａｌｏｇｉｃ  ｏｐｅｎ  ｓｔｏｒａｇｅを用いて大規模並列グリッドアーキテクチャを活用することにより、すべてのタイプのミドルウェアアプリケーションのために有意な性能が与えられ得る。このシステムは、線形のＩ／Ｏスケーラビリティとともに向上した性能を与え、使用および管理が簡易であり、ミッションクリティカルな可用性および信頼性を与える。
【０００９】
発明の実施例に従うと、Ｔｕｘｅｄｏ（登録商標）は、高性能の分散ビジネスアプリケーションの構築、実行および管理を可能にし、多くの多階層アプリケーション開発ツールによってトランザクショナルミドルウェアとして使用されてきた一組のソフトウェアモジュールである。Ｔｕｘｅｄｏ（登録商標）は、分散コンピューティング環境において分散トランザクション処理を管理するために使用することができるミドルウェアプラットフォームである。無限のスケーラビリティおよび規格に基づいたインターオペラビリティを提供しつつ、企業レガシーアプリケーションをアンロックし、それらをサービス指向のアーキテクチャに拡張するための検証済みのプラットフォームである。
【００１０】
発明の実施例に従うと、Ｔｕｘｅｄｏ（登録商標）システムのようなトランザクショナルミドルウェアシステムは、Ｅｘａｌｏｇｉｃミドルウェアマシンのような複数のプロセッサを有する高速マシン、およびインフィニバンド（ＩＢ）ネットワークのような高性能ネットワーク接続を利用することができる。
【００１１】
セルフチューニングロックメカニズム
発明の実施例に従うと、同時トランザクションがある場合、セルフチューニングロックメカニズムは、共有メモリ中のトランザクションデータを保護するためにトランザクショナルミドルウェアシステムにおいてサポートされることができる。セルフチューニングロックメカニズムを用いると、トランザクショナルミドルウェアマシン環境は、大規模な同時トランザクションを有するアプリケーションのようなトランザクショナルアプリケーションシナリオにおける著しいスループットの向上を実現することができる。
【００１２】
図１は、発明の実施例に係る、セルフチューニングロックメカニズムをサポートするトランザクショナルミドルウェアマシン環境の例証を示す。図１に示されるように、トランザクショナルミドルウェアマシンは、オペレーティングシステム（ＯＳ）１０４をサポートする複数のＣＰＵ１３１〜１３４と、様々なトランザクショナルデータ１２１〜１２３を含む共有メモリ１０３とを含む。複数の同時トランザクション１１１〜１１２を有するトランザクショナルアプリケーション１０１は、トランザクショナルサーバ１０２において複数のプロセス１１３〜１１５上で作動することができ、その各々は、アトミックＴＡＳ（テストアンドセット）アセンブリ１０７を用いて、有効なロックメカニズムを実施することができる。同時トランザクションがある場合、ロックメカニズムは、共有メモリ中のトランザクションデータを保護することができる。その上、トランザクショナルアプリケーションにおけるプロセスは、ＯＳによって提供されるセマフォメカニズム１０６を用いて、必要に応じてデータ１２２に対するロックを取得することができる。
【００１３】
一実施例に従うと、プロセスがデータ１２２に対するロックの獲得を必要とする場合、プロセスはＴＡＳオペレーションを多数回行なうことができる。システムは、許容されるＴＡＳオペレーションの回数である目標スピンカウントを特定することができる。目標スピンカウントは、あらかじめ構成することができるか、または動的に決定される。
【００１４】
目標スピンカウントに到達する前にロックが利用可能になった場合、プロセスは、ＯＳによって提供されるセマフォメカニズムよりもはるかに低いコストでロックを取得することができる。一方、この期間中にロックが利用可能にならない場合、セマフォをブロックし、ロック所有者が覚醒してロックを解除するまで待機するようにプロセスを構成することができる。
【００１５】
発明の実施例に従うと、目標スピンカウント値は、ハードウェアコンフィギュレーションのコンテキストとアプリケーションシナリオとにおいて決めることができる。ユーザは、最適値を見つけるために、スピンカウント値を手動で微調整することができる。ＣＰＵの使用とロックを獲得するための時間との間にトレードオフがあるため、決定はいくつかの状況では明白ではない場合がある。たとえば、ユーザは、より短い時間枠でロックを獲得するために、より多くのＣＰＵ電源を消費してより多くのＴＡＳオペレーションを行なわなければならない場合がある。したがって、あらゆる場合について明白な最適目標スピンカウント値がない場合がある。
【００１６】
ユーザレベルセマフォ実装例の欠点の一つは、トランザクショナルアプリケーションが、特定のマシンタイプに依存して目標スピンカウントをリアルタイムに動的に調節することができない場合がある点である。一般に、ユーザレベルセマフォは静的に構成された目標スピンカウント値のみを使用し、ユーザは、実験的慣習のみによって目標スピンカウント値を手動で調節することができる。最適なスピンカウント値はマシンに依存し、すべてのプラットフォームに当てはまる１つの値はないため、より好適なアプローチは、目標スピンカウント値を動的にかつリアルタイムに算出するためのメカニズムを採用することである。
【００１７】
発明の実施例に従うと、目標スピンカウント値を共有メモリに記憶させることができる。Ｔｕｘｅｄｏ（登録商標）デーモンプロセスのような特殊なプロセスは、先の期間に収集された動作情報に従ってスピンカウント値を周期的に変更することができる。たとえば、Ｔｕｘｅｄｏ（登録商標）デーモンは、デフォルトで目標スピンカウント値を５秒につき一度更新することができる。
【００１８】
一実施例に従うと、アルゴリズムを用いて目標スピンカウント値を設定することができる。ＣＰＵアイドルレートが低いか、または過剰に多くのＴＡＳオペレーションがロックの取得に失敗し、システムがセマフォに切替えられた場合、アルゴリズムは、目標スピンカウント値を増大させることができる。さらに、ＣＰＵアイドルレートが高すぎる場合、アルゴリズムは、目標スピンカウント値を低下させることができる。
【００１９】
図２は、発明の実施例に係る、トランザクショナルミドルウェアマシン環境においてセルフチューニングロックメカニズムをサポートするための典型的なフローチャートを例示する。図２に示されるように、ステップ２０１において、システムは複数のプロセッサ上で作動するオペレーティングシステムに関連付けられたセマフォを提供することができ、複数のプロセッサは、共有メモリ中のデータにアクセスするように動作する。次いで、ステップ２０２において、１つ以上のプロセスのうちの１つのプロセスは、共有メモリ中のデータについてのロックを取得するために、テストアンドセット（ＴＡＳ）アセンブリコンポーネントを用いて１回以上のＴＡＳオペレーションを行なうことができる。最後に、ステップ２０３において、ＴＡＳコンポーネントが特定数のＴＡＳオペレーションを行ない、ロックの取得に失敗した後、プロセスはセマフォ上でブロックされ、共有メモリ中のデータに対するロックの解除を待機することができる。
【００２０】
Ｔｕｘｅｄｏ（登録商標）におけるＳＰＩＮＣＯＵＮＴ値の構成
発明の実施例に従うと、Ｔｕｘｅｄｏ（登録商標）コンフィギュレーションファイルにおけるＳＰＩＮＣＯＵＮＴパラメータのようなメタデータを用いて、目標スピンカウントを特定することができる。ＳＰＩＮＣＯＵＮＴは、静的な構成値または動的な構成値のいずれかであり得る。
【００２１】
たとえば、Ｔｕｘｅｄｏ（登録商標）は、ＳＰＩＮＣＯＵＮＴの静的に構成された値を用いて、システムレベルセマフォ上でブロックされる前に掲示板ロック待機が何回スピンしているかを判定する。このアルゴリズムの欠点は、ユーザによって設定された値が特定のプラットフォーム上のＳＰＩＮＣＯＵＮＴの最適値ではない点である。なぜなら、ＳＰＩＮＣＯＵＮＴの最適値は、ＣＰＵ量、作業負荷、掲示板（ＢＢ）ロックの待機数などといった多くの動的要因に依存するからである。
【００２２】
その上、Ｔｕｘｅｄｏ（登録商標）は、実行時環境を考慮に入れながらＳＰＩＮＣＯＵＮＴの値を動的に調整することができる。アルゴリズムを用いて、ＳＰＩＮＣＯＵＮＴパラメータについての適切な値を決定することができる。過剰に多くのＴＡＳオペレーションが先の期間で失敗しており、システムがセマフォに切替えられ、十分なＣＰＵアイドルレートがあった場合、システムはＳＰＩＮＣＯＵＮＴを増大させることができる。一方、ＣＰＵアイドルレートが高すぎた場合、システムはＳＰＩＮＣＯＵＮＴを減少させることができる。
【００２３】
上記のアルゴリズムは、ＣＰＵの使用、たとえばＣＰＵアイドルレートと、ＳＰＩＮ失敗の比率、たとえばロックを取得するための１００００回のオペレーションにおけるＳＰＩＮ失敗の比率とに基づく。ＳＰＩＮ失敗の比率は、ＴＡＳオペレーションによる代わりに、セマフォによって何回ロックが取得されるかを示すことができる。
【００２４】
プロセスがアクティブな状態にあるとき、プロセスはＳＰＩＮモードにあることができる。プロセスがＴＡＳオペレーションを多数回行なおうとした後でロックの取得に失敗した、ＳＰＩＮ失敗と称される場合には、プロセスをセマフォ上でブロックすることができる。プロセスは、ＳＰＩＮ失敗が起こる前にロックを獲得するために、再三ＴＡＳオペレーションを行なうことを試みることができる。構成可能なパラメータ、たとえばＳＰＩＮＣＯＵＮＴを用いて、呼び出され行なわれるべきＴＡＳオペレーションの回数を特定することができる。
【００２５】
発明の実施例に従うと、最小アイドルＣＰＵレートおよびＳＰＩＮ失敗レートは、コンフィギュレーションファイルにおいてメタデータを用いて定義されることができる。たとえば、Ｔｕｘｅｄｏ（登録商標）コンフィギュレーションファイルには、最小アイドルＣＰＵレートを定義するためのＭＩＮＩＤＬＥＣＰＵパラメータが存在し得る。その値は、１〜１００の範囲を有し、２０がデフォルトである。その上、ＳＰＩＮ失敗レートを定義するためのＦＡＣＴＯＲパラメータが存在し得る。その値は、１〜１００００の範囲を有し、１０００がデフォルトである。
【００２６】
最小アイドルＣＰＵレートおよびＳＰＩＮ失敗レートが与えられると、システムは、各走査ユニットにおいてＳＰＩＮＣＯＵＮＴを調整することができる。次いで、ＳＰＩＮ失敗レートが高すぎる（たとえばＳＰＩＮ失敗レートが（１／ＦＡＣＴＯＲ＊１．１））よりも大きく設定される）か、またはアイドルＣＰＵ時間が十分であり（たとえば、アイドルレート＞ＭＩＮＩＤＬＥＣＰＵ％＋０．０５）、新しいＳＰＩＮＣＯＵＮＴ＝古いＳＰＩＮＣＯＵＮＴ＋古いＳＰＩＮＣＯＵＮＴ×（ｃｐｕ＿ｉｄｌｅｔｉｍｅ／ｃｐｕ＿ｕｓｅｒｔｉｍｅ）であり、最大ＳＰＩＮＣＯＵＮＴを１０，０００，０００に設定することができる場合、システムはＳＰＩＮＣＯＵＮＴを増大させることができる。その他の場合、アイドルＣＰＵレートが低すぎ（たとえばアイドルレート＜ＭＩＮＩＤＬＥＣＰＵ％−０．０５）、新しいＳＰＩＮＣＯＵＮＴ＝古いＳＰＩＮＣＯＵＮＴ／４であり、最小ＳＰＩＮＣＯＵＮＴが５００００に設定される場合、システムはＳＰＩＮＣＯＵＮＴを減少させることができる。
【００２７】
以下のリスト１は、ＳＰＩＮＴＵＮＩＮＧ構成のためのＴｕｘｅｄｏ（登録商標）の例である。
【００２８】
【数１】
2014528609.tif 000003
【００２９】
上記の例に示されるように、コンフィギュレーションファイルの＊ＭＡＣＨＩＮＥＳセクションは、構成チューニング目標に使用される属性「ＳＰＩＮＴＵＮＩＮＧ＿ＴＡＲＧＥＴ」を含む。「ＳＰＩＮＴＵＮＩＮＧ＿ＴＡＲＧＥＴ」の値は数値であり、「０」以上かつたとえば「１００００」以下であり得る。０の値は、バイナリに組込まれた値が使用されることを示す。組込まれた値は１０００である。「ＳＰＩＮＴＵＮＩＮＧ＿ＴＡＲＧＥＴ」のデフォルト値は０である。
【００３０】
上記の例において、ＳＰＩＮＴＵＮＩＮＧ＿ＴＡＲＧＥＴの値は、掲示板がロック１０００回ごとにシステムセマフォによってロックされるべき回数がせいぜい１回であることを意味する。システムは、ＳＰＩＮＴＵＮＩＮＧ＿ＴＡＲＧＥＴのより大きな値を満たすためにより多くのＣＰＵが消費される状態で、ＳＰＩＮＣＯＵＮＴの値を増大させることができる。オプションＳＰＩＮＴＵＮＩＮＧが特定される場合のみ、ゼロでない値で属性を設定することができる。
【００３１】
上記の例において示されるように、コンフィギュレーションファイルの＊ＭＡＣＨＩＮＥＳセクションは、アイドルＣＰＵレートを特定するために使用される属性「ＳＰＩＮＴＵＮＩＮＧ＿ＭＩＮＩＤＬＥＣＰＵ」を含む。アイドルＣＰＵレートをシステムによって使用して、好適なＳＰＩＮＣＯＵＮＴを動的に見つけることができる。ＳＰＩＮＣＯＵＮＴが大きいほど、システムが使用するＣＰＵが多くなる。ユーザは、「ＳＰＩＮＴＵＮＩＮＧ＿ＭＩＮＩＤＬＥＣＰＵ」によって最小アイドルＣＰＵレートを設定して、過剰なＣＰＵ消費を回避することができる。
【００３２】
「ＳＰＩＮＴＵＮＩＮＧ＿ＭＩＮＩＤＬＥＣＰＵ」の値は数値であり、百分率である。「０」以上「１００」以下であり得る。０の値は、与えられたバイナリに組込まれた値が使用されるべきであることを示す。たとえば、Ｔｕｘｅｄｏ（登録商標）では、組込まれた値を２０に設定することができ、「ＳＰＩＮＴＵＮＩＮＧ＿ＭＩＮＩＤＬＥＣＰＵ」のデフォルト値は０である。オプションＳＰＩＮＴＵＮＩＮＧが特定される場合にのみ、ゼロでない値に属性を設定することができる。
【００３３】
いくつかの実施例に従うと、図３は、トランザクショナルミドルウェアマシン環境において、上述したような本発明の原理に従って構成されるロックメカニズムをサポートするためのシステム１０００の機能ブロック図を示す。システム１０００の機能ブロックは、本発明の原理を実施するために、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組合せによって実現され得る。当業者であれば、図３に記載される機能ブロックは、本発明の原理を実現するために、組み合されてもよく、またはサブブロックへと分離されてもよいということが理解される。したがって、本願明細書における記載は、本願明細書において記載される機能ブロックの任意の可能な組合せ、分離、またはさらなる定義をサポートし得る。
【００３４】
図３に示されるように、トランザクショナルミドルウェアマシン環境においてロックメカニズムをサポートするためのシステム１０００は、提供ユニット１１００およびＴＡＳアセンブリコンポーネント１２００を備える。提供ユニット１１００は、複数のプロセッサ上で作動するオペレーティングシステムに関連付けられたセマフォを提供し、複数のプロセッサは、共有メモリ中のデータにアクセスするように動作する。ＴＡＳアセンブリコンポーネント１２００は、１つ以上のプロセスに関連付けられ、各上記プロセスは、共有メモリ中のデータについてのロックを取得するために、ＴＡＳアセンブリコンポーネント１２００を用いて１回以上のＴＡＳオペレーションを行なうように動作する。ＴＡＳコンポーネント１２００が特定数のＴＡＳオペレーションを行ない、ロックの取得に失敗した後、プロセスは、セマフォ上でブロックされ、共有メモリ中のデータに対するロックの解除を待機するように動作する。
【００３５】
いくつかの実施例において、システム１０００は、複数の同時トランザクションがある場合、共有メモリ中のトランザクションデータを保護するための保護ユニット１３００をさらに備える。
【００３６】
いくつかの実施例において、システム１０００は、ＴＡＳオペレーションの許容される特定最大回数であるスピンカウントを使用することをロックメカニズムに許可するための許可ユニット１４００をさらに備える。
【００３７】
いくつかの実施例において、システム１０００は、メタデータにおいてスピンカウントをあらかじめ構成するためのプリコンフィギュアリングユニット１５００をさらに備える。
【００３８】
いくつかの実施例において、システム１０００は、ハードウェアコンフィギュレーションおよびアプリケーションシナリオの両方に基づいてスピンカウントを動的に決定するための動的決定ユニット１６００をさらに備える。
【００３９】
いくつかの実施例において、システム１０００は、特殊なプロセスを用いてスピンカウントを周期的に決定するための周期的決定ユニット１７００をさらに備える。
【００４０】
いくつかの実施例において、アルゴリズムを用いてスピンカウントが動的に決定される。アルゴリズムは、先の期間におけるスピン失敗の回数がスピン失敗限度を越え、先の期間のＣＰＵアイドル比率がＣＰＵアイドル比率限度未満である場合、スピンカウントは先の期間のスピンカウントから増大され、ＣＰＵアイドル比率がＣＰＵアイドル比率限度を越えた場合、スピンカウントは先の期間のスピンカウントから減少されることを特定する。
【００４１】
いくつかの実施例において、ＴＡＳオペレーションを特定回数試みた後でプロセスがデータに対するロックの取得に失敗すると、スピン失敗が発生する。
【００４２】
いくつかの実施例において、システム１０００は、ロック所有者が覚醒してロックを解除する際にセマフォを用いてロックを取得するための使用ユニット１８００をさらに備える。
【００４３】
いくつかの実施例において、システム１０００は、スピンカウントを手動で微調整して最適値を見つけるための微調整ユニット１９００をさらに備える。
【００４４】
他の実施例は、トランザクショナルミドルウェアマシン環境においてロックメカニズムをサポートするための装置を含み、複数のプロセッサ上で作動するオペレーティングシステムに関連付けられたセマフォを提供するための手段を備え、複数のプロセッサは共有メモリ中のデータにアクセスするように動作し、さらに、共有メモリ中のデータについてのロックを取得するために、１つ以上のプロセスのうちの１つのプロセスによって、テストアンドセット（ＴＡＳ）アセンブリコンポーネントを用いて、１回以上のＴＡＳオペレーションを行なうための手段と、ＴＡＳコンポーネントが特定回数のＴＡＳオペレーションを行ない、ロックの取得に失敗した後、プロセスによってセマフォ上でブロックし、共有メモリ中のデータに対するロックの解除を待機するための手段とを備える。
【００４５】
別の実施例において、装置は、複数の同時トランザクションがある場合に共有メモリ中のトランザクションデータを保護するための手段をさらに備える。
【００４６】
別の実施例において、装置は、許容されるＴＡＳオペレーションの特定最大回数であるスピンカウントを使用することをロックメカニズムに許可するための手段をさらに備える。
【００４７】
別の実施例において、装置は、メタデータにおいてスピンカウントをあらかじめ構成するための手段をさらに備える。
【００４８】
別の実施例において、装置は、ハードウェアコンフィギュレーションおよびアプリケーションシナリオの両方に基づいてスピンカウントを動的に決定するための手段をさらに備える。
【００４９】
別の実施例において、装置は、特殊なプロセスを用いてスピンカウントを周期的に決定するための手段をさらに備える。
【００５０】
実施例において、アルゴリズムを用いてスピンカウントが動的に決定される装置をさらに備える。アルゴリズムは、先の期間のスピン失敗の回数がスピン失敗限度を越え、先の期間のＣＰＵアイドル比率がＣＰＵアイドル比率限度未満である場合、スピンカウントが先の期間のスピンカウントから増大され、ＣＰＵアイドル比率がＣＰＵアイドル比率限度を越えた場合、スピンカウントが先の期間のスピンカウントから減少されることを特定する。
【００５１】
別の実施例において、装置では、ＴＡＳオペレーションを特定回数試みた後でプロセスがデータに対するロックの取得に失敗した場合、スピン失敗が発生する。
【００５２】
別の実施例において、装置は、ロック所有者が覚醒してロックを解除する際に、セマフォを用いてロックを取得するための手段をさらに備える。
【００５３】
別の実施例において、装置は、スピンカウントを手動で微調整して最適値を見つけるための手段をさらに備える。
【００５４】
さらに別の実施例は、トランザクショナルミドルウェアマシン環境においてロックメカニズムをサポートするためのシステムを含み、複数のプロセッサ上で作動するオペレーティングシステムに関連付けられたセマフォを提供するためのユニットを備え、複数のプロセッサは共有メモリ中のデータにアクセスするように動作し、さらに、１つ以上のプロセスに関連付けられたテストアンドセット（ＴＡＳ）アセンブリコンポーネントを備え、各上記プロセスは、共有メモリ中のデータについてのロックを取得するために、ＴＡＳアセンブリコンポーネントを用いて１回以上のＴＡＳオペレーション行なうように動作し、ＴＡＳコンポーネントが特定数のＴＡＳオペレーションを行ない、ロックの取得に失敗した後、プロセスは、セマフォ上でブロックされ、共有メモリ中のデータに対するロックの解除を待機するように動作する。
【００５５】
別の実施例において、システムは、複数の同時トランザクションがある場合に、共有メモリ中のトランザクションデータを保護するためのユニットをさらに備える。
【００５６】
別の実施例において、システムは、ＴＡＳオペレーションの許容される特定最大回数であるスピンカウントを使用することをロックメカニズムに許可するためのユニットをさらに備える。
【００５７】
別の実施例において、システムは、メタデータにおいてスピンカウントをあらかじめ構成するためのユニットをさらに備える。
【００５８】
別の実施例において、システムは、ハードウェアコンフィギュレーションおよびアプリケーションシナリオの両方に基づいてスピンカウントを動的に決定するためのユニットをさらに備える。
【００５９】
別の実施例において、システムは、特殊なプロセスを用いてスピンカウントを周期的に決定するためのユニットをさらに備える。
【００６０】
別の実施例は、スピンカウントがアルゴリズムを用いて動的に決定されるシステムを含み、アルゴリズムは、先の期間におけるスピン失敗の回数がスピン失敗限度を越え、先の期間のＣＰＵアイドル比率がＣＰＵアイドル比率限度未満である場合、スピンカウントは先の期間のスピンカウントから増大され、ＣＰＵアイドル比率がＣＰＵアイドル比率限度を越えた場合、スピンカウントは先の期間のスピンカウントから減少されることを特定する。
【００６１】
別の実施例は、ＴＡＳオペレーションを特定回数試みた後でプロセスがデータに対するロックの取得に失敗した場合、スピン失敗が発生するシステムを含む。
【００６２】
別の実施例は、ロック所有者が覚醒してロックを解除する際に、セマフォを用いてロックを取得するための手段をさらに備えるシステムを含む。
【００６３】
さらに別の実施例は、スピンカウントを手動で微調整して最適値を見つけるためのユニットをさらに備えるシステムを含む。
【００６４】
本発明は、１つ以上のプロセッサ、メモリ、および／または本開示の教示に従ってプログラムされたコンピュータ可読記憶媒体を含む１つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを用いて簡便に実施され得る。ソフトウェア技術の当業者には明らかであるように、適切なソフトウェアコーディングは、熟練したプログラマによって本開示の教示に基づき容易に用意され得る。
【００６５】
いくつかの実施例では、本発明は、本発明の処理のいずれかを実行するようコンピュータをプログラムするのに用いられ得る命令を格納した記憶媒体またはコンピュータ可読媒体であるコンピュータプログラムプロダクトを含む。当該記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリ素子、磁気または光学カード、ナノシステム（分子メモリＩＣを含む）、または命令および／またはデータを格納するのに好適な任意のタイプの媒体もしくは装置を含み得るが、これらに限定されない。
【００６６】
本発明の上記の記載は、例示および説明目的で与えられている。網羅的であることまたは開示されたそのものの形態に本発明を限定することを意図したものではない。当業者にとっては、多くの修正例および変形例が明確であろう。上記の実施例は、本発明の原理およびその実際的な適用をもっともよく説明するために選択および記載されたものであり、これにより他の当業者が、特定の使用に好適なさまざまな修正例を考慮して、さまざまな実施例について本発明を理解するのが可能になる。本発明の範囲は、添付の特許請求の範囲およびそれらの均等物によって定義されることが意図される。
【図１】
2014528609.tif 000004
【図２】
2014528609.tif 000005
【図３】
2014528609.tif 000006
【国際調査報告】
2014528609.tif 000007