JP2011103122A - ロック・トレーシング機能を有する情報処理システム - Google Patents

ロック・トレーシング機能を有する情報処理システム Download PDF

Info

Publication number
JP2011103122A
JP2011103122A JP2010243524A JP2010243524A JP2011103122A JP 2011103122 A JP2011103122 A JP 2011103122A JP 2010243524 A JP2010243524 A JP 2010243524A JP 2010243524 A JP2010243524 A JP 2010243524A JP 2011103122 A JP2011103122 A JP 2011103122A
Authority
JP
Japan
Prior art keywords
lock
thread
trace
smp
list
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
JP2010243524A
Other languages
English (en)
Other versions
JP5763907B2 (ja
Inventor
David B Whitworth
デイビッド・ブレア・ホイットワース
Eric Philip Fried
エリック・フィリップス・フリード
Diane Garza Flemming
ダイアン・ガーザ・フレミング
Greg R Mewhinney
グレッグ・アール・メフィニー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2011103122A publication Critical patent/JP2011103122A/ja
Application granted granted Critical
Publication of JP5763907B2 publication Critical patent/JP5763907B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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
    • G06F11/3404Recording 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 for parallel or distributed programming
    • 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
    • G06F11/3409Recording 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 for performance assessment
    • 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
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】ソフトウェア・パフォーマンス分析のためのロック・トレーシング機能を含む情報処理システムを提供する。
【解決手段】対称マルチプロセッサ(SMC)システム100において、実行アプリケーション・プログラム190の特定スレッドがメモリ・アドレス・ポインタに対するロックを要求および獲得する。次のスレッドは、同じメモリ・アドレス・ポインタ・ロックを、特定スレッドがそのロックを解放する前に要求する。次のスレッドはスピンを開始し、アドレス・ポインタ・ロックの解放を待つ。次のスレッドが待ち時間の所定最大量(MAXSPIN)に達したとき、OS180のカーネル185がMAXSPIN状態を検出する。OS180は、次のスレッドおよびアドレス・ポインタ・ロックが自動ロック・トレース方法の開始時にセットされた基準のリストに遭遇したかどうかを判断し、自動的にSMPロック・トレース捕捉を開始する。
【選択図】図1

Description

本発明は、一般的にいえば、情報処理システム(IHS)に関し、特に、ソフトウェア・パフォーマンス分析のためのロック・トレーシング機能を含むIHSに関する。
最新の情報処理システム(IHS)におけるソフトウェア・アプリケーション・プログラム・パフォーマンスの最適化は、多くの場合、複雑なプロセスである。アプリケーション・プログラムのこの最適化は、広大なテストを必要とすることが多い。1つの有用なテストは、対称マルチプロセッサ(SMP)情報処理システム(IHS)のようなマルチプロセッサの設計においてプロセッサのプロセスまたはスレッドのソフトウェア・ロック・トレーシングを含む。システム管理者、ソフトウェア・プログラマ、または他のユーザは、複数のプロセスが特定のデータまたは特定のメモリ・アドレス・ポインタへのアクセスを要求するときに生じるソフトウェア・ロックの評価を希望することがある。ソフトウェア・ロック中、ユーザは、かなりのシステム・リソースの消費を必要とするロックに関するパフォーマンス情報を希望することがある。ソフトウェア・ロック中、ソフトウェア・ロックを更に詳細に理解するに当たりユーザの助けとなり得るシステム情報を捕捉するために、ユーザはロック・トラッキング・プログラムを実行し得る。
システム管理者、ソフトウェア・プログラマ、ユーザ、または他のエンティティがソフトウェア・ロック・トレーシングのために使用する1つの方法は、対称マルチプロセッサ(SMP)IHSのような特定のプロセッサ・システムにおけるアプリケーション・プログラム実行中の特定の時点でロック・トレーシング・プログラムを手操作で開始させることを含む。ロック・トレーシング・プログラムは、SMP-IHSがプロセスまたはスレッドの実行中にロックするメモリ・アドレス・ポインタのような情報をユーザに提供し得る。ロック・トレーシング・プログラムは、更に、ロックが正しい位置にある期間と、ロックが所与の期間中に生じる回数と、多くの他のロック・トレース・パラメータとを決定し得る。このように、ユーザは、アプリケーション・プログラムの実行のパフォーマンスを向上させたい場合、ロック・トレーシング・ソフトウェア情報を評価し得る。SMPシステムでは、SMPロック・トレースは、特定のアプリケーション・プログラムがSMP-IHSにおいて実行中に遭遇したパフォーマンス問題の詳細をユーザに提供する。ソフトウェア・ロック・トレーシングは、アプリケーション・プログラムの実行中にSMP-IHSのオペレーティング・システム(OS)におけるソフトウェア・リソースのような重要なリソースを消費することもある。
本発明の目的は、ソフトウェア・パフォーマンス分析のためのロック・トレーシング機能を含む情報処理システムを提供することにある。
従って、1つの実施例では、マルチプロセッサ・システムにおける実行プログラムの特定スレッドが所定のスピン閾値に達したときをロック・テスト・ツールにより決定するステップを含むテスト方法が開示される。その方法は、更に、特定のスレッドが所定のスピン閾値に達したことに応答して、ロック・トレース・オペレーションをロック・テスト・ツールにより開始させるステップも含む。
別の実施例では、マルチプロセッサ・システムを含む情報処理システム(IHS)が開示される。マルチプロセッサ・システムにはメモリが結合されている。メモリは、マルチプロセッサ・システムにおける実行プログラムの特定スレッドが所定のスピン閾値に達したときを決定するロック・トレーシング・ツールと共に構成される。ロック・トレーシング・ツールは、特定のスレッドが所定のスピン閾値に達したことに応答して、ロック・トレース・オペレーションを開始する。
更に別の実施例では、コンピュータ・プログラムが開示される。そのコンピュータ・プログラムはコンピュータ操作可能媒体に格納される。そのコンピュータ・プログラムは、マルチプロセッサ・システムにおける実行プログラムの特定のスレッドが所定のスピン閾値に達したときを決定する命令を含む。そのコンピュータ・プログラムは、更に、特定のスレッドが所定のスピン閾値に達したことに応答してロック・トレース・オペレーションを開始する命令を含む。
図1は、開示されたSMPロック・トレーシング方法を含む情報処理システム(IHS)のブロック図である。 図2は、開示されたSMPロック・トレーシング方法が使用する代表的なトレース・テーブルのデータの詳細を示すブロック図である。 図3は、開示されたSMPロック・トレーシング方法を使用するときの、図1のIHS内のプロセス・フローを示すフローチャートである。
開示された情報処理システム(IHS)の1つの実施例は、ロック・トレーシング・ソフトウェアを実行するオペレーティング・システム(OS)を使用する。多数のCPU、プロセッサ、またはプロセッサ・コアを備えたサーバのようなIHSにおけるソフトウェア・パフォーマンスの最適化は、ユーザにとって特に挑戦事項となり得る。そのような困難に遭遇する1つのシステムは対称マルチプロセッサ(SMP)システムである。SMPシステムは、それぞれが共通メモリまたはデータ記憶機構を共用する多数のプロセッサまたはプロセッサ・コアを含む。SMPソフトウェア・ロックは、SMP-IHSにおいて実行中のアプリケーション・プログラムに対してパフォーマンス制限を提示し得る。
SMPロックは、複数のプロセッサと、複数のスレッドと、データ・アドレス・ポインタに関する複数のロックまたはリクエストとの間の種々の関係を理解しようとするユーザに対する複雑な挑戦を提示する。ロックは、一般に、スレッドが特定のメモリ・ロケーションにおいてデータを読取る、書込む、または修正するようにリクエストを行うときに生じる。オペレーティング・システム(OS)ソフトウェアは、一時に1つの、しかも1つだけのスレッドが特定のデータ・メモリ・アドレス・ポインタを所有または制御することを保証するために、ロックを行う。そのように、OSは、特定のメモリ・アドレス・ポインタの多くのスレッド衝突を回避し、従って、特定のメモリ・ロケーションにおける衝突を回避する。適切なロックがない場合、1つのスレッドが特定のメモリ・ロケーションを修正し得るし、一方、次のスレッドが同じ特定のメモリ・ロケーションを順序不同に修正し得る。
ロック・トレーシング・ソフトウェアのようなソフトウェア・ツールは、パフォーマンスを制限し得る特定のSMPロックに関する細部を提供するためにアプリケーション・プログラムがSMPシステムにおいて実行されているとき、そのアプリケーション・プログラムのトレースを捕捉する。複製することが容易なロックの問題を分析するためにロック・トレーシング・ツールを使用することは簡単である。しかし、断続的なSMPロックの問題を予測することは大きな挑戦をユーザに与える。ユーザが断続的なロックの問題を捕捉するために使用し得る1つの方法は、ユーザが連続的なロック・トレーシングを適用することである。連続的なロック・トレーシングは、パフォーマンス向上情報をユーザに提供し得る。しかし、ロック・トレースは莫大な量の詳細情報を含み得るし、従って、短期間に非常に大きなロック・トレーシング・データを作成し、従って、この方法を望ましくないものにし得る。例えば、ロック・トレーシングは大量のプロセッサ・サイクルを消費し、SMP-IHSのようなテスト中のシステムのパフォーマンスを低下させる。更に、ロック・トレーシングは、大きなトレース出力ファイルを生成する。ユーザが連続的なロック・トレーシングを使用する場合、捕捉のために断続的な問題が生じるかなり前に、一般にはトレース・バッファ・メモリが満杯になるであろう。
上記の問題を解決するための開示された方法は、特定の問題が生じるとき、ロック・トレースを自動的に開始するステップを含む。後述の1つの実施例は、問題のロックが生じるとき、ロック・トレース捕捉の自動トリガを行う。その問題が解決または終了するとき、同じSMPロック・トレーシング方法がロック・トレースを自動的に解除または終了する。例えば、プロセスまたはスレッドがメモリ・ポインタAのような特定のメモリ・アドレス・ポインタにおけるロックを望むとき、プロセスまたはスレッドはAをロックすることを望む。OSがロックAを行い得ない場合、そのロックを要求するスレッドは、そのロックが利用可能になるまでスピンするかまたは持続し始める。OSは、特定のスレッドがスピンする時間の量、またはロックが終わるのを待つ時間の量を測定し得る。
スレッドがスピンすることまたは所定の最大時間量を待つということをOSが決めるとき、スレッドは「MAXSPIN」に達する。OSは、スレッドがスピンすることまたはロックが利用可能になるのを待つことを可能にするために上部閾値「MAXSPIN」を使用する。スレッドが閾値「MAXSPIN」に達したことに応答して、OSまたはそのIHSの他の要素が、スピンしているスレッドをスリープ状態にするであろう。MAXSPINに達した後でスレッドをスリープ状態にすることはロック・トレーシング・パフォーマンス問題を表示し、ロック・トレース・データ捕捉を自動的に始めるための効果的なトリガ・ポイントを提供する。
下記の表1に示されるようにSEQ CHAPTER \h \r 1SEQ CHAPTER \h \r 1SEQ CHAPTER \h \r 1、システム管理者または他のエンティティは、SMP-IHSのキーボードまたは他の入力装置において「autolocktrace」コマンド・ライン・エントリを入力し得る。autolocktraceコマンドは、ロックAのような特定のロックに対するロック・トレースを可能にする。例えば、複数のスレッドがロックAを要求するとき、2番目のまたは次のスレッドは、そのロックAが利用可能になるかまたは次のスレッドがスリープ状態になるまでスピンまたは待機し始める。
Figure 2011103122
autolocktraceコマンドは、arg 1、arg 2、・・・argPのような複数の引数を含み得る。なお、Pは、autolocktraceコマンドにおける引数の総数に相当する。図2において更に詳細に示されるように、autolocktraceの引数は、種々のロック・トレース・パラメータのための開示されたSMPロック・トレーシング方法への入力を含み得る。例えば、そのような引数の1つは、ロックAまたは他のロックのようなトレースすべき特定の1つまたは複数のロックを含み得る。他の引数は、トレース・バッファ・サイズおよび1日当たりのまたは他の期間当たりの実行すべきトレースの最大数を含む。他の引数は、1ロック当たりの最大トレースおよび総トレースの最大数を含み得る。他の引数および上記引数における変形は、autolocktraceコマンドの範囲内で、実行中のプログラム・アプリケーションのロック・トレーシングをサポートし得る。代表的なロック・トレーシングの引数が、図2を参照して更に詳細に後述される。表1は、更に、ディセーブル・ロック・トレース・コマンド、またはコマンド・スイッチ、即ち、「autolockdisable」を示す。そのコマンドは、ユーザ入力に応答して、autolocktraceコマンドによるautolocktraceフィーチャの開始後、そのautolocktraceフィーチャをディセーブルする。
ロック・トレース・コマンド「autolocktrace」のエントリは、MAXSPIN状態の発生に応答してロック・トレーシングを自動的にトリガして開始するに適した状態にOSを置く。1つの実施例で、このコマンドがない場合、自動ロック・トレーシングは生じない。オペレーティング・システムOSがMAXSPINとして決定する所定の時間量の間、特定のスレッドが待機またはスピンするとき、MAXSPINが生じる。特定のOSは、MAXSPINの数をマイクロ秒、秒、または他の所定の基準で指定し得る。開示されたSMPロック・トレーシング方法の他の実施例では、OSは、特定のスレッド、ロック、または他の基準と関連付けるために複数のMAXSPIN時間カウントを使用し得る。
特定のスレッドがそれぞれの所定のMAXSPIN値に達したとき、OSは、事象リストと共にその特定のスレッドを登録することによって、その特定のスレッドをスリープ状態にする。事象リストは、そのスレッドのロック要件に遭遇するかまたはその要件が解放されるとき、その後に喚起する機能をそのスレッドに与える。1つの実施例では、autolocktraceコマンドは、一緒に登録し且つautolocktraceコマンドの引数が要求するアクションを遂行するスレッドに対する事象リストをOSが監視することを可能にする。OSは、MAXSPINのようなスレッド状態を監視するために、および開示されたSMPロック・トレーシング方法をサポートするためにOSカーネルを使用し得る。
図1は、開示されたSMPロック・トレーシング方法を使用し得る対称マルチプロセッサ(SMP)システム100のようなSMP情報処理システム(IHS)を示す。その場合、SMPシステム100は、SMPロック・トレーシング・パフォーマンス評価プロセスに適用する後述の図3のフローチャートにおける機能ブロックを実行する。
SMP-IHS100は、バス110に結合した対称マルチプロセッサ105を含む。SMP105は、プロセッサ1、プロセッサ2、・・・プロセッサNのような複数のプロセッサを含み得る。この場合、Nはプロセッサの総数である。各プロセッサは、複数の中央処理装置(CPU)またはコアを含み得る。このように、SMP105は、アプリケーション・プログラム190のような1つまたは複数のアプリケーション・ソフトウェア・プログラム内の複数のプロセスまたはスレッドの実行を可能にする。
メモリ・コントローラ115がバス110に結合している。メモリ・バス120がシステム・メモリ125をメモリ・コントローラ115に結合している。システム・メモリ125はメモリ・ストアの一形体である。ビデオ・グラフィックス・コントローラ130がディスプレイ135をバス110に結合している。SMP-IHS100は、ハード・ディスク・ドライブ、CDドライブ、DVDドライブのような不揮発性記憶装置140、またはSMP-IHS100に情報の永続的記録媒体を提供するためにバス110に結合した他の不揮発性記憶装置を含む。不揮発性記憶装置140はデータ・ストアの一形体である。キーボードおよびマウス・ポインティング装置のようなI/O装置150が、I/Oバス155およびI/Oコントローラ160を介してバス110に結合している。
USB、IEEE1394バス、ATA、SATA、eSATA、PCI、PCIE,および他のバスのような1つまたは複数の拡張バス165がSMP-IHS100への周辺装置およびデバイスの接続を容易にするためにバス110に結合している。SMP-IHS100が配線または無線で他のネットワーク装置に接続することを可能にするために、ネットワーク・インターフェース170がバス110に結合している。SMP-IHS100は多くの形体をとり得る。例えば、SMP-IHS100は、デスクトップ、サーバ、ポータブル、ラップトップ、ノートブック、もしくは他の形体のコンピュータ、またはデータ処理システムの形体をとり得る。SMP-IHS100は、更に、携帯情報端末(PDA)、ゲーム装置、携帯電話装置、通信装置、またはプロセッサおよびメモリを含む他の装置のような他の形体をとり得る。
SMP-IHS100は、コンパクト・ディスク(CD)、デジタル多用途ディスク(DVD)、フロッピ・ディスク、外部ハード・ディスク、またはコンピュータ・プログラム製品(CPP)102のような仮想的に任意のデジタル記憶媒体を使用し得る。CPP120は、オペレーティング・システム(OS)180を包含するソフトウェアを格納する。ユーザまたは他のエンティティは、アプリケーション190を使用する前に、カーネル185を具備したOS180のようなソフトウェアをSMP-IHS100にインストールする。デジグネーションズOS180'およびカーネル185'は、SMP-IHS100の不揮発性記憶装置140におけるインストール後、OS180およびカーネル185と呼ばれる。デジグネーションズOS180"およびカーネル185"は、SMP-IHS100がロック・トレーシング機能ソフトウェアと共にオペレーティング・システムOSを実行のためにシステム・メモリ125にロードした後、OS180およびカーネル185と呼ばれる。ユーザは、外部媒体、外部I/Oバス155、およびネットワーク・インターフェース170のような他のソースからシステム・メモリ125にアプリケーション・プログラム190をロードし得る。
SMP-IHS100は、そのIHSのプロセッサまたはプロセッサ・コアがプロセスまたはスレッド・ロック・パフォーマンスを評価することを可能にする記憶装置102におけるOS180のようなオペレーティング・システム(OS)を含む。特に、OS180は、開示されたSMPロック・トレーシング方法に対するOS180のロック・トレーシング機能を促進するカーネル185を含む。例えば、OS180は、アプリケーション・プログラムが、IHS100上で実行時にそのアプリケーション・プログラムの特定のスレッドが所定のMAXSPIN閾値に達したときを決定するためにカーネル185を使用する。カーネル185は、上記の表1に示されるautolocktraceコマンドのコマンド・ライン・エントリに応答して活性化する。カーネル185は、実行中のアプリケーション・プログラムの特定のアクティブ・プロセスまたはスレッドに対するMAXSPIN事象の発生時に開始するように自動ロック・トレースをトリガし得る。システム・メモリ125は、IHS 100がSMPロック評価の目的で実行されることをシステム管理者、ユーザ、または他のエンティティが望んでいる代表的なアプリケーション・プログラム190を含む。
当業者には明らかなように、OS180のロック・トレーシング方法の諸態様は、システム、方法、またはコンピュータ・プログラムとして具現化され得る。従って、本発明の諸態様は、全体的にハードウェアの実施例、全体的にソフトウェアの実施例(ファームウェア、駐在ソフトウェア、マイクロコード等を含む)、または、本明細書では「回路」、「モジュール」、もしくは「システム」として一般的に呼ばれているソフトウェア態様およびハードウェア態様を組み合わせた実施例の形体をとり得る。更に、本発明の諸態様は、コンピュータ可読プログラム・コードとして具現化された1つまたは複数のコンピュータ可読媒体に組み込まれたCPP102のようなコンピュータ・プログラム製品の形体をとり得る。
1つまたは複数のコンピュータ可読媒体の任意の組み合わせを利用することも可能である。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。例えば、コンピュータ可読記憶媒体は、電子的、磁気的、光学的、電磁気的、赤外線、もしくは半導体システム、装置、またはデバイス、或いは上記のものの任意の適切な組み合わせであってもよいが、それらに限定されない。コンピュータ可読記憶媒体の更に特殊な例(非網羅的なリスト)は、次のようなもの、即ち、1つまたは複数の配線、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能PROM(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、光学的記憶装置、磁気記憶装置、または上記のものの任意の適切な組み合わせを含むであろう。本明細書に関連して、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して、使用するためのプログラムを含み得るまたは格納し得る任意の実体的な媒体であってもよい。コンピュータ可読媒体上に具現化されたプログラム・コードは、無線、有線、光通信ケーブル、RF等、または、それらの任意の適切な組み合わせを含むが、それらに限定されない。
本発明の実施態様に関するオペレーションを実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++等のようなオブジェクト指向プログラミング言語、「C」プログラミング言語のような一般的なプロシージャ型プログラミング言語、または同様のプログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで書かれたものでもよい。そのプログラム・コードは、ユーザのコンピュータにおいて全体的に、独立型パッケージ・ソフトのようにユーザのコンピュータにおいて部分的に、ユーザのコンピュータにおいて部分的におよびリモート・コンピュータにおいて部分的に、またはリモート・コンピュータまたはサーバにおいて全体的に実行されてもよい。後述するように、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得るし、外部コンピュータへの接続は(例えば、インターネット・サービス・プロバイダを使ってインターネットにより)行なわれ得る。
本発明の実施態様は、本発明の諸実施例に従って方法、装置(システム)、およびコンピュータ・プログラムのフローチャートおよび/またはブロック図に関連して後述される。図3のフローチャートおよび/またはブロック図の各ブロック、並びにそのフローチャートのおよび/またはブロック図におけるブロックの組み合わせがコンピュータ・プログラム命令によって具現化され得るということは当然である。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、図3のフローチャートにおいて指定された機能/行為および/またはブロック図のブロックを具現化するための手段を作成するというようなマシンを形成するように、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供され得る。
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納された命令が、フローチャートにおいて指定された機能/行為、および/またはブロック図のブロックを具現化する命令を含む製造物を形成するというような特定の方法で機能するように、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに指示し得るコンピュータ可読媒体に格納されてもよい。
コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル装置において実行される命令が、後述される図3のフローチャートにおいて指定された機能/行為を具現化するためのプロセスを提供するようなコンピュータで具現化されるプロセスを形成するように、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上で一連の動作ステップを遂行させるために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ得る。
図3のフローチャートは、本発明の種々の実施例に従って、システム、方法、およびコンピュータ・プログラムの可能な実施態様のアーキテクチャ、機能、およびオペレーションを示す。この点に関して、図3のフローチャートにおける各ブロックは、指定された論理機能を具現化するための1つまたは複数の実行可能な命令を含むコードのモジュール、セグメント、または、一部分を表し得る。或る代替実施態様では、ブロック内に記された機能が図3に記された順序から外れて起こり得るということに留意されたい。例えば、連続して示された2つのブロックが実際にはほぼ同時に実行されることがあり、時には、関連する機能に依存して、逆の順序で実行されることがある。更に、図3の各ブロック並びにブロック図および/またはフローチャートにおけるブロックの組み合わせが、指定された機能または行為を遂行する特殊目的のハードウェア・ベースのシステム、或いは特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって具現化され得る。
システム管理者、ユーザ、または他のエンティティは、アプリケーション・プログラム190の実行のパフォーマンス評価中、SMP-IHS100のOS180を使用し得る。マルチプロセッサ環境では、アプリケーション・プログラムの複数のプロセスまたはスレッドが、システム・メモリ125または他のメモリ記憶領域が維持する共通の情報へのアクセスを非常に頻繁に要求する。例えば、特定のスレッドAが、メモリ125におけるアドレスを指すアドレス・ポインタAにおいてロックAを得ることがある。それは、スレッドAがスレッドBのような別のまたは次のスレッドによるコリジョンまたは上書きに関する懸念なしにアドレス・ポインタAのデータへのフル・アクセスを行うことを可能にする。次のスレッドBが同じロック即ちロックAを要求する場合、OS180は、次のスレッドBがロックAを得ることを許さず、ロックAが利用可能になるまで次のスレッドBがスピンする。この例で、ロックAは、特定のスレッドAおよび次のスレッドBの間で共用するためにロックになる。ロックAを要求する第1のスレッドがそのロックを受け取り、スレッドBのような任意の次のスレッドが、特定のスレッドAがそのロックを解放した後でロックAを得る。
OS180が決定する時間量に対する次のスレッドBのスピンが所定の値MAXSPIN以上である場合、OS180はスレッドBをスリープ状態にする。このスリープ状態は、アプリケーション・プログラム190の実行における潜在的なパフォーマンス上の問題の一例である。OS180はMAXSPIN状態を自動的に検知し、そのステータスをOS180に報告するためにカーネル185を使用する。システム管理者、ユーザ、または他のエンティティが表1に示されたようなautolocktraceコマンドをイネーブルする場合、そのMAXSPIN事象はロック・トレースをトリガして開始し得る。OS180は、MAXSPIN事象に対してautolocktraceコマンドの引数を評価し、autolocktraceのトレース・パラメータ(図2)に遭遇するかどうかを判断する。その場合、ロック・トレースが始まり、更に詳細に後述するように、OS180が特定のロック状態を監視し、ロック・トレース・パラメータ・データをトレース・テーブル200に格納する。
図2は、開示されたSMPロック・トレーシング方法の遂行中にSMP-IHS100が使用し得る代表的なトレース・テーブル200を示す。例えば、OS180は、SMPロック・トレーシング方法をサポートする情報を格納し得る。トレース・テーブル200は、表1のautolocktraceコマンドによるその開示されたSMPロック・トレーシング方法への入力としての情報、および、SMPロック・トレーシング方法の実行に起因する情報を含み得る。トレース・テーブル200の縦行210は、トレース・パラメータ情報の横列1〜12を示す。トレース・テーブル200に存在するトレース・パラメータ・データが縦行220に示される。縦行220のトレース・パラメータは、autolocktraceコマンドの引数に従ってautolocktraceオペレーションが実行される条件またはパラメータを指定する。
開示示されたSMPロック・トレーシング方法の一実施例では、縦行230は、縦行220の各対応するトレース・パラメータに対するトレース・パラメータ・データを示す。例えば、トレース・テーブル200の横列1において、トレース・パラメータ「トレースにロックする(LOCKS TO TRACE)」は、アプリケーション・プログラム190の実行中OS180が監視するSMP-IHS100のロックを表わす。1つの例では、縦行230、横列1のように、「ロックA、ロックB(LOCK A、LOCKB)」は、OS180がアプリケーション・プログラム190のSMP-IHS100の実行中、ロックAおよびロックBにおいてロック・トレーシングを行うであろうということを表わす。SMPロック・トレーシング方法の別の実施例では、縦行230、横列1におけるパラメータ・データは「ブランク」または「エントリ無し」を表わす。その場合、OS180は、そのロック・データの欠落を、アプリケーション・プログラム190の実行に係るすべてのロックにおいてロック・トレーシングを行うという指示として、解釈し得る。上記の例では、トレース・テーブル200は横列1、縦行230のトレース・パラメータ・データにロックを含まないので、ロックCまたはロックD(図示されてない)のような他のロックはロック・トレース事象をトリガしないであろう。
トレース・テーブル200は、横列2において「トレース・バッファ・サイズ(TRACE BUFFER SIZE)」に対するトレース・パラメータを含み、縦行230に見られるように「100MB」の対応するトレース・パラメータ・データを含む。この例では、SMP-IHS100は、開示されたSMPロック・トレーシング方法の遂行中、ロック・トレース・データを収集するために、システム・メモリ125における100MBの総メモリ・リソースを割り振る。OS180は、所与の24時間または1日においてトレースすべきロック・トレースの最大数を割り振り得る。例えば、トレース・テーブル200の横列3に示されるように、トレース・パラメータ「1日当たりの最大トレース(MAXTRACES PER DAY)」は、「100」トレースのトレース・パラメータ・データ値に相当する。この例では、OS180は、1日のSMP-IHS100のロック・トレース評価では、アプリケーション・プログラム190に対し総計100のロック・トレースを超え得ない。
横列4において、トレース・テーブル200は「1ロック当たりの最大トレース(MAX TRACES PER LOCK)」パラメータを含む。1つの例では、横列4および縦行230に示されるように、OS180は、「20」のトレース・パラメータ・データを含み得る。その場合、OS180は、アプリケーション・プログラム190においてロック・トレーシングを実行し、いずれの特定のロックに対しても高々20のトレースを格納または記録する。トレース・テーブル200は、横列5において「最大の総トレース(MAX TOTAL TRACES)」として横列5および縦行230に示されるように「1000」という対応するトレース・パラメータ・データ値を含む。その場合、OS180は、アプリケーション・プログラム190のパフォーマンス評価中、リセット、再スタート、または他の終了アクションまでに高々1000のトレースしか実行しないであろう。
開示されたロック・トレーシング方法の実行中または遂行中、OS180はトレース・パラメータ・データを収集する。例えば、各特定のトレースの時間および日付、並びに他のそのようなトレース・パラメータ・データは、アプリケーション・プログラム190のパフォーマンス評価およびその結果として生じる強化にとって貴重なものとなり得る。トレース・テーブル200は、トレース・パラメータおよびトレース・パラメータ・データのための横列6に、それぞれ、「トレース1の日付/時間(TRACE 1 DATE/TIME)」および対応する「日付/時間の情報(DATE/TIME INFORMATION)」を含む。トレース・テーブル200の横列6のデータは、開示されたSMPロック・トレーシング方法の実行中、OS180が格納する情報を反映する。この例では、横列6は、OS180がアプリケーション・プログラム190の実行中に遭遇する第1ロック・トレースに対応し、それはロックA、ロックB、または任意の他の特定ロックに対応し得る。換言すれば、ロックA、ロックB、または他のロックは、アプリケーション・プログラム190がSMP-IHS100において実行中に遭遇する第1ロックになり得る。
OS180が横列6に示される「トレース1の日付/時間(TRACE 1 DATE/TIME)」として第1のロック・トレース・データを捕捉した後、トレース・テーブル200は、次のトレースのための日付/時間情報、即ち、横列7による「トレース2の日付/時間(TRACE2 DATE/TIME)」から、横列8による「トレースMの日付/時間(TRACE M DATE/TIME)」までのための記憶装置を提供する。換言すれば、トレース・テーブル200は、横列6〜8によって示されるようにトレース1〜トレースMに対する日付/時間情報を格納する。なお、Mは、図2のテーブル200に格納されたトレースの総数である。他の実施例では、トレース・テーブル200の横列、縦行、または情報の位置の数は、特定のアプリケーションに従って変わり得る。アプリケーション・プログラム190の実行中、OS180は、実施されたトレースの数を追跡し得る。トレース・テーブル200の横列9は、縦行220における「実施されたトレースの数(NUMBER OFTRACES TAKEN)」のトレース・パラメータを示し、縦行230において「25」という対応するトレース・パラメータ・データ値を示す。この例では、OS180は、アプリケーション・プログラム190実行の特定の時点まで25個のトレースを捕捉した。トレース・テーブル200の横列9のような実施されたトレースの数は、アプリケーション・プログラム190が実行を継続し、この開示されたautolocktraceフィーチャを使って更なるトレースを行うにつれて増加し得る。
OS180は、各特定のロックに対して実施されたトレースの数を捕捉し得る。例えば、ロック1はロックAのデータに対応し得る。横列10に示されるように、トレース・テーブル200は、縦行220において「ロック1のトレースの数(LOCK 1 NUMBER OF TRACES)」を、および縦行230において「15」という対応するトレース・パラメータ・データ値に含み得る。その場合、OS180が記録する第1のロック・トレースは、15という実施されたトレースの数を示す。例えば、アプリケーション・プログラム190を実行するためにOS180が捕捉する第1のロック・トレースがロックAである場合、ロックAのために実施されたロック・トレースの数は15に等しい。その数は、OS180が実行し、アプリケーション・プログラム190に対するロック・トレース・データを捕捉し続けるにつれて増加する。トレース・テーブル200の横列10〜12に示されるように、OS180はロック1〜ロックLのトレース数のデータを捕捉し得る。なお、Lは捕捉されたトレースの総数である。トレース・テーブル200の横列11は、縦行220において「ロック2のトレースの数(LOCK 2 NUMBER OF TRACES)」のトレース・パラメータを示し、縦行230において「10」という対応するトレース・パラメータ・データ値を示す。トレース・テーブル200の横列12は縦行220においてトレース・パラメータ「ロックLのトレースの数(LOCK L NUMBER OF TRACES)」を示し、縦行230において「10」という対応するトレース・パラメータ・データ値を示す。この例では、OS180は、アプリケーション・プログラム190の実行およびパフォーマンス評価中、ロック1〜ロックLに対するロック・トレースの数を捕捉する。
OS180は、開示されたSMPロック・トレーシング方法の結果のロック・トレース・パラメータ入力または出力のいずれかに対するSMPロックのための他のパラメータをトレース・テーブル200内の含み得る。OS180は、トレース・テーブル200からのロック・トレース入力情報を使用して、ロック・トレースの実行に影響するパラメータを決定し得る。括弧240によって示された横列1〜5のようなトレース・テーブル200からのこのロック・トレーシング入力は、上記の表1に示されるように、autolocktraceコマンドのエントリ中にシステム管理者または他のユーザによって入力された引数を反映し得る。対照的に、OS180は、開示されたSMPロック・トレーシング方法の特定の結果を格納または記録するために、トレース・テーブル200を使用し得る。例えば、括弧250によって示されたトレース・テーブル200の横列6〜12に示されるように、OS180は、SMP-IHS100内で実行されるアプリケーション・プログラム190のためのトレース・パラメータ・データを記録し得る。OS180は、パフォーマンス評価のために、アプリケーション・プログラム190または他のプログラム・ソフトウェアを実行し得る。システム管理者、ユーザ、または他のエンティティは、トレース・テーブル200の結果のような開示されたSMPロック・トレーシング方法の結果を使用して、アプリケーション・プログラム190のパフォーマンス向上を達成するのに役立つかもしれない入力を提供し得る。
図3は、開示されたSMPロック・トレーシング方法のためのアプリケーション・プログラム190の実行時におけるOS180のソフトウェアのオペレーションを示すフローチャートである。詳しくいえば、図3のフローチャートは、OS180のカーネル185におけるロック・テスト・ツール300が上記の開示されたテスト方法を実行するために取り得るステップを示す。その方法はブロック305によって開始する。1つの実施例では、システム管理者、ユーザ、または他のエンティティが、テスト・ツール300によってアプリケーション・プログラム190のような特定のアプリケーション・ソフトウェア・プログラムに対してロック・トレースを行うためにSMP-IHS100のリソースを使用する。アプリケーション・プログラム190は、顧客のソフトウェア・アプリケーションであってもよく、或いはソフトウェア・パフォーマンスの向上または最適化を必要とする他のソフトウェア・アプリケーションであってもよい。特に、アプリケーション・プログラム190は、特定の顧客のアプリケーション・プログラム、設計テスト・プログラム、ベンチマーク・プログラム、または、SMP-IHS100内での実行中にSMPスレッドまたはプロセスを使用する他のソフトウェアであってもよい。
システム管理者、ソフトウェア・プログラマ、ユーザ、または他のエンティティが、OS180内のロック・トレーシングを開始する。1つの実施例では、ユーザがブロック310によってロック・トレーシングを開始するまたは可能にする。ユーザまたは他のエンティティが、上記の表1におけるようにOS180内のautolocktraceコマンド・ライン・エントリを含むことによってロック・トレーシングを開始させてもよい。このロック・トレース・コマンド・エントリは、I/O装置150、OS180のソフトウェア内の手操作によるコマンド・ライン・エントリ、または他の方法を介して開始させ得る。SMP-IHS100内のアプリケーション・プログラム190の実行中、ブロック315によって、スレッドAがロックAを得る。換言すれば、アプリケーション・プログラム190内で実行されるスレッドAのような特定のプロセスまたはスレッドがロックAを要求してそのロックAの一時的所有を得る。例えば、スレッドAは、SMP-IHS100のシステム・メモリ125内に存在する情報の、メモリ・アドレス・ポインタAにおけるアドレスをアクセスすることを望むことがある。スレッドAはアドレス・ポインタAの情報を使用しようとするが、OS180は他のプロセスまたはスレッドがアドレス・ポインタAのデータをアクセスしないようにロックする。そのように、OS180はスレッドAにロックAを(即ち、メモリ・アドレス・ポインタAのアクセスに関するロックを)提供する。
スレッドAは、それが最早読取り、書込み、修正アクションのためにその情報へのアクセスを必要としなくなった後、ロックAを解放し得る。しかし、他のスレッドは、スレッドAがロックAを解放する前にアドレスAの情報へのアクセスを要求することがある。スレッドAおよびスレッドBはデータを共用し得るか、またはシステム・メモリ125のメモリ・アドレス・ポインタAのデータのような共用データのアクセスを試み得る。別の実施例では、OS180は、レジスタ、キャッシュ・メモリ、ハード・ドライブ、またはSMP-IHS100の他のメモリ・ソースに対するアドレス・ポインタをマップし得る。アプリケーション・プログラム190の実行中に、スレッドBはブロック320によってOS180からロックAを要求する。スレッドAは既にロックAを有するので、OS180はスレッドBにロックAを提供しない。スレッドBはブロック325によってスピンを始めるか、または、ロックAを待つ。換言すれば、スレッドBはロックAを要求してスピンするか、或いは、それがロックAを得るかまたは別のアクションが生じるまで、そのままロックAを要求し続ける。
MAXSPINは、スレッドが、スリープ状態に入る前に、ロックAのような特定のロックを待つ時間量の特定の閾値を識別する。スレッドBのようなスレッドは、OS180がそのスレッドおよびロックに対するMAXSPINと関連する時間内に、ロックAのような特定のロックを得ることがあるし、得ないこともある。OS180のロック・テスト・ツール300は、ブロック330によって、スレッドBがMAXSPINに達したかどうかを判断するためのテストを行う。1つのケースでは、ブロック335によって、スレッドBがMAXSPINに達せず、スレッドAがロックAを解放し、スレッドBがロックAを得る。この例では、ブロック340によって、OS180はロック・トレースを開始しない。一方、OS180は、スレッドAを待つ間、ブロック330によって、スレッドBがMAXSPINに達したことを決定し得る。その場合、スレッドBはMAXSPINに達し、ブロック345によって、OS180はスレッドBをスリープ状態にする。
OS180のロック・テスト・ツール300は、ブロック350によって、ロックのリストに遭遇したかどうかを判断するためにテストを行う。換言すれば、OS180は、図2のトレース・テーブル200の横列1に示される「トレースするためのロック(LOCKS TO TRACE)」のようなロックのリストに遭遇するかまたはそのリストが有効であるかどうかを判断する。1つの実施例では、トレース・テーブル200のトレース・パラメータ・データ縦行230および横列1に示されるように、ロックのリストに遭遇しない場合、ブロック340によって、OS180はロック・トレースを開始しない。換言すれば、OS180は、SMP-IHS100におけるアプリケーション・プログラム190の実行のために、autolocktraceコマンドに関する上記表1に示された引数のようなロック・トレースの目的を満足させない。別の言い方をすれば、OS180のテスト・ツール300は、MAXSPINに達した特定のスレッド、即ち、スレッドBが、ブロック330によって、トレース・テーブル200におけるロックのリストに含まれているかまたはそのリストから除外されているかを判断するためにテストを行う。ロックのリストに対するテストに遭遇する場合、ブロック370によって、OS180はロック・トレース捕捉を開始する。例えば、OS180は、ロックAのロック・トレース捕捉を開始し得る。ロック・トレース捕捉中、ブロック380によって、OS180はトレース・テーブル200を更新する。トレース・テーブル200に示されるように、OS180は、各トレースおよび次のロックに対する括弧250によって示された横列6〜12のデータのようなトレース・パラメータ・データの集合を更新し得る。
OS180がブロック380によってトレース・テーブルを更新した後、またはOS180がブロック340によってロック・トレースを開始しない場合、ブロック390によって、SMP自動ロック・トレーシング方法は終了する。ユーザまたは他のエンティティは、将来のアプリケーション・プログラム190に関する実行のパフォーマンスを向上させる目的で、または他の目的で、ロックの特性を決定するためにトレース・テーブル200のトレース・パラメータ・データに問い合わせ得る。トレース・テーブル200は、アプリケーション・プログラム190のパフォーマンス向上または他の用途に寄与するように多くの形式および多数のフォーマットを取り得る。システム管理者または他のエンティティは、表1に示されたようなautolocktraceコマンドを用いてまたは自動ロック・トレースを達成するためにそのコマンドの修正を用いてSMPロック・トレーシング方法を開始し得る。
以上は、SMP-IHSが閾値MAXSPINに達するスレッドに対してSMPロックを自動的に捕捉するための開示されたSMPロック・トレーシング方法を使用する方法を教示している。OSは、自動的にMAXSPIN状態を検知して更なるユーザ介入なく上記開示されたロック・トレーシング方法を開始させるために、カーネルを使用し得る。このロック・トレーシング方法は、任意の特定のロック・トレース捕捉の適格性を決定するために、その開示されたSMPロック・トレーシング方法の開始時にユーザによりセットされた引数を問い合わせ得る。システム管理者は、特定のアプリケーション・プログラムのSMPロック問題をより十分に理解するために、SMPロック・トレーシング方法の結果を使用し得る。システム管理者または他のエンティティは、OSがアプリケーション・プログラムのパフォーマンス特性を修正するか或いは向上させるためにロック・トレース・テーブル内に格納するというようなSMPロック・トレーシング方法の結果を利用し得る。
本明細書において使用された用語は、特定の実施例を説明することだけを目的とするものであり、本発明を限定することを意図するものではない。更に、本明細書において使用された用語「含む」は、記述された特徴、整数、ステップ、オペレーション、要素、および/またはコンポーネントの存在を明示しているが、1つまたは複数の他の特徴、整数、ステップ、オペレーション、要素、コンポーネントおよび/またはそれらのグループの存在または付加を排除しないといことは当然である。
「特許請求の範囲」の記載における対応する構造、材料、行為、および、すべての手段またはステップおよび機能の均等物は、詳しく請求項に記載の他の要素と結合してその機能を遂行するための任意の構造、材料、または行為を含むことを意図するものである。本発明に関する記述は例示および説明を目的として示され、それが網羅的であることおよび開示された形体の発明に限定されることを意図するものではない。本発明の技術的範囲および趣旨から逸脱することなく、多くの修正および変更が当業者には明らかであろう。実施例は、本発明の原理および実用的な応用例を最も良く説明するために、および、意図した特定の用途に適するように種々の修正を伴う種々の実施例に関して当業者が本発明を理解することを可能にするために、選択および記述された。

Claims (20)

  1. マルチプロセッサ・システムにおける実行プログラムの特定のスレッドが所定のスピン閾値に達したときをロック・テスト・ツールにより決定するステップと、
    前記特定のスレッドが前記所定のスピン閾値に達したことに応答して、前記ロック・テスト・ツールによりロック・トレース・オペレーションを開始するステップと
    を含む、テストする方法。
  2. 前記特定のスレッドは、他のスレッドがメモリ・ロケーションにおいて第1ロックを施しているときには、前記メモリ・ロケーションをアクセスするのを待つ、請求項1に記載の方法。
  3. 前記ロック・テスト・ツールは、対称マルチプロセッサ・システムのオペレーティング・システムに含まれる、請求項1に記載の方法。
  4. 前記ロック・テスト・ツールは、テストのために指定された、前記第1ロックを含むロックのリストを格納する、請求項2に記載の方法。
  5. 前記第1ロックが前記ロックのリストに含まれるかどうかを判断するために前記ロック・テスト・ツールによりテストを行うステップを更に含み、
    前記ロック・テスト・ツールは、前記特定のスレッドが前記所定のスピン閾値に達したとき、前記ロック・トレース・オペレーションを開始し、前記特定のスレッドは、前記第1ロックが前記ロックのリストに含まれる場合、前記第1ロックの所有権を要求する、請求項4に記載の方法。
  6. 前記ロック・テスト・ツールは、前記特定のスレッドが単位期間当たりの所定トレース数を超えていない場合、前記ロック・トレース・オペレーションを開始する、請求項1に記載の方法。
  7. 前記ロック・テスト・ツールは、前記ロック・トレース・オペレーションにおいて単位期間当たり捕捉すべきトレースの最大数を入力として受け取る、請求項1に記載の方法。
  8. マルチプロセッサ・システムと、
    前記マルチプロセッサ・システムに結合され、ロック・トレーシング・ツールと共に構成されたメモリと
    を含み、前記ロック・トレーシング・ツールは、
    前記マルチプロセッサ・システムにおける実行プログラムの特定のスレッドが所定のスピン閾値に達したときを決定し、
    前記特定のスレッドが前記所定のスピン閾値に達したことに応答してロック・トレース・オペレーションを開始する
    情報処理システム。
  9. 前記特定のスレッドは、他のスレッドがメモリ・ロケーションにおいて第1ロックを施しているときには前記メモリ・ロケーションをアクセスするのを待つ、請求項8に記載の情報処理システム。
  10. 前記メモリは、前記ロック・トレーシング・ツールを含むオペレーティング・システムと共に更に形成される、請求項8に記載の情報処理システム。
  11. 前記ロック・テスト・ツールは、テストのために指定された、前記第1ロックを含むロックのリストをその一部として含む、請求項9に記載の情報処理システム。
  12. 前記ロック・テスト・ツールは、前記特定のスレッドが前記所定のスピン閾値に達したとき、前記ロック・テスト・ツールが前記ロック・トレース・オペレーションを開始するように、前記第1ロックが前記ロックのリストに含まれているかどうかを判断するテストを行い、前記第1ロックが前記ロックのリストに含まれている場合には前記特定のスレッドが前記第1ロックの所有権を要求する、請求項11に記載の情報処理システム。
  13. 前記ロック・テスト・ツールは、前記特定のスレッドが単位期間当たりの所定トレース数を超えていない場合、前記ロック・トレース・オペレーションを開始する、請求項8に記載の情報処理システム。
  14. 前記ロック・テスト・ツールは、前記ロック・トレース・オペレーションにおいて単位期間当たり捕捉すべきトレースの最大数を入力として受け取る、請求項8に記載の情報処理システム。
  15. コンピュータ操作可能媒体に格納されたコンピュータ・プログラムであって、
    マルチプロセッサ・システムにおける実行プログラムの特定スレッドが所定のスピン閾値に達したときを決定する命令と、
    前記特定スレッドが前記所定のスピン閾値に達したことに応答してロック・トレース・オペレーションを開始する命令と
    を含む、コンピュータ・プログラム。
  16. 前記特定スレッドは、他のスレッドがメモリ・ロケーションにおいて第1ロックを施しているために前記メモリ・ロケーションをアクセスするのを待つ、請求項15に記載のコンピュータ・プログラム。
  17. テストを指定されたロックのリストを格納する命令を更に含み、前記第1ロックが前記ロックのリストに含まれる、請求項16に記載のコンピュータ・プログラム。
  18. 前記特定スレッドが前記所定のスピン閾値に達したときに前記ロック・トレース・オペレーションが開始し、前記第1ロックが前記ロックのリストに含まれている場合には前記特定スレッドが前記第1ロックの所有権を要求するように、前記第1ロックが前記ロックのリストに含まれているかどうかを判断するテストを行う命令を更に含む、請求項17に記載のコンピュータ・プログラム。
  19. 前記特定スレッドが単位期間当たりの所定トレース数を超えていない場合、ロック・トレース・オペレーションを開始させる命令を更に含む、請求項15に記載のコンピュータ・プログラム。
  20. 前記ロック・トレース・オペレーションにおいて単位期間当たり捕捉すべきトレースの最大数を入力として受け取る命令を更に含む、請求項15に記載のコンピュータ・プログラム。
JP2010243524A 2009-11-10 2010-10-29 ロック・トレーシング機能を有する情報処理システム Expired - Fee Related JP5763907B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/616005 2009-11-10
US12/616,005 US8453122B2 (en) 2009-11-10 2009-11-10 Symmetric multi-processor lock tracing

Publications (2)

Publication Number Publication Date
JP2011103122A true JP2011103122A (ja) 2011-05-26
JP5763907B2 JP5763907B2 (ja) 2015-08-12

Family

ID=43975117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010243524A Expired - Fee Related JP5763907B2 (ja) 2009-11-10 2010-10-29 ロック・トレーシング機能を有する情報処理システム

Country Status (3)

Country Link
US (1) US8453122B2 (ja)
JP (1) JP5763907B2 (ja)
KR (1) KR20110052470A (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012171171A1 (zh) * 2011-06-14 2012-12-20 华为技术有限公司 软件监测方法、装置以及系统
KR101867960B1 (ko) 2012-01-05 2018-06-18 삼성전자주식회사 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
WO2013142948A1 (en) * 2012-03-30 2013-10-03 Irdeto Canada Corporation Method and system for preventing and detecting security threats
US9465655B2 (en) * 2012-11-28 2016-10-11 Htc Corporation Method for managing threads using executing time scheduling technique and electronic device using the same method
US9436721B2 (en) * 2014-02-28 2016-09-06 International Business Machines Corporation Optimization of mixed database workload scheduling and concurrency control by mining data dependency relationships via lock tracking
US10102037B2 (en) 2016-06-30 2018-10-16 International Business Machines Corporation Averting lock contention associated with core-based hardware threading in a split core environment
US11868818B2 (en) 2016-09-22 2024-01-09 Advanced Micro Devices, Inc. Lock address contention predictor
US10387218B2 (en) * 2016-11-14 2019-08-20 International Business Machines Corporation Lock profiling tool to identify code bottlenecks in a storage controller
US10417057B2 (en) * 2017-01-30 2019-09-17 Oracle International Corporation Mutex profiling based on waiting analytics
US10929199B2 (en) 2018-07-02 2021-02-23 International Business Machines Corporation Memory lock serialization
US11263114B2 (en) 2019-09-24 2022-03-01 International Business Machines Corporation Method and technique to find timing window problems
US12099739B2 (en) * 2020-07-28 2024-09-24 International Business Machines Corporation Trace data protection
CN113760492A (zh) * 2020-11-04 2021-12-07 北京沃东天骏信息技术有限公司 一种程序进程保活方法、系统、装置、设备以及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04116762A (ja) * 1990-09-07 1992-04-17 Nec Corp スピン・ロック制御方式
JPH1185574A (ja) * 1997-09-11 1999-03-30 Nec Corp ロック動作測定方法
JPH11306050A (ja) * 1998-04-21 1999-11-05 Mitsubishi Electric Corp エラーログ収集方法および装置
US20030208662A1 (en) * 2002-05-02 2003-11-06 International Business Machines Corporation System, method, and computer program product for reducing overhead associated with software lock monitoring
US20070067777A1 (en) * 2005-09-22 2007-03-22 International Business Machines Corporation Logging lock data
US20080059673A1 (en) * 2004-03-11 2008-03-06 Mehaffy David W System and Method for Measuring Latch Contention
JP2009110156A (ja) * 2007-10-29 2009-05-21 Sharp Corp ログ出力装置及びログ出力プログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774377A (en) * 1991-07-30 1998-06-30 Hewlett-Packard Company Method and apparatus for monitoring a subsystem within a distributed system for providing an archive of events within a certain time of a trap condition
JP3542463B2 (ja) * 1997-07-29 2004-07-14 Necエレクトロニクス株式会社 集積回路装置、その動作制御方法
US6735758B1 (en) * 2000-07-06 2004-05-11 International Business Machines Corporation Method and system for SMP profiling using synchronized or nonsynchronized metric variables with support across multiple systems
US7165190B1 (en) * 2002-07-29 2007-01-16 Oracle International Corporation Method and mechanism for managing traces within a computer system
US7512954B2 (en) * 2002-07-29 2009-03-31 Oracle International Corporation Method and mechanism for debugging a series of related events within a computer system
US7458076B2 (en) * 2004-08-05 2008-11-25 International Business Machines Corporation Method, apparatus, and computer program product for dynamically tuning a data processing system by identifying and boosting holders of contentious locks
US20060048160A1 (en) * 2004-09-02 2006-03-02 International Business Machines Corporation Method, apparatus, and computer program product for providing a self-tunable parameter used for dynamically yielding an idle processor
US7424646B2 (en) * 2004-11-30 2008-09-09 International Business Machines Corporation Imposing a logical structure on an unstructured trace record for trace analysis
US8141050B2 (en) * 2006-01-05 2012-03-20 International Business Machines Corporation Deadlock detection by lock classification
US8122439B2 (en) * 2007-08-09 2012-02-21 International Business Machines Corporation Method and computer program product for dynamically and precisely discovering deliquent memory operations
US8863091B2 (en) * 2007-10-19 2014-10-14 Oracle International Corporation Unified tracing service
US9529694B2 (en) * 2009-09-14 2016-12-27 Oracle International Corporation Techniques for adaptive trace logging

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04116762A (ja) * 1990-09-07 1992-04-17 Nec Corp スピン・ロック制御方式
JPH1185574A (ja) * 1997-09-11 1999-03-30 Nec Corp ロック動作測定方法
JPH11306050A (ja) * 1998-04-21 1999-11-05 Mitsubishi Electric Corp エラーログ収集方法および装置
US20030208662A1 (en) * 2002-05-02 2003-11-06 International Business Machines Corporation System, method, and computer program product for reducing overhead associated with software lock monitoring
US20080059673A1 (en) * 2004-03-11 2008-03-06 Mehaffy David W System and Method for Measuring Latch Contention
US20070067777A1 (en) * 2005-09-22 2007-03-22 International Business Machines Corporation Logging lock data
JP2009110156A (ja) * 2007-10-29 2009-05-21 Sharp Corp ログ出力装置及びログ出力プログラム

Also Published As

Publication number Publication date
US20110113406A1 (en) 2011-05-12
KR20110052470A (ko) 2011-05-18
JP5763907B2 (ja) 2015-08-12
US8453122B2 (en) 2013-05-28

Similar Documents

Publication Publication Date Title
JP5763907B2 (ja) ロック・トレーシング機能を有する情報処理システム
US11720368B2 (en) Memory management of data processing systems
US9384037B2 (en) Memory object reference count management with improved scalability
US8918764B2 (en) Selective trace facility
US8949579B2 (en) Ineffective prefetch determination and latency optimization
US7650259B2 (en) Method for tuning chipset parameters to achieve optimal performance under varying workload types
US8843673B2 (en) Offloading input/output (I/O) completion operations
EP2790106A2 (en) Performance measurement unit, processor core including the same and process profiling method
US20140365833A1 (en) Capturing trace information using annotated trace output
US9239742B2 (en) Embedded systems and methods for threads and buffer management thereof
US9910719B2 (en) High performance locks
US20170039095A1 (en) Switching a Locking Mode of an Object in a Multi-Thread Program
JP6237230B2 (ja) メモリ管理プログラム、メモリ管理方法、及びメモリ管理装置
CN114765051A (zh) 内存测试方法及装置、可读存储介质、电子设备
JP6963552B2 (ja) ブロックアトミック実行モデルを利用するプロセッサベースシステムにおける部分的に実行された命令ブロックのリプレイ
EP2869189A1 (en) Boot up of a multiprocessor computer
US8145819B2 (en) Method and system for stealing interrupt vectors
US8589635B2 (en) Administering thermal distribution among memory modules with call stack frame size management
US20140258631A1 (en) Allocating Enclosure Cache In A Computing System
US11068250B2 (en) Crowdsourced API resource consumption information for integrated development environments
RU2639235C2 (ru) Свободная от блокирования потоковая передача данных исполняемого кода
US20090241111A1 (en) Recording medium having instruction log acquiring program recorded therein and virtual computer system
US20170192694A1 (en) Movement-driven selection of a data storage location or device
JP2016522502A (ja) クイックレスポンス静電容量方式タッチスクリーンデバイス
US20090040232A1 (en) Method to record bus data in a graphics subsystem that uses dma transfers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140320

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140408

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20140425

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140428

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140702

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140922

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141210

TRDD Decision of grant or rejection written
RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20150526

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150526

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150612

R150 Certificate of patent or registration of utility model

Ref document number: 5763907

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees