(57)【要約】      （修正有）【課題】ソフトウェア・パフォーマンス分析のためのロック・トレーシング機能を含む情報処理システムを提供する。【解決手段】対称マルチプロセッサ（ＳＭＣ）システム１００において、実行アプリケーション・プログラム１９０の特定スレッドがメモリ・アドレス・ポインタに対するロックを要求および獲得する。次のスレッドは、同じメモリ・アドレス・ポインタ・ロックを、特定スレッドがそのロックを解放する前に要求する。次のスレッドはスピンを開始し、アドレス・ポインタ・ロックの解放を待つ。次のスレッドが待ち時間の所定最大量（MAXSPIN）に達したとき、ＯＳ１８０のカーネル１８５がMAXSPIN状態を検出する。ＯＳ１８０は、次のスレッドおよびアドレス・ポインタ・ロックが自動ロック・トレース方法の開始時にセットされた基準のリストに遭遇したかどうかを判断し、自動的にＳＭＰロック・トレース捕捉を開始する。【選択図】図１
2011103122.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサ・システムにおける実行プログラムの特定のスレッドが所定のスピン閾値に達したときをロック・テスト・ツールにより決定するステップと、
前記特定のスレッドが前記所定のスピン閾値に達したことに応答して、前記ロック・テスト・ツールによりロック・トレース・オペレーションを開始するステップと
を含む、テストする方法。
【請求項２】
前記特定のスレッドは、他のスレッドがメモリ・ロケーションにおいて第１ロックを施しているときには、前記メモリ・ロケーションをアクセスするのを待つ、請求項１に記載の方法。
【請求項３】
前記ロック・テスト・ツールは、対称マルチプロセッサ・システムのオペレーティング・システムに含まれる、請求項１に記載の方法。
【請求項４】
前記ロック・テスト・ツールは、テストのために指定された、前記第１ロックを含むロックのリストを格納する、請求項２に記載の方法。
【請求項５】
前記第１ロックが前記ロックのリストに含まれるかどうかを判断するために前記ロック・テスト・ツールによりテストを行うステップを更に含み、
前記ロック・テスト・ツールは、前記特定のスレッドが前記所定のスピン閾値に達したとき、前記ロック・トレース・オペレーションを開始し、前記特定のスレッドは、前記第１ロックが前記ロックのリストに含まれる場合、前記第１ロックの所有権を要求する、請求項４に記載の方法。
【請求項６】
前記ロック・テスト・ツールは、前記特定のスレッドが単位期間当たりの所定トレース数を超えていない場合、前記ロック・トレース・オペレーションを開始する、請求項１に記載の方法。
【請求項７】
前記ロック・テスト・ツールは、前記ロック・トレース・オペレーションにおいて単位期間当たり捕捉すべきトレースの最大数を入力として受け取る、請求項１に記載の方法。
【請求項８】
マルチプロセッサ・システムと、
前記マルチプロセッサ・システムに結合され、ロック・トレーシング・ツールと共に構成されたメモリと
を含み、前記ロック・トレーシング・ツールは、
前記マルチプロセッサ・システムにおける実行プログラムの特定のスレッドが所定のスピン閾値に達したときを決定し、
前記特定のスレッドが前記所定のスピン閾値に達したことに応答してロック・トレース・オペレーションを開始する
情報処理システム。
【請求項９】
前記特定のスレッドは、他のスレッドがメモリ・ロケーションにおいて第１ロックを施しているときには前記メモリ・ロケーションをアクセスするのを待つ、請求項８に記載の情報処理システム。
【請求項１０】
前記メモリは、前記ロック・トレーシング・ツールを含むオペレーティング・システムと共に更に形成される、請求項８に記載の情報処理システム。
【請求項１１】
前記ロック・テスト・ツールは、テストのために指定された、前記第１ロックを含むロックのリストをその一部として含む、請求項９に記載の情報処理システム。
【請求項１２】
前記ロック・テスト・ツールは、前記特定のスレッドが前記所定のスピン閾値に達したとき、前記ロック・テスト・ツールが前記ロック・トレース・オペレーションを開始するように、前記第１ロックが前記ロックのリストに含まれているかどうかを判断するテストを行い、前記第１ロックが前記ロックのリストに含まれている場合には前記特定のスレッドが前記第１ロックの所有権を要求する、請求項１１に記載の情報処理システム。
【請求項１３】
前記ロック・テスト・ツールは、前記特定のスレッドが単位期間当たりの所定トレース数を超えていない場合、前記ロック・トレース・オペレーションを開始する、請求項８に記載の情報処理システム。
【請求項１４】
前記ロック・テスト・ツールは、前記ロック・トレース・オペレーションにおいて単位期間当たり捕捉すべきトレースの最大数を入力として受け取る、請求項８に記載の情報処理システム。
【請求項１５】
コンピュータ操作可能媒体に格納されたコンピュータ・プログラムであって、
マルチプロセッサ・システムにおける実行プログラムの特定スレッドが所定のスピン閾値に達したときを決定する命令と、
前記特定スレッドが前記所定のスピン閾値に達したことに応答してロック・トレース・オペレーションを開始する命令と
を含む、コンピュータ・プログラム。
【請求項１６】
前記特定スレッドは、他のスレッドがメモリ・ロケーションにおいて第１ロックを施しているために前記メモリ・ロケーションをアクセスするのを待つ、請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
テストを指定されたロックのリストを格納する命令を更に含み、前記第１ロックが前記ロックのリストに含まれる、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記特定スレッドが前記所定のスピン閾値に達したときに前記ロック・トレース・オペレーションが開始し、前記第１ロックが前記ロックのリストに含まれている場合には前記特定スレッドが前記第１ロックの所有権を要求するように、前記第１ロックが前記ロックのリストに含まれているかどうかを判断するテストを行う命令を更に含む、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記特定スレッドが単位期間当たりの所定トレース数を超えていない場合、ロック・トレース・オペレーションを開始させる命令を更に含む、請求項１５に記載のコンピュータ・プログラム。
【請求項２０】
前記ロック・トレース・オペレーションにおいて単位期間当たり捕捉すべきトレースの最大数を入力として受け取る命令を更に含む、請求項１５に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にいえば、情報処理システム（ＩＨＳ）に関し、特に、ソフトウェア・パフォーマンス分析のためのロック・トレーシング機能を含むＩＨＳに関する。
【背景技術】
【０００２】
最新の情報処理システム（ＩＨＳ）におけるソフトウェア・アプリケーション・プログラム・パフォーマンスの最適化は、多くの場合、複雑なプロセスである。アプリケーション・プログラムのこの最適化は、広大なテストを必要とすることが多い。１つの有用なテストは、対称マルチプロセッサ（ＳＭＰ）情報処理システム（ＩＨＳ）のようなマルチプロセッサの設計においてプロセッサのプロセスまたはスレッドのソフトウェア・ロック・トレーシングを含む。システム管理者、ソフトウェア・プログラマ、または他のユーザは、複数のプロセスが特定のデータまたは特定のメモリ・アドレス・ポインタへのアクセスを要求するときに生じるソフトウェア・ロックの評価を希望することがある。ソフトウェア・ロック中、ユーザは、かなりのシステム・リソースの消費を必要とするロックに関するパフォーマンス情報を希望することがある。ソフトウェア・ロック中、ソフトウェア・ロックを更に詳細に理解するに当たりユーザの助けとなり得るシステム情報を捕捉するために、ユーザはロック・トラッキング・プログラムを実行し得る。
【０００３】
システム管理者、ソフトウェア・プログラマ、ユーザ、または他のエンティティがソフトウェア・ロック・トレーシングのために使用する1つの方法は、対称マルチプロセッサ（ＳＭＰ）ＩＨＳのような特定のプロセッサ・システムにおけるアプリケーション・プログラム実行中の特定の時点でロック・トレーシング・プログラムを手操作で開始させることを含む。ロック・トレーシング・プログラムは、ＳＭＰ-ＩＨＳがプロセスまたはスレッドの実行中にロックするメモリ・アドレス・ポインタのような情報をユーザに提供し得る。ロック・トレーシング・プログラムは、更に、ロックが正しい位置にある期間と、ロックが所与の期間中に生じる回数と、多くの他のロック・トレース・パラメータとを決定し得る。このように、ユーザは、アプリケーション・プログラムの実行のパフォーマンスを向上させたい場合、ロック・トレーシング・ソフトウェア情報を評価し得る。ＳＭＰシステムでは、ＳＭＰロック・トレースは、特定のアプリケーション・プログラムがＳＭＰ-ＩＨＳにおいて実行中に遭遇したパフォーマンス問題の詳細をユーザに提供する。ソフトウェア・ロック・トレーシングは、アプリケーション・プログラムの実行中にＳＭＰ-ＩＨＳのオペレーティング・システム（ＯＳ）におけるソフトウェア・リソースのような重要なリソースを消費することもある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、ソフトウェア・パフォーマンス分析のためのロック・トレーシング機能を含む情報処理システムを提供することにある。
【課題を解決するための手段】
【０００５】
従って、1つの実施例では、マルチプロセッサ・システムにおける実行プログラムの特定スレッドが所定のスピン閾値に達したときをロック・テスト・ツールにより決定するステップを含むテスト方法が開示される。その方法は、更に、特定のスレッドが所定のスピン閾値に達したことに応答して、ロック・トレース・オペレーションをロック・テスト・ツールにより開始させるステップも含む。
【０００６】
別の実施例では、マルチプロセッサ・システムを含む情報処理システム（ＩＨＳ）が開示される。マルチプロセッサ・システムにはメモリが結合されている。メモリは、マルチプロセッサ・システムにおける実行プログラムの特定スレッドが所定のスピン閾値に達したときを決定するロック・トレーシング・ツールと共に構成される。ロック・トレーシング・ツールは、特定のスレッドが所定のスピン閾値に達したことに応答して、ロック・トレース・オペレーションを開始する。
【０００７】
更に別の実施例では、コンピュータ・プログラムが開示される。そのコンピュータ・プログラムはコンピュータ操作可能媒体に格納される。そのコンピュータ・プログラムは、マルチプロセッサ・システムにおける実行プログラムの特定のスレッドが所定のスピン閾値に達したときを決定する命令を含む。そのコンピュータ・プログラムは、更に、特定のスレッドが所定のスピン閾値に達したことに応答してロック・トレース・オペレーションを開始する命令を含む。
【図面の簡単な説明】
【０００８】
【図１】図１は、開示されたＳＭＰロック・トレーシング方法を含む情報処理システム（ＩＨＳ）のブロック図である。
【図２】図２は、開示されたＳＭＰロック・トレーシング方法が使用する代表的なトレース・テーブルのデータの詳細を示すブロック図である。
【図３】図３は、開示されたＳＭＰロック・トレーシング方法を使用するときの、図１のＩＨＳ内のプロセス・フローを示すフローチャートである。
【発明を実施するための形態】
【０００９】
開示された情報処理システム（ＩＨＳ）の１つの実施例は、ロック・トレーシング・ソフトウェアを実行するオペレーティング・システム（ＯＳ）を使用する。多数のＣＰＵ、プロセッサ、またはプロセッサ・コアを備えたサーバのようなＩＨＳにおけるソフトウェア・パフォーマンスの最適化は、ユーザにとって特に挑戦事項となり得る。そのような困難に遭遇する１つのシステムは対称マルチプロセッサ（ＳＭＰ）システムである。ＳＭＰシステムは、それぞれが共通メモリまたはデータ記憶機構を共用する多数のプロセッサまたはプロセッサ・コアを含む。ＳＭＰソフトウェア・ロックは、ＳＭＰ-ＩＨＳにおいて実行中のアプリケーション・プログラムに対してパフォーマンス制限を提示し得る。
【００１０】
ＳＭＰロックは、複数のプロセッサと、複数のスレッドと、データ・アドレス・ポインタに関する複数のロックまたはリクエストとの間の種々の関係を理解しようとするユーザに対する複雑な挑戦を提示する。ロックは、一般に、スレッドが特定のメモリ・ロケーションにおいてデータを読取る、書込む、または修正するようにリクエストを行うときに生じる。オペレーティング・システム（ＯＳ）ソフトウェアは、一時に１つの、しかも１つだけのスレッドが特定のデータ・メモリ・アドレス・ポインタを所有または制御することを保証するために、ロックを行う。そのように、ＯＳは、特定のメモリ・アドレス・ポインタの多くのスレッド衝突を回避し、従って、特定のメモリ・ロケーションにおける衝突を回避する。適切なロックがない場合、１つのスレッドが特定のメモリ・ロケーションを修正し得るし、一方、次のスレッドが同じ特定のメモリ・ロケーションを順序不同に修正し得る。
【００１１】
ロック・トレーシング・ソフトウェアのようなソフトウェア・ツールは、パフォーマンスを制限し得る特定のＳＭＰロックに関する細部を提供するためにアプリケーション・プログラムがＳＭＰシステムにおいて実行されているとき、そのアプリケーション・プログラムのトレースを捕捉する。複製することが容易なロックの問題を分析するためにロック・トレーシング・ツールを使用することは簡単である。しかし、断続的なＳＭＰロックの問題を予測することは大きな挑戦をユーザに与える。ユーザが断続的なロックの問題を捕捉するために使用し得る１つの方法は、ユーザが連続的なロック・トレーシングを適用することである。連続的なロック・トレーシングは、パフォーマンス向上情報をユーザに提供し得る。しかし、ロック・トレースは莫大な量の詳細情報を含み得るし、従って、短期間に非常に大きなロック・トレーシング・データを作成し、従って、この方法を望ましくないものにし得る。例えば、ロック・トレーシングは大量のプロセッサ・サイクルを消費し、ＳＭＰ-ＩＨＳのようなテスト中のシステムのパフォーマンスを低下させる。更に、ロック・トレーシングは、大きなトレース出力ファイルを生成する。ユーザが連続的なロック・トレーシングを使用する場合、捕捉のために断続的な問題が生じるかなり前に、一般にはトレース・バッファ・メモリが満杯になるであろう。
【００１２】
上記の問題を解決するための開示された方法は、特定の問題が生じるとき、ロック・トレースを自動的に開始するステップを含む。後述の１つの実施例は、問題のロックが生じるとき、ロック・トレース捕捉の自動トリガを行う。その問題が解決または終了するとき、同じＳＭＰロック・トレーシング方法がロック・トレースを自動的に解除または終了する。例えば、プロセスまたはスレッドがメモリ・ポインタＡのような特定のメモリ・アドレス・ポインタにおけるロックを望むとき、プロセスまたはスレッドはＡをロックすることを望む。ＯＳがロックＡを行い得ない場合、そのロックを要求するスレッドは、そのロックが利用可能になるまでスピンするかまたは持続し始める。ＯＳは、特定のスレッドがスピンする時間の量、またはロックが終わるのを待つ時間の量を測定し得る。
【００１３】
スレッドがスピンすることまたは所定の最大時間量を待つということをＯＳが決めるとき、スレッドは「MAXSPIN」に達する。ＯＳは、スレッドがスピンすることまたはロックが利用可能になるのを待つことを可能にするために上部閾値「MAXSPIN」を使用する。スレッドが閾値「MAXSPIN」に達したことに応答して、ＯＳまたはそのＩＨＳの他の要素が、スピンしているスレッドをスリープ状態にするであろう。MAXSPINに達した後でスレッドをスリープ状態にすることはロック・トレーシング・パフォーマンス問題を表示し、ロック・トレース・データ捕捉を自動的に始めるための効果的なトリガ・ポイントを提供する。
【００１４】
下記の表１に示されるようにSEQ CHAPTER \h \r 1SEQ CHAPTER \h \r 1SEQ CHAPTER \h \r 1、システム管理者または他のエンティティは、ＳＭＰ-ＩＨＳのキーボードまたは他の入力装置において「autolocktrace」コマンド・ライン・エントリを入力し得る。autolocktraceコマンドは、ロックＡのような特定のロックに対するロック・トレースを可能にする。例えば、複数のスレッドがロックＡを要求するとき、２番目のまたは次のスレッドは、そのロックＡが利用可能になるかまたは次のスレッドがスリープ状態になるまでスピンまたは待機し始める。
【表１】
2011103122.tif 000003
【００１５】
autolocktraceコマンドは、arg １、arg ２、・・・argＰのような複数の引数を含み得る。なお、Ｐは、autolocktraceコマンドにおける引数の総数に相当する。図２において更に詳細に示されるように、autolocktraceの引数は、種々のロック・トレース・パラメータのための開示されたＳＭＰロック・トレーシング方法への入力を含み得る。例えば、そのような引数の１つは、ロックＡまたは他のロックのようなトレースすべき特定の１つまたは複数のロックを含み得る。他の引数は、トレース・バッファ・サイズおよび１日当たりのまたは他の期間当たりの実行すべきトレースの最大数を含む。他の引数は、１ロック当たりの最大トレースおよび総トレースの最大数を含み得る。他の引数および上記引数における変形は、autolocktraceコマンドの範囲内で、実行中のプログラム・アプリケーションのロック・トレーシングをサポートし得る。代表的なロック・トレーシングの引数が、図２を参照して更に詳細に後述される。表１は、更に、ディセーブル・ロック・トレース・コマンド、またはコマンド・スイッチ、即ち、「autolockdisable」を示す。そのコマンドは、ユーザ入力に応答して、autolocktraceコマンドによるautolocktraceフィーチャの開始後、そのautolocktraceフィーチャをディセーブルする。
【００１６】
ロック・トレース・コマンド「autolocktrace」のエントリは、MAXSPIN状態の発生に応答してロック・トレーシングを自動的にトリガして開始するに適した状態にＯＳを置く。１つの実施例で、このコマンドがない場合、自動ロック・トレーシングは生じない。オペレーティング・システムＯＳがMAXSPINとして決定する所定の時間量の間、特定のスレッドが待機またはスピンするとき、MAXSPINが生じる。特定のＯＳは、MAXSPINの数をマイクロ秒、秒、または他の所定の基準で指定し得る。開示されたＳＭＰロック・トレーシング方法の他の実施例では、ＯＳは、特定のスレッド、ロック、または他の基準と関連付けるために複数のMAXSPIN時間カウントを使用し得る。
【００１７】
特定のスレッドがそれぞれの所定のMAXSPIN値に達したとき、ＯＳは、事象リストと共にその特定のスレッドを登録することによって、その特定のスレッドをスリープ状態にする。事象リストは、そのスレッドのロック要件に遭遇するかまたはその要件が解放されるとき、その後に喚起する機能をそのスレッドに与える。１つの実施例では、autolocktraceコマンドは、一緒に登録し且つautolocktraceコマンドの引数が要求するアクションを遂行するスレッドに対する事象リストをＯＳが監視することを可能にする。ＯＳは、MAXSPINのようなスレッド状態を監視するために、および開示されたＳＭＰロック・トレーシング方法をサポートするためにＯＳカーネルを使用し得る。
【００１８】
図１は、開示されたＳＭＰロック・トレーシング方法を使用し得る対称マルチプロセッサ（ＳＭＰ）システム１００のようなＳＭＰ情報処理システム（ＩＨＳ）を示す。その場合、ＳＭＰシステム１００は、ＳＭＰロック・トレーシング・パフォーマンス評価プロセスに適用する後述の図３のフローチャートにおける機能ブロックを実行する。
【００１９】
ＳＭＰ-ＩＨＳ１００は、バス１１０に結合した対称マルチプロセッサ１０５を含む。ＳＭＰ１０５は、プロセッサ１、プロセッサ２、・・・プロセッサＮのような複数のプロセッサを含み得る。この場合、Ｎはプロセッサの総数である。各プロセッサは、複数の中央処理装置（ＣＰＵ）またはコアを含み得る。このように、ＳＭＰ１０５は、アプリケーション・プログラム１９０のような１つまたは複数のアプリケーション・ソフトウェア・プログラム内の複数のプロセスまたはスレッドの実行を可能にする。
【００２０】
メモリ・コントローラ１１５がバス１１０に結合している。メモリ・バス１２０がシステム・メモリ１２５をメモリ・コントローラ１１５に結合している。システム・メモリ１２５はメモリ・ストアの一形体である。ビデオ・グラフィックス・コントローラ１３０がディスプレイ１３５をバス１１０に結合している。ＳＭＰ-ＩＨＳ１００は、ハード・ディスク・ドライブ、ＣＤドライブ、ＤＶＤドライブのような不揮発性記憶装置１４０、またはＳＭＰ-ＩＨＳ１００に情報の永続的記録媒体を提供するためにバス１１０に結合した他の不揮発性記憶装置を含む。不揮発性記憶装置１４０はデータ・ストアの一形体である。キーボードおよびマウス・ポインティング装置のようなＩ／Ｏ装置１５０が、Ｉ／Ｏバス１５５およびＩ／Ｏコントローラ１６０を介してバス１１０に結合している。
【００２１】
ＵＳＢ、ＩＥＥＥ１３９４バス、ＡＴＡ、ＳＡＴＡ、ｅＳＡＴＡ、ＰＣＩ、ＰＣＩＥ，および他のバスのような１つまたは複数の拡張バス１６５がＳＭＰ-ＩＨＳ１００への周辺装置およびデバイスの接続を容易にするためにバス１１０に結合している。ＳＭＰ-ＩＨＳ１００が配線または無線で他のネットワーク装置に接続することを可能にするために、ネットワーク・インターフェース１７０がバス１１０に結合している。ＳＭＰ-ＩＨＳ１００は多くの形体をとり得る。例えば、ＳＭＰ-ＩＨＳ１００は、デスクトップ、サーバ、ポータブル、ラップトップ、ノートブック、もしくは他の形体のコンピュータ、またはデータ処理システムの形体をとり得る。ＳＭＰ-ＩＨＳ１００は、更に、携帯情報端末（ＰＤＡ）、ゲーム装置、携帯電話装置、通信装置、またはプロセッサおよびメモリを含む他の装置のような他の形体をとり得る。
【００２２】
ＳＭＰ-ＩＨＳ１００は、コンパクト・ディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、フロッピ・ディスク、外部ハード・ディスク、またはコンピュータ・プログラム製品（ＣＰＰ）１０２のような仮想的に任意のデジタル記憶媒体を使用し得る。ＣＰＰ１２０は、オペレーティング・システム（ＯＳ）１８０を包含するソフトウェアを格納する。ユーザまたは他のエンティティは、アプリケーション１９０を使用する前に、カーネル１８５を具備したＯＳ１８０のようなソフトウェアをＳＭＰ-ＩＨＳ１００にインストールする。デジグネーションズＯＳ１８０'およびカーネル１８５'は、ＳＭＰ-ＩＨＳ１００の不揮発性記憶装置１４０におけるインストール後、ＯＳ１８０およびカーネル１８５と呼ばれる。デジグネーションズＯＳ１８０"およびカーネル１８５"は、ＳＭＰ-ＩＨＳ１００がロック・トレーシング機能ソフトウェアと共にオペレーティング・システムＯＳを実行のためにシステム・メモリ１２５にロードした後、ＯＳ１８０およびカーネル１８５と呼ばれる。ユーザは、外部媒体、外部Ｉ／Ｏバス１５５、およびネットワーク・インターフェース１７０のような他のソースからシステム・メモリ１２５にアプリケーション・プログラム１９０をロードし得る。
【００２３】
ＳＭＰ-ＩＨＳ１００は、そのＩＨＳのプロセッサまたはプロセッサ・コアがプロセスまたはスレッド・ロック・パフォーマンスを評価することを可能にする記憶装置１０２におけるＯＳ１８０のようなオペレーティング・システム（ＯＳ）を含む。特に、ＯＳ１８０は、開示されたＳＭＰロック・トレーシング方法に対するＯＳ１８０のロック・トレーシング機能を促進するカーネル１８５を含む。例えば、ＯＳ１８０は、アプリケーション・プログラムが、ＩＨＳ１００上で実行時にそのアプリケーション・プログラムの特定のスレッドが所定のMAXSPIN閾値に達したときを決定するためにカーネル１８５を使用する。カーネル１８５は、上記の表１に示されるautolocktraceコマンドのコマンド・ライン・エントリに応答して活性化する。カーネル１８５は、実行中のアプリケーション・プログラムの特定のアクティブ・プロセスまたはスレッドに対するMAXSPIN事象の発生時に開始するように自動ロック・トレースをトリガし得る。システム・メモリ１２５は、ＩＨＳ １００がＳＭＰロック評価の目的で実行されることをシステム管理者、ユーザ、または他のエンティティが望んでいる代表的なアプリケーション・プログラム１９０を含む。
【００２４】
当業者には明らかなように、ＯＳ１８０のロック・トレーシング方法の諸態様は、システム、方法、またはコンピュータ・プログラムとして具現化され得る。従って、本発明の諸態様は、全体的にハードウェアの実施例、全体的にソフトウェアの実施例（ファームウェア、駐在ソフトウェア、マイクロコード等を含む）、または、本明細書では「回路」、「モジュール」、もしくは「システム」として一般的に呼ばれているソフトウェア態様およびハードウェア態様を組み合わせた実施例の形体をとり得る。更に、本発明の諸態様は、コンピュータ可読プログラム・コードとして具現化された１つまたは複数のコンピュータ可読媒体に組み込まれたＣＰＰ１０２のようなコンピュータ・プログラム製品の形体をとり得る。
【００２５】
1つまたは複数のコンピュータ可読媒体の任意の組み合わせを利用することも可能である。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。例えば、コンピュータ可読記憶媒体は、電子的、磁気的、光学的、電磁気的、赤外線、もしくは半導体システム、装置、またはデバイス、或いは上記のものの任意の適切な組み合わせであってもよいが、それらに限定されない。コンピュータ可読記憶媒体の更に特殊な例（非網羅的なリスト）は、次のようなもの、即ち、１つまたは複数の配線、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、光学的記憶装置、磁気記憶装置、または上記のものの任意の適切な組み合わせを含むであろう。本明細書に関連して、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して、使用するためのプログラムを含み得るまたは格納し得る任意の実体的な媒体であってもよい。コンピュータ可読媒体上に具現化されたプログラム・コードは、無線、有線、光通信ケーブル、ＲＦ等、または、それらの任意の適切な組み合わせを含むが、それらに限定されない。
【００２６】
本発明の実施態様に関するオペレーションを実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、Ｃ++等のようなオブジェクト指向プログラミング言語、「Ｃ」プログラミング言語のような一般的なプロシージャ型プログラミング言語、または同様のプログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで書かれたものでもよい。そのプログラム・コードは、ユーザのコンピュータにおいて全体的に、独立型パッケージ・ソフトのようにユーザのコンピュータにおいて部分的に、ユーザのコンピュータにおいて部分的におよびリモート・コンピュータにおいて部分的に、またはリモート・コンピュータまたはサーバにおいて全体的に実行されてもよい。後述するように、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得るし、外部コンピュータへの接続は（例えば、インターネット・サービス・プロバイダを使ってインターネットにより）行なわれ得る。
【００２７】
本発明の実施態様は、本発明の諸実施例に従って方法、装置(システム)、およびコンピュータ・プログラムのフローチャートおよび／またはブロック図に関連して後述される。図３のフローチャートおよび／またはブロック図の各ブロック、並びにそのフローチャートのおよび／またはブロック図におけるブロックの組み合わせがコンピュータ・プログラム命令によって具現化され得るということは当然である。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、図３のフローチャートにおいて指定された機能／行為および／またはブロック図のブロックを具現化するための手段を作成するというようなマシンを形成するように、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供され得る。
【００２８】
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納された命令が、フローチャートにおいて指定された機能／行為、および／またはブロック図のブロックを具現化する命令を含む製造物を形成するというような特定の方法で機能するように、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに指示し得るコンピュータ可読媒体に格納されてもよい。
【００２９】
コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル装置において実行される命令が、後述される図３のフローチャートにおいて指定された機能／行為を具現化するためのプロセスを提供するようなコンピュータで具現化されるプロセスを形成するように、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上で一連の動作ステップを遂行させるために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ得る。
【００３０】
図３のフローチャートは、本発明の種々の実施例に従って、システム、方法、およびコンピュータ・プログラムの可能な実施態様のアーキテクチャ、機能、およびオペレーションを示す。この点に関して、図３のフローチャートにおける各ブロックは、指定された論理機能を具現化するための１つまたは複数の実行可能な命令を含むコードのモジュール、セグメント、または、一部分を表し得る。或る代替実施態様では、ブロック内に記された機能が図３に記された順序から外れて起こり得るということに留意されたい。例えば、連続して示された２つのブロックが実際にはほぼ同時に実行されることがあり、時には、関連する機能に依存して、逆の順序で実行されることがある。更に、図３の各ブロック並びにブロック図および／またはフローチャートにおけるブロックの組み合わせが、指定された機能または行為を遂行する特殊目的のハードウェア・ベースのシステム、或いは特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって具現化され得る。
【００３１】
システム管理者、ユーザ、または他のエンティティは、アプリケーション・プログラム１９０の実行のパフォーマンス評価中、ＳＭＰ-ＩＨＳ１００のＯＳ１８０を使用し得る。マルチプロセッサ環境では、アプリケーション・プログラムの複数のプロセスまたはスレッドが、システム・メモリ１２５または他のメモリ記憶領域が維持する共通の情報へのアクセスを非常に頻繁に要求する。例えば、特定のスレッドＡが、メモリ１２５におけるアドレスを指すアドレス・ポインタＡにおいてロックＡを得ることがある。それは、スレッドＡがスレッドＢのような別のまたは次のスレッドによるコリジョンまたは上書きに関する懸念なしにアドレス・ポインタＡのデータへのフル・アクセスを行うことを可能にする。次のスレッドＢが同じロック即ちロックＡを要求する場合、ＯＳ１８０は、次のスレッドＢがロックＡを得ることを許さず、ロックＡが利用可能になるまで次のスレッドＢがスピンする。この例で、ロックＡは、特定のスレッドＡおよび次のスレッドＢの間で共用するためにロックになる。ロックＡを要求する第１のスレッドがそのロックを受け取り、スレッドＢのような任意の次のスレッドが、特定のスレッドＡがそのロックを解放した後でロックＡを得る。
【００３２】
ＯＳ１８０が決定する時間量に対する次のスレッドＢのスピンが所定の値MAXSPIN以上である場合、ＯＳ１８０はスレッドＢをスリープ状態にする。このスリープ状態は、アプリケーション・プログラム１９０の実行における潜在的なパフォーマンス上の問題の一例である。ＯＳ１８０はMAXSPIN状態を自動的に検知し、そのステータスをＯＳ１８０に報告するためにカーネル１８５を使用する。システム管理者、ユーザ、または他のエンティティが表１に示されたようなautolocktraceコマンドをイネーブルする場合、そのMAXSPIN事象はロック・トレースをトリガして開始し得る。ＯＳ１８０は、MAXSPIN事象に対してautolocktraceコマンドの引数を評価し、autolocktraceのトレース・パラメータ（図２）に遭遇するかどうかを判断する。その場合、ロック・トレースが始まり、更に詳細に後述するように、ＯＳ１８０が特定のロック状態を監視し、ロック・トレース・パラメータ・データをトレース・テーブル２００に格納する。
【００３３】
図２は、開示されたＳＭＰロック・トレーシング方法の遂行中にＳＭＰ-ＩＨＳ１００が使用し得る代表的なトレース・テーブル２００を示す。例えば、ＯＳ１８０は、ＳＭＰロック・トレーシング方法をサポートする情報を格納し得る。トレース・テーブル２００は、表１のautolocktraceコマンドによるその開示されたＳＭＰロック・トレーシング方法への入力としての情報、および、ＳＭＰロック・トレーシング方法の実行に起因する情報を含み得る。トレース・テーブル２００の縦行２１０は、トレース・パラメータ情報の横列１〜１２を示す。トレース・テーブル２００に存在するトレース・パラメータ・データが縦行２２０に示される。縦行２２０のトレース・パラメータは、autolocktraceコマンドの引数に従ってautolocktraceオペレーションが実行される条件またはパラメータを指定する。
【００３４】
開示示されたＳＭＰロック・トレーシング方法の一実施例では、縦行２３０は、縦行２２０の各対応するトレース・パラメータに対するトレース・パラメータ・データを示す。例えば、トレース・テーブル２００の横列１において、トレース・パラメータ「トレースにロックする（LOCKS TO TRACE）」は、アプリケーション・プログラム１９０の実行中ＯＳ１８０が監視するＳＭＰ-ＩＨＳ１００のロックを表わす。１つの例では、縦行２３０、横列１のように、「ロックＡ、ロックＢ（LOCK A、LOCKB）」は、ＯＳ１８０がアプリケーション・プログラム１９０のＳＭＰ-ＩＨＳ１００の実行中、ロックＡおよびロックＢにおいてロック・トレーシングを行うであろうということを表わす。ＳＭＰロック・トレーシング方法の別の実施例では、縦行２３０、横列１におけるパラメータ・データは「ブランク」または「エントリ無し」を表わす。その場合、ＯＳ１８０は、そのロック・データの欠落を、アプリケーション・プログラム１９０の実行に係るすべてのロックにおいてロック・トレーシングを行うという指示として、解釈し得る。上記の例では、トレース・テーブル２００は横列１、縦行２３０のトレース・パラメータ・データにロックを含まないので、ロックＣまたはロックＤ（図示されてない）のような他のロックはロック・トレース事象をトリガしないであろう。
【００３５】
トレース・テーブル２００は、横列２において「トレース・バッファ・サイズ（TRACE BUFFER SIZE）」に対するトレース・パラメータを含み、縦行２３０に見られるように「１００ＭＢ」の対応するトレース・パラメータ・データを含む。この例では、ＳＭＰ-ＩＨＳ１００は、開示されたＳＭＰロック・トレーシング方法の遂行中、ロック・トレース・データを収集するために、システム・メモリ１２５における１００ＭＢの総メモリ・リソースを割り振る。ＯＳ１８０は、所与の２４時間または１日においてトレースすべきロック・トレースの最大数を割り振り得る。例えば、トレース・テーブル２００の横列３に示されるように、トレース・パラメータ「１日当たりの最大トレース（MAXTRACES PER DAY）」は、「１００」トレースのトレース・パラメータ・データ値に相当する。この例では、ＯＳ１８０は、１日のＳＭＰ-ＩＨＳ１００のロック・トレース評価では、アプリケーション・プログラム１９０に対し総計１００のロック・トレースを超え得ない。
【００３６】
横列４において、トレース・テーブル２００は「１ロック当たりの最大トレース（MAX TRACES PER LOCK）」パラメータを含む。１つの例では、横列４および縦行２３０に示されるように、ＯＳ１８０は、「２０」のトレース・パラメータ・データを含み得る。その場合、ＯＳ１８０は、アプリケーション・プログラム１９０においてロック・トレーシングを実行し、いずれの特定のロックに対しても高々２０のトレースを格納または記録する。トレース・テーブル２００は、横列５において「最大の総トレース（MAX TOTAL TRACES）」として横列５および縦行２３０に示されるように「１０００」という対応するトレース・パラメータ・データ値を含む。その場合、ＯＳ１８０は、アプリケーション・プログラム１９０のパフォーマンス評価中、リセット、再スタート、または他の終了アクションまでに高々１０００のトレースしか実行しないであろう。
【００３７】
開示されたロック・トレーシング方法の実行中または遂行中、ＯＳ１８０はトレース・パラメータ・データを収集する。例えば、各特定のトレースの時間および日付、並びに他のそのようなトレース・パラメータ・データは、アプリケーション・プログラム１９０のパフォーマンス評価およびその結果として生じる強化にとって貴重なものとなり得る。トレース・テーブル２００は、トレース・パラメータおよびトレース・パラメータ・データのための横列６に、それぞれ、「トレース１の日付／時間（TRACE １ DATE/TIME）」および対応する「日付／時間の情報（DATE/TIME INFORMATION）」を含む。トレース・テーブル２００の横列６のデータは、開示されたＳＭＰロック・トレーシング方法の実行中、ＯＳ１８０が格納する情報を反映する。この例では、横列６は、ＯＳ１８０がアプリケーション・プログラム１９０の実行中に遭遇する第１ロック・トレースに対応し、それはロックＡ、ロックＢ、または任意の他の特定ロックに対応し得る。換言すれば、ロックＡ、ロックＢ、または他のロックは、アプリケーション・プログラム１９０がＳＭＰ-ＩＨＳ１００において実行中に遭遇する第１ロックになり得る。
【００３８】
ＯＳ１８０が横列６に示される「トレース１の日付／時間（TRACE １ DATE/TIME）」として第１のロック・トレース・データを捕捉した後、トレース・テーブル２００は、次のトレースのための日付/時間情報、即ち、横列７による「トレース２の日付／時間（TRACE２ DATE/TIME）」から、横列８による「トレースＭの日付／時間（TRACE M DATE/TIME）」までのための記憶装置を提供する。換言すれば、トレース・テーブル２００は、横列６〜８によって示されるようにトレース１〜トレースＭに対する日付／時間情報を格納する。なお、Ｍは、図２のテーブル２００に格納されたトレースの総数である。他の実施例では、トレース・テーブル２００の横列、縦行、または情報の位置の数は、特定のアプリケーションに従って変わり得る。アプリケーション・プログラム１９０の実行中、ＯＳ１８０は、実施されたトレースの数を追跡し得る。トレース・テーブル２００の横列９は、縦行２２０における「実施されたトレースの数（NUMBER OFTRACES TAKEN）」のトレース・パラメータを示し、縦行２３０において「２５」という対応するトレース・パラメータ・データ値を示す。この例では、ＯＳ１８０は、アプリケーション・プログラム１９０実行の特定の時点まで２５個のトレースを捕捉した。トレース・テーブル２００の横列９のような実施されたトレースの数は、アプリケーション・プログラム１９０が実行を継続し、この開示されたautolocktraceフィーチャを使って更なるトレースを行うにつれて増加し得る。
【００３９】
ＯＳ１８０は、各特定のロックに対して実施されたトレースの数を捕捉し得る。例えば、ロック１はロックＡのデータに対応し得る。横列１０に示されるように、トレース・テーブル２００は、縦行２２０において「ロック１のトレースの数（LOCK １ NUMBER OF TRACES）」を、および縦行２３０において「１５」という対応するトレース・パラメータ・データ値に含み得る。その場合、ＯＳ１８０が記録する第１のロック・トレースは、１５という実施されたトレースの数を示す。例えば、アプリケーション・プログラム１９０を実行するためにＯＳ１８０が捕捉する第１のロック・トレースがロックＡである場合、ロックＡのために実施されたロック・トレースの数は１５に等しい。その数は、ＯＳ１８０が実行し、アプリケーション・プログラム１９０に対するロック・トレース・データを捕捉し続けるにつれて増加する。トレース・テーブル２００の横列１０〜１２に示されるように、ＯＳ１８０はロック１〜ロックＬのトレース数のデータを捕捉し得る。なお、Ｌは捕捉されたトレースの総数である。トレース・テーブル２００の横列１１は、縦行２２０において「ロック２のトレースの数（LOCK ２ NUMBER OF TRACES）」のトレース・パラメータを示し、縦行２３０において「１０」という対応するトレース・パラメータ・データ値を示す。トレース・テーブル２００の横列１２は縦行２２０においてトレース・パラメータ「ロックＬのトレースの数（LOCK L NUMBER OF TRACES）」を示し、縦行２３０において「１０」という対応するトレース・パラメータ・データ値を示す。この例では、ＯＳ１８０は、アプリケーション・プログラム１９０の実行およびパフォーマンス評価中、ロック１〜ロックＬに対するロック・トレースの数を捕捉する。
【００４０】
ＯＳ１８０は、開示されたＳＭＰロック・トレーシング方法の結果のロック・トレース・パラメータ入力または出力のいずれかに対するＳＭＰロックのための他のパラメータをトレース・テーブル２００内の含み得る。ＯＳ１８０は、トレース・テーブル２００からのロック・トレース入力情報を使用して、ロック・トレースの実行に影響するパラメータを決定し得る。括弧２４０によって示された横列１〜５のようなトレース・テーブル２００からのこのロック・トレーシング入力は、上記の表１に示されるように、autolocktraceコマンドのエントリ中にシステム管理者または他のユーザによって入力された引数を反映し得る。対照的に、ＯＳ１８０は、開示されたＳＭＰロック・トレーシング方法の特定の結果を格納または記録するために、トレース・テーブル２００を使用し得る。例えば、括弧２５０によって示されたトレース・テーブル２００の横列６〜１２に示されるように、ＯＳ１８０は、ＳＭＰ-ＩＨＳ１００内で実行されるアプリケーション・プログラム１９０のためのトレース・パラメータ・データを記録し得る。ＯＳ１８０は、パフォーマンス評価のために、アプリケーション・プログラム１９０または他のプログラム・ソフトウェアを実行し得る。システム管理者、ユーザ、または他のエンティティは、トレース・テーブル２００の結果のような開示されたＳＭＰロック・トレーシング方法の結果を使用して、アプリケーション・プログラム１９０のパフォーマンス向上を達成するのに役立つかもしれない入力を提供し得る。
【００４１】
図３は、開示されたＳＭＰロック・トレーシング方法のためのアプリケーション・プログラム１９０の実行時におけるＯＳ１８０のソフトウェアのオペレーションを示すフローチャートである。詳しくいえば、図３のフローチャートは、ＯＳ１８０のカーネル１８５におけるロック・テスト・ツール３００が上記の開示されたテスト方法を実行するために取り得るステップを示す。その方法はブロック３０５によって開始する。１つの実施例では、システム管理者、ユーザ、または他のエンティティが、テスト・ツール３００によってアプリケーション・プログラム１９０のような特定のアプリケーション・ソフトウェア・プログラムに対してロック・トレースを行うためにＳＭＰ-ＩＨＳ１００のリソースを使用する。アプリケーション・プログラム１９０は、顧客のソフトウェア・アプリケーションであってもよく、或いはソフトウェア・パフォーマンスの向上または最適化を必要とする他のソフトウェア・アプリケーションであってもよい。特に、アプリケーション・プログラム１９０は、特定の顧客のアプリケーション・プログラム、設計テスト・プログラム、ベンチマーク・プログラム、または、ＳＭＰ-ＩＨＳ１００内での実行中にＳＭＰスレッドまたはプロセスを使用する他のソフトウェアであってもよい。
【００４２】
システム管理者、ソフトウェア・プログラマ、ユーザ、または他のエンティティが、ＯＳ１８０内のロック・トレーシングを開始する。１つの実施例では、ユーザがブロック３１０によってロック・トレーシングを開始するまたは可能にする。ユーザまたは他のエンティティが、上記の表１におけるようにＯＳ１８０内のautolocktraceコマンド・ライン・エントリを含むことによってロック・トレーシングを開始させてもよい。このロック・トレース・コマンド・エントリは、Ｉ／Ｏ装置１５０、ＯＳ１８０のソフトウェア内の手操作によるコマンド・ライン・エントリ、または他の方法を介して開始させ得る。ＳＭＰ-ＩＨＳ１００内のアプリケーション・プログラム１９０の実行中、ブロック３１５によって、スレッドＡがロックＡを得る。換言すれば、アプリケーション・プログラム１９０内で実行されるスレッドＡのような特定のプロセスまたはスレッドがロックＡを要求してそのロックＡの一時的所有を得る。例えば、スレッドＡは、ＳＭＰ-ＩＨＳ１００のシステム・メモリ１２５内に存在する情報の、メモリ・アドレス・ポインタＡにおけるアドレスをアクセスすることを望むことがある。スレッドＡはアドレス・ポインタＡの情報を使用しようとするが、ＯＳ１８０は他のプロセスまたはスレッドがアドレス・ポインタＡのデータをアクセスしないようにロックする。そのように、ＯＳ１８０はスレッドＡにロックＡを（即ち、メモリ・アドレス・ポインタＡのアクセスに関するロックを）提供する。
【００４３】
スレッドＡは、それが最早読取り、書込み、修正アクションのためにその情報へのアクセスを必要としなくなった後、ロックＡを解放し得る。しかし、他のスレッドは、スレッドＡがロックＡを解放する前にアドレスＡの情報へのアクセスを要求することがある。スレッドＡおよびスレッドＢはデータを共用し得るか、またはシステム・メモリ１２５のメモリ・アドレス・ポインタＡのデータのような共用データのアクセスを試み得る。別の実施例では、ＯＳ１８０は、レジスタ、キャッシュ・メモリ、ハード・ドライブ、またはＳＭＰ-ＩＨＳ１００の他のメモリ・ソースに対するアドレス・ポインタをマップし得る。アプリケーション・プログラム１９０の実行中に、スレッドＢはブロック３２０によってＯＳ１８０からロックＡを要求する。スレッドＡは既にロックＡを有するので、ＯＳ１８０はスレッドＢにロックＡを提供しない。スレッドＢはブロック３２５によってスピンを始めるか、または、ロックＡを待つ。換言すれば、スレッドＢはロックＡを要求してスピンするか、或いは、それがロックＡを得るかまたは別のアクションが生じるまで、そのままロックＡを要求し続ける。
【００４４】
MAXSPINは、スレッドが、スリープ状態に入る前に、ロックＡのような特定のロックを待つ時間量の特定の閾値を識別する。スレッドＢのようなスレッドは、ＯＳ１８０がそのスレッドおよびロックに対するMAXSPINと関連する時間内に、ロックＡのような特定のロックを得ることがあるし、得ないこともある。ＯＳ１８０のロック・テスト・ツール３００は、ブロック３３０によって、スレッドＢがMAXSPINに達したかどうかを判断するためのテストを行う。１つのケースでは、ブロック３３５によって、スレッドＢがMAXSPINに達せず、スレッドＡがロックＡを解放し、スレッドＢがロックＡを得る。この例では、ブロック３４０によって、ＯＳ１８０はロック・トレースを開始しない。一方、ＯＳ１８０は、スレッドＡを待つ間、ブロック３３０によって、スレッドＢがMAXSPINに達したことを決定し得る。その場合、スレッドＢはMAXSPINに達し、ブロック３４５によって、ＯＳ１８０はスレッドＢをスリープ状態にする。
【００４５】
ＯＳ１８０のロック・テスト・ツール３００は、ブロック３５０によって、ロックのリストに遭遇したかどうかを判断するためにテストを行う。換言すれば、ＯＳ１８０は、図２のトレース・テーブル２００の横列１に示される「トレースするためのロック（LOCKS TO TRACE）」のようなロックのリストに遭遇するかまたはそのリストが有効であるかどうかを判断する。１つの実施例では、トレース・テーブル２００のトレース・パラメータ・データ縦行２３０および横列１に示されるように、ロックのリストに遭遇しない場合、ブロック３４０によって、ＯＳ１８０はロック・トレースを開始しない。換言すれば、ＯＳ１８０は、ＳＭＰ-ＩＨＳ１００におけるアプリケーション・プログラム１９０の実行のために、autolocktraceコマンドに関する上記表１に示された引数のようなロック・トレースの目的を満足させない。別の言い方をすれば、ＯＳ１８０のテスト・ツール３００は、MAXSPINに達した特定のスレッド、即ち、スレッドＢが、ブロック３３０によって、トレース・テーブル２００におけるロックのリストに含まれているかまたはそのリストから除外されているかを判断するためにテストを行う。ロックのリストに対するテストに遭遇する場合、ブロック３７０によって、ＯＳ１８０はロック・トレース捕捉を開始する。例えば、ＯＳ１８０は、ロックＡのロック・トレース捕捉を開始し得る。ロック・トレース捕捉中、ブロック３８０によって、ＯＳ１８０はトレース・テーブル２００を更新する。トレース・テーブル２００に示されるように、ＯＳ１８０は、各トレースおよび次のロックに対する括弧２５０によって示された横列６〜１２のデータのようなトレース・パラメータ・データの集合を更新し得る。
【００４６】
ＯＳ１８０がブロック３８０によってトレース・テーブルを更新した後、またはＯＳ１８０がブロック３４０によってロック・トレースを開始しない場合、ブロック３９０によって、ＳＭＰ自動ロック・トレーシング方法は終了する。ユーザまたは他のエンティティは、将来のアプリケーション・プログラム１９０に関する実行のパフォーマンスを向上させる目的で、または他の目的で、ロックの特性を決定するためにトレース・テーブル２００のトレース・パラメータ・データに問い合わせ得る。トレース・テーブル２００は、アプリケーション・プログラム１９０のパフォーマンス向上または他の用途に寄与するように多くの形式および多数のフォーマットを取り得る。システム管理者または他のエンティティは、表１に示されたようなautolocktraceコマンドを用いてまたは自動ロック・トレースを達成するためにそのコマンドの修正を用いてＳＭＰロック・トレーシング方法を開始し得る。
【００４７】
以上は、ＳＭＰ-ＩＨＳが閾値MAXSPINに達するスレッドに対してＳＭＰロックを自動的に捕捉するための開示されたＳＭＰロック・トレーシング方法を使用する方法を教示している。ＯＳは、自動的にMAXSPIN状態を検知して更なるユーザ介入なく上記開示されたロック・トレーシング方法を開始させるために、カーネルを使用し得る。このロック・トレーシング方法は、任意の特定のロック・トレース捕捉の適格性を決定するために、その開示されたＳＭＰロック・トレーシング方法の開始時にユーザによりセットされた引数を問い合わせ得る。システム管理者は、特定のアプリケーション・プログラムのＳＭＰロック問題をより十分に理解するために、ＳＭＰロック・トレーシング方法の結果を使用し得る。システム管理者または他のエンティティは、ＯＳがアプリケーション・プログラムのパフォーマンス特性を修正するか或いは向上させるためにロック・トレース・テーブル内に格納するというようなＳＭＰロック・トレーシング方法の結果を利用し得る。
【００４８】
本明細書において使用された用語は、特定の実施例を説明することだけを目的とするものであり、本発明を限定することを意図するものではない。更に、本明細書において使用された用語「含む」は、記述された特徴、整数、ステップ、オペレーション、要素、および／またはコンポーネントの存在を明示しているが、１つまたは複数の他の特徴、整数、ステップ、オペレーション、要素、コンポーネントおよび／またはそれらのグループの存在または付加を排除しないといことは当然である。
【００４９】
「特許請求の範囲」の記載における対応する構造、材料、行為、および、すべての手段またはステップおよび機能の均等物は、詳しく請求項に記載の他の要素と結合してその機能を遂行するための任意の構造、材料、または行為を含むことを意図するものである。本発明に関する記述は例示および説明を目的として示され、それが網羅的であることおよび開示された形体の発明に限定されることを意図するものではない。本発明の技術的範囲および趣旨から逸脱することなく、多くの修正および変更が当業者には明らかであろう。実施例は、本発明の原理および実用的な応用例を最も良く説明するために、および、意図した特定の用途に適するように種々の修正を伴う種々の実施例に関して当業者が本発明を理解することを可能にするために、選択および記述された。
【図１】
2011103122.tif 000004
【図２】
2011103122.tif 000005
【図３】
2011103122.tif 000006