JP5889332B2 - 並行ソフトウェア環境のためのアクティビティ記録システム - Google Patents

並行ソフトウェア環境のためのアクティビティ記録システム Download PDF

Info

Publication number
JP5889332B2
JP5889332B2 JP2013547952A JP2013547952A JP5889332B2 JP 5889332 B2 JP5889332 B2 JP 5889332B2 JP 2013547952 A JP2013547952 A JP 2013547952A JP 2013547952 A JP2013547952 A JP 2013547952A JP 5889332 B2 JP5889332 B2 JP 5889332B2
Authority
JP
Japan
Prior art keywords
software
processor
thread
idle
indication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013547952A
Other languages
English (en)
Other versions
JP2014505294A (ja
Inventor
ジークワート、デヴィッド、ケヴィン
レヴァイン、フランク、エリオット
ピネダ、エニオ、マニュエル
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 JP2014505294A publication Critical patent/JP2014505294A/ja
Application granted granted Critical
Publication of JP5889332B2 publication Critical patent/JP5889332B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/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
    • G06F11/3419Recording 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 by assessing time
    • G06F11/3423Recording 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 by assessing time where the assessed time is active or idle time
    • 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/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/825Indexing scheme relating to error detection, to error correction, and to monitoring the problem or solution involving locking
    • 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

Landscapes

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

Description

本発明は、並行ソフトウェア環境(concurrent software environment)のためのアクティビティ記録に関する。具体的には、本発明は、並行ソフトウェア環境におけるスレッドの同期状態に関連した情報の記録に関する。
コンピュータ・システムにおいてソフトウェア・スレッドを実行する並行ソフトウェア環境では、1つ以上の同期機構を用いて、共有リソースに対する制御されたアクセスを保証して共有リソースの同時使用を回避する。例えば、相互排他(mutual exclusion(mutex))アルゴリズム、ソフトウェア・ロック、同期モニター、セマフォ(semaphore)、または当技術分野において既知の他の同期機構を用いて、並行ソフトウェア環境において実行されるソフトウェア方法の同期を取ることができる。
Java(Javaはオラクル・コーポレーションの商標である)等の並行ソフトウェア環境で動作するマルチスレッド・アプリケーションの高いスケーラビリティは、同期を取った共有リソースにアクセスするために競合として現れる問題を軽減するかまたはそれに対処することによってスケーラビリティ向上の機会を与えるソフトウェア・コードの領域を見つけるための良好なツールに依存する。かかるソフトウェア・コード領域の識別は、共有リソースを共有するソフトウェア・スレッド間の競合等の同期イベントの発生を測定するための機能(facility)によって支援される。
しかしながら、同期イベントを測定するためのソフトウェア・コードの器具使用には問題がある。競合はツールのオーバーヘッドに対して極めて敏感である。これは、監視および測定ツールの実行そのものが、並行ソフトウェア環境で動作するソフトウェアの同期ダイナミクスに影響を及ぼすからである。
Java LockMonitor(JLM)(perfinsp.sourceforge.net/jlm.htmlを参照のこと)または「IBM Monitoring and Diagnostic Tools forJava-Health Centre」(publib.boulder.ibm.com/infocenter/hctool/v1r0/index.jspを参照のこと)等の今日のツールは、同期を取ったリソース・ベースでJava環境における競合発生率の監視および報告を行う。しかしながら、これらのツールは、競合を経験している特定のソフトウェア方法等、競合時のソフトウェア・スレッドの状態に関する情報を提供することができない。このため、かかるツールを用いて、アプリケーションにおけるどのソフトウェア方法が競合発生の原因であるかを判定することは簡単ではない。
更に、ソフトウェア・スレッドで実行されているソフトウェア方法が特定の競合状態等の特定の同期状態にある時間長を測定するツールは、展開および維持が難しい。並行ソフトウェア環境の性質のために、同期機構の一部としてソフトウェア・スレッドに割込をかけて再開する傾向があるので、複雑な測定論理により、特定の同期状態、特定のソフトウェア方法、および特定のソフトウェア・スレッドに対する時間期間の適切な割り当てを決定する必要がある。
従って、並行ソフトウェアのスケーラビリティを向上させるために、並行ソフトウェア環境においてスレッドのアクティビティを記録して同期挙動の分析を支援することが有利であろう。
従って、本発明は第1の態様で、コンピュータ・システムにおいてソフトウェア・スレッドを実行する並行ソフトウェア環境のためのアクティビティ記録システムを提供する。このアクティビティ記録システムは、コンピュータ・システムのプロセッサにおける実行を停止したソフトウェア・スレッドの同期状態指示を記録するためのスレッド状態インジケータであって、指示がソフトウェア・スレッドの識別に関連付けられている、スレッド状態インジケータと、アイドルであるコンピュータ・システムのプロセッサを識別し、プロセッサがアイドルであることの指示を記録するためのタイム・プロファイラと、プロセッサに対するソフトウェア・スレッドのディスパッチを識別し、プロセッサがアイドルであるという指示およびソフトウェア・スレッドの同期状態指示に応答して、プロセッサのアイドル状態の原因をソフトウェア・スレッドおよび指示された同期状態であると見なすレコードを発生するためのディスパッチ・モニターと、を含む。
好ましくは、タイム・プロファイラは更に、プロセッサのアイドル期間を、プロセッサが連続的にアイドルである期間として識別するように動作可能であり、アイドル状態の原因を示すレコードは、プロセッサのアイドル期間の原因をソフトウェア・スレッドおよび指示された同期状態であると見なす。
好ましくは、プロセッサが実行するためにディスパッチされたソフトウェア・スレッドを有しないと判定することによって、プロセッサはアイドルであると判定される。
好ましくは、アクティビティ記録システムは、スレッドが指示された状態にあった時間の割合を計算するための計算コンポーネントを更に含む。
好ましくは、スレッド状態インジケータは、ソフトウェア・スレッドが並行ソフトウェア環境において同期を達成するための排他的構造を獲得することを阻止されるソフトウェア・スレッドの「ブロック」状態の指示と、ソフトウェア・スレッドが異なるソフトウェア・スレッドによって処理が引き受けられるのを待つソフトウェア・スレッドの「待機」状態の指示と、ソフトウェア・スレッドがコンピュータ・システムのプロセッサにおける実行の準備ができているソフトウェア・スレッドの「動作可能」状態の指示と、ソフトウェア・スレッドの同期を取っていない状態の指示と、を記録するように動作可能である。
好ましくは、ソフトウェア・スレッドの同期状態指示は、ソフトウェア・スレッドがアクセスすることを求めた共有リソースの識別子を更に含む。
好ましくは、アクティビティ記録システムは、共有リソースの識別子に関連付けられたシンボリック名を決定するためのリゾルバを更に含む。
好ましくは、タイム・プロファイラは更に、ソフトウェア・ルーチンがソフトウェア環境のルーチンのサービス・ライブラリに含まれていることを判定するように構成され、この判定に応答して、ソフトウェア・ルーチンのための呼び出し側ルーチンを識別するように構成されている。
好ましくは、タイム・プロファイラは、リゾルバおよびソフトウェア・コール・スタックの1つ以上を用いて呼び出し側ルーチンを識別する。
好ましくは、ソフトウェア・スレッドの同期状態は、ソフトウェア・スレッド自体および並行ソフトウェア環境の1つ以上によって決定される。
好ましくは、排他的構造はロックおよびモニターのうちの1つである。
好ましくは、共有リソースはソフトウェア・オブジェクトである。
好ましくは、タイム・プロファイラは更に、一定間隔でコンピュータ・システムのプロセッサのプログラム・カウンタの値をポーリングするように動作可能であり、タイム・プロファイラは、プロセッサがアイドルである一定間隔の数をカウントすることによってアイドル期間を識別する。
好ましくは、プロセッサがアイドルであるという指示は、プロセッサがアイドルである一定間隔の数のカウント数を含む。
従って、本発明は第2の態様で、コンピュータ・システムにおいてソフトウェア・スレッドを実行する並行ソフトウェア環境のためのアクティビティを記録するための方法を提供する。この方法は、スレッド状態インジケータが、コンピュータ・システムのプロセッサにおける実行を停止したソフトウェア・スレッドの同期状態指示を記録し、この指示がソフトウェア・スレッドの識別に関連付けられている、ステップと、タイム・プロファイラが、アイドルであるコンピュータ・システムのプロセッサを識別し、プロセッサがアイドルであることの指示を記録し、ディスパッチ・モニターが、プロセッサに対するソフトウェア・スレッドのディスパッチを識別するステップと、プロセッサがアイドルであるという指示およびソフトウェア・スレッドの同期状態指示に応答して、ディスパッチ・モニターが、プロセッサのアイドル状態の原因をソフトウェア・スレッドおよび指示された同期状態であると見なすレコードを発生するステップと、を含む。
従って、本発明は第3の態様において、中央処理装置、メモリ・サブシステム、入出力サブシステム、およびバス・サブシステムを含む装置を提供する。このバス・サブシステムは、中央処理装置、メモリ・サブシステム、入出力サブシステム、および上述のような装置を相互接続する。
従って、本発明は第4の態様において、コンピュータ・システムにロードされてそこで実行された場合に上述したような方法のステップをコンピュータに実行させるコンピュータ・プログラム・コードを含むコンピュータ・プログラム要素を提供する。
添付図面を参照して、一例としてのみ、本発明の好適な実施形態について以下で更に詳細に説明する。
本発明の実施形態の動作に適したコンピュータ・システムのブロック図である。 本発明の好適な実施形態に従ったコンピュータ・システムにおいて実施されるアクティビティ記録システムの構成を示す。 本発明の好適な実施形態に従った、コンピュータ・システムにおいてソフトウェア・スレッドを実行する並行ソフトウェア環境のためのアクティビティを記録するための方法のフローチャートである。 本発明の好適な実施形態に従ったコンピュータ・システムにおいて実施されるアクティビティ記録システムの高度化した構成を示す。 本発明の好適な実施形態に従った、コンピュータ・システムにおいてソフトウェア・スレッドを実行する並行ソフトウェア環境のためのアクティビティを記録するための高度化した方法のフローチャートである。
図1は、本発明の実施形態の動作に適したコンピュータ・システムのブロック図である。中央処理装置(CPU)102は、データ・バス108を介して記憶装置104および入出力(I/O)インタフェース106に通信可能に接続されている。記憶装置104は、ランダム・アクセス・メモリ(RAM)または不揮発性記憶デバイス等のいずれかの読み取り/書き込み記憶デバイスとすることができる。不揮発性記憶デバイスの一例はディスクまたはテープ記憶デバイスを含む。I/Oインタフェース106は、データの入力もしくは出力のための、またはデータの入力および出力の双方のための、デバイスに対するインタフェースである。I/Oインタフェースに接続可能なI/Oデバイスの例は、キーボード、マウス、ディスプレイ(モニター等)、およびネットワーク接続を含む。
図2は、本発明の好適な実施形態に従ってコンピュータ・システム200において実施されるアクティビティ記録システムの構成を示す。コンピュータ・システム200は、命令を実行するために1つ以上のプロセッサ102を含む。コンピュータ・システム200内の各プロセッサ102は、プロセッサ102が実行する命令シーケンスにおける現在位置を示す値を記憶するためのレジスタまたは他の適切な記憶装置としてのプログラム・カウンタ206を含む。プログラム・カウンタは、命令ポインタ、命令アドレス・レジスタ、または命令シーケンサとしても既知である。プログラム・カウンタ206は、プロセッサ102の特定の構成に応じて、現在実行されている命令のためのアドレスあるいは実行される次の命令のためのアドレスを保持することができる。
好ましくは、プロセッサ102は、マルチプロセッサ・コンピュータ・システムにおける多数の独立したプロセッサである。あるいは、プロセッサ102は、コンピュータ・システムのアレイ等、相互動作するコンピュータ・システムのネットワークにおいて組織化された別個のコンピューティング・システムとして構築することができる。かかるアレイにおける各システムは、図1を参照して先に概説したコンピュータ・システムの不可欠な特性(feature)をそれぞれ含むことができる。例えば、プロセッサ102は、ラック・コンピュータ構成、ブレード・サーバ、またはコンピュータ・システムの他の適切なアレイ内に構築することができる。別の代替案では、プロセッサ102は、プロセッサ・ユニットの別個の処理コア等、単一のプロセッサの別個の処理要素として構築することができる。また、1つ以上のプロセッサ102の実施形態において、ここで想定したプロセッサ構成の組み合わせも適している。
コンピュータ・システム200は更に、不揮発性メモリ記憶装置等の記憶装置104を含む。記憶装置104はタイム・プロファイラ218を記憶している。タイム・プロファイラ218は、コンピュータ・システム200においてプロセッサ102のためのプログラム・カウンタ206の値を記録するためのコンポーネントである。プログラム・カウンタ206の値は、記憶装置104、代替的なメモリ、またはコンピュータ・システム200と関連付けられた他の記憶装置において、プロファイラ・レコード222として記憶される。
動作において、タイム・プロファイラ218は定期的にプロセッサ102の実行に割込をかけて(プロファイラの「ティック(tick)」として知られる)、プログラム・カウンタ206の値を記録した後に割込をかけた命令の実行を再開する。プログラム・カウンタ206の値は、プロファイラ割込(ティック)の時にプロセッサ102上で実行しているソフトウェア・スレッド210に対する命令シーケンス内の命令の記憶装置104内のアドレスに対応する。割込は一定間隔で行われるので、プログラム・カウンタ206の値はタイム・プロファイラ218によって一定間隔でポーリングされる。タイム・プロファイラ218は更に、コンピュータ・システム200における多数のプロセッサのプログラム・カウンタの値を記録するように動作可能であり、これは、プログラム・カウンタ206の各値に対応するプロセッサの識別子のレコードを生成することを含む。
当業者には明らかであろうが、タイム・プロファイラ218は全体的に記憶装置104に記憶されたソフトウェアで実施することができる。例えばタイム・プロファイラ218は、IBMによって開発されperfinsp.sourceforge.net/tprof/htmlにおいて詳細が明らかである「TProf」タイム・プロファイラ・ツール等のアプリケーション・ツールに基づくものとすることができる(IBMはインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である)。
あるいは、タイム・プロファイラ218は、全体的にハードウェアで、またはソフトウェアおよびハードウェアの双方の組み合わせで具現化して記憶装置104の外側で実施することができる。例えばタイム・プロファイラ218は、コンピュータ・システム200の1つ以上のプロセッサ102と緊密に連携するオペレーティング・システムまたはカーネル機能等、コンピュータ・システム200上で実行するソフトウェア・ルーチンとすることができる。あるいは、タイム・プロファイラ218は、特にプログラム・カウンタ206の値を記憶することを対象とするプロセッサ命令を用いることができる。別の代替案では、タイム・プロファイラ218は、「サンプリング・スレッド」として既知の、並行ソフトウェア環境208のための実行時(JIT:Just In Time)コンパイラの機能とすることも可能である。
記憶装置104は更に並行ソフトウェア環境208を記憶している。並行ソフトウェア環境208は、ソフトウェアが同時並列の実行に適した1つ以上の計算プロセスの集合として設計された環境である。注意すべきことは、かかる同時並列実行に対する適性は、並行ソフトウェアが実際に並列に実行されることを必ずしも必要としないことである。並行ソフトウェア環境は、単一のプロセッサ102を用いて並列実行を模倣することができるか、または上述のプロセッサ102の構成のいずれかにおいて等で、多数のプロセッサ102を用いて真の並列実行を実施することができる。並行プログラムは、各計算プロセスの実行ステップをインターリーブすることによって単一プロセッサ上で順次実行することができ、またはネットワーク内で近くにあるかもしくは分散している場合があるプロセッサ102の集合の1つに各計算プロセスを割り当てることによって並列に実行することができる。かかる並行ソフトウェア環境の一例はJava実行環境(Java Runtime Environment)である。
コンピュータ・システム200における複数のソフトウェア・スレッド210は、並行ソフトウェア環境208において並行計算プロセスとして並行して実行される。例えば、ソフトウェア・スレッド210は、インスタンス化したJavaオブジェクトに対して実行するソフトウェア方法を含むJavaプログラムにおける実行スレッドである。
ソフトウェア・スレッド210は、各々が共有リソース216にアクセスするように動作可能である。共有リソース216は、ハードウェアもしくはソフトウェア・リソース、共有メモリ・エリアもしくは他の記憶装置、デバイス、プロセッサ、または他のいずれかのリソース等、並行ソフトウェア環境208においてスレッドによるアクセスに適したいずれかのリソースとすることができる。例えば、共有リソース216は、Java環境において同期を取ったソフトウェア方法を含むJavaオブジェクト等のJavaオブジェクトとすることができる。
並行ソフトウェア環境208は、1つ以上の同期機構を用いて、共有リソース216に対する制御されたアクセスを保証して、多数のソフトウェア・スレッド210による共有リソース216の同時使用を回避する。
例えば、並行ソフトウェア環境208は、相互排他(mutex)アルゴリズム、ソフトウェア・ロック、同期モニター、セマフォ、または当技術分野において既知の他の同期機構を用いてソフトウェア・スレッド210の同期を取ることができる。かかる機構は、排他的構造(exclusionary construct)を用いて共有リソース206の同時使用を回避することができる。かかる同期機構において用いられる排他的構造は、ロック、モニター、およびセマフォを含むことができる。
例えば、共有リソース216として同期を取ったソフトウェア方法を有するソフトウェア・オブジェクトにアクセスするソフトウェア・スレッド210は、いかなる時点でもソフトウェア・オブジェクトに対するアクセスを単一のスレッドに限定するソフトウェア・モニターを用いて同期を取ることができる。排他的構造によって同期を取る環境で動作するスレッドを記述するために、様々な動作状態を用いることができる。
コンピュータ・システム200で実行され、共有リソース206に対するアクセスを得ようとするソフトウェア・スレッド210は、共有リソース216に関連付けられた排他的構造を「獲得」しようとしていると言うことができる。同様に、共有リソース216に対する同期を取ったアクセスを現在行っているスレッド210は、共有リソース216に関連付けられた排他的構造を「保持している」と言うことができる。これを、ソフトウェア・スレッド210の「保持された」状態とも呼ぶ。
共有リソース216の共有を達成するための同期機構は、スレッドが他の動作状態に入ることを伴う。同期機構は、排他的構造を獲得しようとしているスレッド210が、排他的構造を保持可能となる前に「スピン」状態に入ることを要求する場合がある。「スピン」状態のスレッドは、プロセッサ102上でアクティブに実行されているが、排他的構造に関連付けられた共有リソース216にアクセスすることはできない。通常、「スピン」状態のスレッドは、排他的構造を獲得しようとしながら有用な作業を実行することはできないので、かかるスレッドは、「スピン」状態にある間は他のソフトウェア・ルーチンまたは方法を正常に実行することはない。
同期機構では、スレッド210が共有リソース216の排他的構造を獲得することができず、このためスレッドは共有リソース216にアクセスすることができない「ブロック(blocked)」状態となる場合がある。「ブロック」状態のスレッドは、「ブロック」状態にある間は実行されることができず、コンピュータ・システム200のプロセッサ102による処理対象でなくなる。この後に排他的構造がスレッド210に獲得可能となる場合、かかるブロックは一時的なものとすることができる。
排他的構造を保持しているスレッド210は、別のスレッドによって処理が引き受けられるのを待つ「待機」状態に入ることができる。通常、かかる「待機」状態の終了は、通知の受信によって、または「時限待機」状態の場合には既定の時間期間の満了によって行われる。「待機」および「時限待機」状態のスレッド210は、通知がスレッド210により受信されるかまたは時間期間が満了するまで、実行されることができず、コンピュータ・システム200のプロセッサ102による処理対象でなくなる。通常、「待機」状態に入ったスレッドは排他的構造を解放し、「待機」状態を終了したらそれを再獲得する。
更に、スレッド210は「動作可能(runnable)」状態となることができる。これは、スレッド210がコンピュータ・システム200のプロセッサ102上で実行されることが可能であってその準備ができているが、現在はどのプロセッサ102もスレッド210の実行のために割り当てられていない状態である。
ソフトウェア・スレッド210の各々は、スレッド210の現在の同期状態指示214を記録するためのスレッド状態インジケータ212を含む。指示214は特定のスレッド210に関連付けられ、「保持」、「スピン」、「ブロック」、「待機」(「待機」または時限待機」のいずれか)、「動作可能」の状態、およびソフトウェア・スレッド210の同期を取っていない状態の指示のいずれかまたは全てを示すことができる。一実施形態において、指示214はソフトウェア・スレッド自体によってセットされる。代替的な実施形態では、指示214は、Java実行環境の仮想マシンによって等、並行ソフトウェア環境208によってセットされる。
ここで、本発明の実施形態の利点を実証するために、図2の構成を使用状態で説明する。使用時、指示214は、ソフトウェア・スレッド210の同期状態の変更の直前または直後にセットされる。例えば、共有リソース216にアクセスするために同期構造を獲得しようとしているソフトウェア・スレッド210は、「保持」状態を反映させるために指示214を更新する。同様に、「スピン」状態に入ろうとしているソフトウェア・スレッド210は、「スピン」状態を反映させるために指示214を更新する。
使用の際、タイム・プロファイラ218は、1つ以上のプロセッサ102の各々についてプログラム・カウンタ206の通常値をポーリングしてプロファイラ・レコード222に記録する。タイム・プロファイラ218は、ポーリングしたプロセッサ102上で実行されているソフトウェア・スレッド210の同期状態をプロファイラ・レコード222に記録するように構成されている。同期状態は、どのスレッド210がポーリングされたプロセッサ102上で実行されているかの識別およびスレッド210により記憶された同期状態214の指示に基づいている。このようにして、1つ以上のプロセッサ102の1つにおける実行を含む状態にあるスレッドの状態情報を決定し記録することができる。これは、「スピン」、「保持」状態、および同期を取っていない実行状態を含む。
このため、使用の際、図2の構成は、タイム・プロファイラ218をポーリングすることによって、並行ソフトウェア環境208で実行されているスレッド210の同期「保持」および「スピン」状態情報を一定の間隔で記録するように動作可能である。かかるポーリングは、コンピュータ・システム200における処理オーバーヘッドが極めて小さい細分化または微小プロセス(atomic process)とすることができ、このため、並行ソフトウェア環境208の同期ダイナミクスに対する影響は実質的に無視できる程度である。また、並行ソフトウェア環境208に関して、プログラム・カウンタ206の値のポーリングおよび同期状態指示214の取得に並行ソフトウェア環境208のアクティブな関与が必要でない限りにおいて、タイム・プロファイラ218の処理は受動的である。更に、多数のソフトウェア・スレッド210の一定時間間隔の同期「保持」および「スピン」状態情報は、ソフトウェア・スレッド210の同期挙動を分析するプロセスに通知されて、並行ソフトウェア環境208の効率、操作性、およびスケーラビリティを向上させることができる。
一実施形態において、プログラム・カウンタ206の各値は、プロセッサ102上で実行されているスレッドのための実行ソフトウェア方法の識別に変換される(resolve)。例えば、タイム・プロファイラ218は、リゾルバ(resolver)を用いて、タイム・プロファイラ218により記録されたプログラム・カウンタ206の各アドレス値について、アドレスに記憶された命令を含むソフトウェア・スレッド210のためのソフトウェア・コードを識別するシンボリック名を決定することができる。このため、タイム・プロファイラ218により記録された各アドレスについて、スレッド210における関数、手順、サブルーチン、または方法名を含むシンボル名がリゾルバによって検索される。リゾルバは、タイム・プロファイラ218の機能とすることができ、または記憶装置204に記憶された補足的な機能もしくはツールとすることができる。
図2の構成は更に、タイム・プロファイラ218により測定された、スレッド210が特定の同期状態にあった一定間隔の割合を計算するための計算コンポーネントを含む。例えば、スレッド210が「保持」状態にあった合計時間の比率を計算することができる。かかる計算コンポーネントはタイム・プロファイラ218の一部として構成することができる。あるいは、かかる計算コンポーネントは、プロファイラ・コンポーネント218により発生されたプロファイラ・レコード222と相互作用する別個のまたは追加のソフトウェアまたはハードウェア・コンポーネントとすることができる。
好適な実施形態において、スレッド状態インジケータ212は、ソフトウェア・スレッド210がアクセスを求めた共有リソース216の識別も更に記録する。例えばスレッド状態インジケータ212は、この識別を同期状態情報214と共に記録することができる。かかる識別は、例えばオブジェクトのクラス名、または同期を取ったソフトウェア方法、ルーチン、デバイス、データ・アイテム、もしくは他の共有リソースの識別子を含むことができる。更に、好適な実施形態では、リゾルバが、スレッド状態インジケータ212により記録された共有リソース216の識別子に関連付けたシンボリック名を決定するように動作可能である。例えば、ソフトウェア方法または関数等のソフトウェア・ルーチンの名前が同期状態インジケータ214によって記録される。共有リソース216が、同期を取ったソフトウェア方法等の同期を取ったルーチンを有するオブジェクトを含むソフトウェア・オブジェクトを含む場合、共有リソース216は、クラス・ライブラリ、標準ライブラリ、サービス・ルーチン、またはプリミティブ・メソッドまたは関数等、呼び出し側のソフトウェア・ルーチンによって呼び出されたサービス・ライブラリのルーチンに対応する場合がある。かかる状況において、ルーチン自体の指示を記録することは有用でないことがあり(かかるルーチンは多くの方法によって頻繁に呼び出される可能性があるので)、追加的にまたは代替的に、「呼び出し側」ルーチンの識別子を決定し記録することができる。かかる「呼び出し側」ルーチンは、コール・スタックまたはリゾルバあるいはその両方から識別することができる。
図3は、本発明の好適な実施形態に従ってコンピュータ・システム200においてソフトウェア・スレッド210を実行する並行ソフトウェア環境208でアクティビティを記録するための方法のフローチャートである。ステップ302において、スレッド状態インジケータ212はソフトウェア・スレッド210の同期状態指示214を記録する。この指示はソフトウェア・スレッド210の識別に関連付けられている。ステップ304において、タイム・プロファイラ218は一定の間隔で1つ以上のプロセッサ102のプログラム・カウンタ206の値をポーリングする。ステップ306において、タイム・プロファイラ218は、ポーリングしたプログラム・カウンタ値206および記録した状態指示214に基づいて、ソフトウェア・スレッド210の1つ以上の同期状態を識別して記録する。
上述の実施形態は、プロセッサ102の1つ以上でアクティブに実行されているスレッド210の同期「保持」および「スピン」状態情報を記録するのに適している。上述の実施形態は、プログラム・カウンタ106のポーリングおよびスレッド同期状態指示214に依拠し、このため、プロセッサ102上でアクティブに実行されているスレッドの有用な情報を与えるだけである。「ブロック」、「待機」(「待機」もしくは「時限待機」のいずれか)、または「動作可能」状態にあるスレッド等、プロセッサ102上でアクティブに実行されていないスレッドは、上述のタイム・プロファイラ218のポーリングによって識別されない。従って、これらの状態にあるスレッドのアクティビティを記録するために追加の手法が必要である。
図4は、本発明の好適な実施形態に従ってコンピュータ・システム400において実施されるアクティビティ記録システムの高度化した構成を示す。図4の特性の多くは図2に関して上述したものと同一であり、それらについてはここでは繰り返さない。図4の構成が図2に対して高度化されている点は、図4の構成が、並行ソフトウェア環境408におけるソフトウェア・スレッド410がコンピュータ・システム400のプロセッサ102でアクティブに実行されてない場合にスレッドの同期状態情報を記録するのに適していることである。図4に示す構成は図2の構成を補足することができ、いくつかの実施形態では、図4に関して以下で述べる特徴に追加して、図2に関して述べた特性を実施可能である。
図4のスレッド状態インジケータ412は、コンピュータ・システム400のプロセッサ102における実行を停止したソフトウェア・スレッド410の同期状態指示を記録するように動作可能である。従って図4の構成では、スレッド状態インジケータ412は、「ブロック」、「待機」(「待機」または「時限待機」のいずれか)、および「動作可能」状態の指示を同期状態指示414に記録する。他の点では、図4のスレッド状態インジケータ412は、図2に関して上述したものと実質的に同一である。
図4のタイム・プロファイラ418は、アイドルである1つ以上のプロセッサ102を識別するように動作可能である。プロセッサ102がアイドルと見なされるのは、ソフトウェア・スレッド410のどれもプロセッサ102上での実行にディスパッチされない場合である。タイム・プロファイラ418は、プロセッサ102が特定の時点でアイドルであることの指示を記憶する等によって、かかるアイドル状態を記録する。代替的な実施形態では、タイム・プロファイラ418は更に、プロセッサ102が連続的にアイドルである時間期間をプロセッサ102のアイドル期間として識別するように動作可能である。
図4の記憶装置104は更にディスパッチ・モニター424を記憶している。ディスパッチ・モニター424は、いつソフトウェア・スレッド410がプロセッサ102上での実行のためにディスパッチされたかを識別するように動作可能である。ディスパッチ・モニター424は、並行ソフトウェア環境およびタイム・プロファイラ418と共存するソフトウェア・ルーチンとして実施可能である。あるいは、ディスパッチ・モニター424はコンピュータ・システム400のオペレーティング・システムまたはカーネルにおいて実施可能である。あるいは、ディスパッチ・モニター424は全体的にまたは部分的にハードウェアとして実施可能である。
使用の際、ディスパッチ・モニター424は、ソフトウェア・スレッド410のプロセッサ102へのディスパッチを識別する。かかる識別に応答してディスパッチ・モニター424は、タイム・プロファイラ418を参照することによって、スレッドがディスパッチされたプロセッサ102がディスパッチの直前にアイドルであったか否かを判定する。プロセッサ102がアイドルであった場合、ディスパッチ・モニター424はディスパッチされたスレッド410の同期状態を取得して、ディスパッチされたスレッド410がプロセッサ102のアイドル状態の理由となり得る同期状態にあるか否かを判定する。例えば、ディスパッチされたスレッド410の同期状態指示414が、ディスパッチの時点までスレッド410がブロックされていた(「ブロック」状態)ことを示す場合、このブロックはプロセッサ102のアイドル状態の理由となり得る。かかる結論は、ソフトウェア・スレッド410の「ブロック」、「待機」(「待機」または「時限待機」のいずれか)、および「動作可能」状態で導き出すことができる。代替的な実施形態では、プロセッサ102の連続的なアイドル期間が記録されている場合、同期状態はアイドル期間の理由となり得るので、アイドル期間の原因と見なすことができる。
ディスパッチ・モニターが、プロセッサ102のアイドル状態の理由となるディスパッチされたスレッド410の同期状態を識別すると、ディスパッチ・モニターは、プロファイラ・レコード422において等でスレッドの同期状態のレコードを発生し、ディスパッチされたスレッドおよびディスパッチされたスレッド410の指示された同期状態をアイドル状態の原因と見なす。このように、スレッド410の特定の同期状態によって生じた可能性があるプロセッサ102のアイドル状態の原因は、それらの同期状態およびスレッドであると見なされる。
このため、図4の構成は、並行ソフトウェア環境408において実行されているスレッド408の同期「ブロック」、「待機」、および「動作可能」状態情報を記録し、かかる状態がタイム・プロファイラ418により識別されたプロセッサ102のアイドル状態の原因であると見なすように動作可能である。タイム・プロファイラ418およびディスパッチ・モニター424によってチェックおよびポーリングを行うことは、コンピュータ・システム400における処理オーバーヘッドが極めて小さい細分化または微小プロセスとすることができ、このため、並行ソフトウェア環境408の同期ダイナミクスに対する影響は実質的に無視できる程度である。また、並行ソフトウェア環境408に関して、プロセッサ102のアイドル状態のチェックおよび同期状態情報414のポーリングに並行ソフトウェア環境408のアクティブな関与が必要でない限りにおいて、タイム・プロファイラ418およびディスパッチ・モニター424の処理は受動的である。更に、多数のソフトウェア・スレッド410の「ブロック」、「待機」、および「動作可能」状態情報のレコードは、ソフトウェア・スレッド410の同期挙動を分析するプロセスに通知されて、並行ソフトウェア環境408の効率、操作性、およびスケーラビリティを向上させることができる。
図5は、本発明の好適な実施形態に従ってコンピュータ・システム400においてソフトウェア・スレッド410を実行する並行ソフトウェア環境408でアクティビティを記録するための方法のフローチャートである。ステップ502において、スレッド状態インジケータ412は、コンピュータ・システム400のプロセッサ102における実行を停止したソフトウェア・スレッド410の同期状態指示414を記録する。指示414はソフトウェア・スレッド410の識別に関連付けられている。ステップ504において、タイム・プロファイラ418は、アイドルであるコンピュータ・システム400のプロセッサ102を識別し、このプロセッサがアイドルであることの指示を記録する。ステップ506において、タイム・プロファイラ418はプロセッサ102のアイドル状態を識別する。好適な実施形態では、アイドル状態は、プロセッサが連続的にアイドルであるアイドル期間として識別される。ステップ508において、ディスパッチ・モニター424はプロセッサ102に対するソフトウェア・スレッド410のディスパッチを識別する。ステップ510において、この方法はプロセッサがアイドルであるか否かを判定する。ステップ512において、この方法は、ディスパッチされたスレッド410の同期状態がアイドル状態の理由となり得るか否かを判定する(例えば「ブロック」、「待機」、または「動作可能」状態)。ステップ514において、ディスパッチ・モニター424は、プロセッサ102のアイドル状態の原因をソフトウェア・スレッド410およびソフトウェア・スレッド410の指示された同期状態であると見なすレコードをプロファイラ・レコード422において発生する。好ましくは、タイム・プロファイラ418は更に、ディスパッチ・モニター424がプロセッサ102に対するスレッドのディスパッチを識別したことに応答してプロセッサ102がアイドルであることの指示をリセットするように動作可能である。
図4の構成は更に、タイム・プロファイラ418およびディスパッチ・モニター424により測定された、スレッド410が特定の同期状態にあった時間の割合を計算するための計算コンポーネントを含むことができる。例えば、「ブロック」状態のスレッドが原因と見なされるプロセッサ102のアイドル状態の合計時間の比率を計算する。かかる計算コンポーネントは、タイム・プロファイラ418の一部としてまたはディスパッチ・モニター424の一部として構成することができる。あるいは、かかる計算コンポーネントは、別個のまたは追加のソフトウェアまたはハードウェア・コンポーネントとすることができる。
好適な実施形態において、図4のタイム・プロファイラ418は更に、図2のタイム・プロファイラの規則的プログラム・カウンタ・ポーリング特性を含むことができる。かかるタイム・プロファイラ418によって行われるプログラム・カウンタのポーリングを用いて、プロセッサ102がアイドルである一定間隔数をカウントすることにより、アイドルのプロセッサ102のアイドル期間を測定することができる。更に、アイドル期間は、一定間隔のカウント数として、プロセッサ102がアイドルであることの指示と共に、タイム・プロファイラ418によって記録することができる。
好適な実施形態において、スレッド状態インジケータ412は、ソフトウェア・スレッド410がアクセスを求めた共有リソース416の識別も更に記録する。これについては図2を参照して上述した。図4の構成は更に、シンボリック名の変換を実行するための、図2を参照して上述したリゾルバも含むことができる。
マイクロプロセッサ、デジタル信号プロセッサ、または他の処理デバイス、データ処理装置もしくはシステム等のソフトウェア制御のプログラマブル処理デバイスを用いて、少なくとも部分的に上述した本発明の実施形態が実施可能である限りにおいて、前述の方法を実施するようにプログラマブル・デバイス、装置、またはシステムを構成するためのコンピュータ・プログラムが本発明の一態様として想定されることは認められよう。コンピュータ・プログラムは、ソース・コードとして具現化することができ、または処理デバイス、装置、もしくはシステム上で実施するためにコンパイルすることができ、または例えばオブジェクト・コードとして具現化することができる。
適宜、コンピュータ・プログラムは、例えば固体メモリ、ディスクまたはテープ等の磁気メモリ、コンパクト・ディスクまたはデジタル多用途ディスク等の光または光磁気読み取り可能メモリにおいて、機械またはデバイス読み取り可能形態でキャリア媒体上に記憶され、処理デバイスはプログラムまたはその一部を用いて動作のためにその構成を行う。コンピュータ・プログラムは、電子信号、無線周波数キャリア波、または光キャリア波等の通信媒体で具現化されたリモート・ソースから供給することができる。かかるキャリア媒体も本発明の態様として想定される。
本発明を、上述した例示的な実施形態に関連付けて記載したが、本発明はこれに限定されず、本発明の範囲内に該当する多くの可能な変更および変形があることは当業者には理解されよう。
本発明の範囲は、本明細書に開示したいかなる新規の特性または特性の組み合わせも含む。出願人はこれによって、本出願またはこれから導出されたいずれかの更に別の出願の処理の間に新規の請求項をかかる特性または特性の組み合わせに構築(formulate)可能であることを通知する。特に、添付の特許請求の範囲を参照して、請求項に列挙されている具体的な組み合わせだけでなくいかなる適切な方法でも、従属請求項からの特性を独立請求項のものと組み合わせることができ、各独立請求項からの特性を組み合わせることができる。

Claims (16)

  1. コンピュータ・システムにおいてソフトウェア・スレッドを実行する並行ソフトウェア環境のためのアクティビティ記録システムであって、
    前記コンピュータ・システムのプロセッサにおける実行を停止したソフトウェア・スレッドの同期状態を示す同期状態指示を記録するためのスレッド状態インジケータであって、前記同期状態指示が前記ソフトウェア・スレッドの識別に関連付けられている、スレッド状態インジケータと、
    アイドルである前記コンピュータ・システムのプロセッサを識別し、前記プロセッサがアイドルであることの指示を記録するためのタイム・プロファイラと、
    前記プロセッサに対する前記ソフトウェア・スレッドのディスパッチを識別し、前記プロセッサがアイドルであるという前記指示および前記ソフトウェア・スレッドの前記同期状態指示に応答して、前記プロセッサのアイドル状態の原因を前記ソフトウェア・スレッドおよび前記ソフトウェア・スレッドの前記同期状態であると見なすレコードを発生するためのディスパッチ・モニターと、
    を含む、アクティビティ記録システム。
  2. 前記タイム・プロファイラが更に、前記プロセッサのアイドル期間を、前記プロセッサが連続的にアイドルである期間として識別するように動作可能であり、前記アイドル状態の原因を示す前記レコードが、前記プロセッサの前記アイドル期間の原因を前記ソフトウェア・スレッドおよび前記指示された同期状態であると見なす、請求項1に記載のアクティビティ記録システム。
  3. 前記プロセッサが実行するためにディスパッチされたソフトウェア・スレッドを有しないと判定することによって前記プロセッサがアイドルであると判定される、請求項2に記載のアクティビティ記録システム。
  4. 前記タイム・プロファイラが測定した前記スレッドが特定の同期状態にあった一定間隔の割合を計算するための計算コンポーネントを更に含む、請求項3に記載のアクティビティ記録システム。
  5. 前記スレッド状態インジケータが、前記同期状態指示であって、
    前記ソフトウェア・スレッドが前記並行ソフトウェア環境において同期を達成するための排他的構造を獲得することを阻止される前記ソフトウェア・スレッドの「ブロック」状態の指示と、
    前記ソフトウェア・スレッドが異なるソフトウェア・スレッドによって処理が引き受けられるのを待つ前記ソフトウェア・スレッドの「待機」状態の指示と、
    前記ソフトウェア・スレッドが前記コンピュータ・システムのプロセッサにおける実行の準備ができている前記ソフトウェア・スレッドの「動作可能」状態の指示と、
    ソフトウェア・スレッドの同期を取っていない状態の指示と、
    を含む前記同期状態指示を記録するように動作可能である、請求項3に記載のアクティビティ記録システム。
  6. ソフトウェア・スレッドの同期状態の前記指示が、前記ソフトウェア・スレッドがアクセスすることを求めた共有リソースの識別子を更に含む、請求項5に記載のアクティビティ記録システム。
  7. 共有リソースの前記識別子に関連付けられたシンボリック名を決定するためのリゾルバを更に含む、請求項6に記載のアクティビティ記録システム。
  8. 前記タイム・プロファイラが更に、ソフトウェア・ルーチンがソフトウェア環境のルーチンのサービス・ライブラリに含まれていることを判定するように構成され、前記判定に応答して、前記ソフトウェア・ルーチンのための呼び出し側ルーチンを識別するように構成されている、請求項7に記載のアクティビティ記録システム。
  9. 前記タイム・プロファイラが、前記リゾルバおよびソフトウェア・コール・スタックの1つ以上を用いて前記呼び出し側ルーチンを識別する、請求項8に記載のアクティビティ記録システム。
  10. 前記ソフトウェア・スレッドの前記同期状態が、前記ソフトウェア・スレッド自体および前記並行ソフトウェア環境の1つ以上によって決定される、請求項3に記載のアクティビティ記録システム。
  11. 前記排他的構造がロックおよびモニターのうちの1つである、請求項5に記載のアクティビティ記録システム。
  12. 前記共有リソースがソフトウェア・オブジェクトである、請求項6に記載のアクティビティ記録システム。
  13. 前記タイム・プロファイラが更に、一定間隔で前記コンピュータ・システムの前記プロセッサのプログラム・カウンタの値をポーリングするように動作可能であり、前記タイム・プロファイラが、前記プロセッサがアイドルである一定間隔の数をカウントすることによって前記アイドル期間を識別する、請求項3に記載のアクティビティ記録システム。
  14. 前記プロセッサがアイドルであるという前記指示が、前記プロセッサがアイドルである一定間隔の数のカウント数を含む、請求項13に記載のアクティビティ記録システム。
  15. コンピュータ・システムにおいてソフトウェア・スレッドを実行する並行ソフトウェア環境のためのアクティビティを記録するための方法であって、
    スレッド状態インジケータが、前記コンピュータ・システムのプロセッサにおける実行を停止したソフトウェア・スレッドの同期状態を示す同期状態指示を記録し、前記同期状態指示が前記ソフトウェア・スレッドの識別に関連付けられている、ステップと、
    タイム・プロファイラが、アイドルである前記コンピュータ・システムのプロセッサを識別し、前記プロセッサがアイドルであることの指示を記録し、ディスパッチ・モニターが、前記プロセッサに対する前記ソフトウェア・スレッドのディスパッチを識別するステップと、
    前記プロセッサがアイドルであるという前記指示および前記ソフトウェア・スレッドの前記同期状態指示に応答して、前記ディスパッチ・モニターが、前記プロセッサのアイドル状態の原因を前記ソフトウェア・スレッドおよび前記ソフトウェア・スレッドの前記同期状態であると見なすレコードを発生するステップと、
    を含む、方法。
  16. コンピュータ・プログラムであって、請求項15に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
JP2013547952A 2011-01-10 2012-01-05 並行ソフトウェア環境のためのアクティビティ記録システム Active JP5889332B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP11150483.3 2011-01-10
EP11150483 2011-01-10
PCT/IB2012/050051 WO2012095762A1 (en) 2011-01-10 2012-01-05 Activity recording system for a concurrent software environment

Publications (2)

Publication Number Publication Date
JP2014505294A JP2014505294A (ja) 2014-02-27
JP5889332B2 true JP5889332B2 (ja) 2016-03-22

Family

ID=46506805

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013547952A Active JP5889332B2 (ja) 2011-01-10 2012-01-05 並行ソフトウェア環境のためのアクティビティ記録システム

Country Status (6)

Country Link
US (1) US9600348B2 (ja)
JP (1) JP5889332B2 (ja)
CN (1) CN103339606B (ja)
DE (1) DE112012000245T5 (ja)
GB (1) GB2501434B (ja)
WO (1) WO2012095762A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9471458B2 (en) 2012-01-05 2016-10-18 International Business Machines Corporation Synchronization activity recording system for a concurrent software environment
US9081629B2 (en) * 2013-05-19 2015-07-14 Frank Eliot Levine Excluding counts on software threads in a state
US20150052400A1 (en) 2013-08-19 2015-02-19 Concurix Corporation Breakpoint Setting Through a Debugger User Interface
US9465721B2 (en) * 2013-08-19 2016-10-11 Microsoft Technology Licensing, Llc Snapshotting executing code with a modifiable snapshot definition
CA2831134A1 (en) * 2013-10-24 2015-04-24 Ibm Canada Limited - Ibm Canada Limitee Identification of code synchronization points
JP6152786B2 (ja) 2013-11-29 2017-06-28 富士通株式会社 通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法
WO2018051166A1 (en) * 2016-09-15 2018-03-22 Pratik Sharma Application level statistics
US10379928B2 (en) 2017-06-28 2019-08-13 International Business Machines Corporation Preventing software component timer processing issues
CN110515813A (zh) * 2019-08-15 2019-11-29 浙江万朋教育科技股份有限公司 基于shell脚本的oracle监控系统及方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768594A (en) 1995-07-14 1998-06-16 Lucent Technologies Inc. Methods and means for scheduling parallel processors
JPH09179754A (ja) * 1995-12-21 1997-07-11 Mitsubishi Electric Corp タスク監視装置及びタスク監視方法
US6002872A (en) 1998-03-31 1999-12-14 International Machines Corporation Method and apparatus for structured profiling of data processing systems and applications
US6954922B2 (en) * 1998-04-29 2005-10-11 Sun Microsystems, Inc. Method apparatus and article of manufacture for time profiling multi-threaded programs
JP2001109538A (ja) * 1999-10-08 2001-04-20 Nec Eng Ltd パワーマネジメントシステム
US6728955B1 (en) 1999-11-05 2004-04-27 International Business Machines Corporation Processing events during profiling of an instrumented program
US6546443B1 (en) 1999-12-15 2003-04-08 Microsoft Corporation Concurrency-safe reader-writer lock with time out support
US6996745B1 (en) 2001-09-27 2006-02-07 Sun Microsystems, Inc. Process for shutting down a CPU in a SMP configuration
US7421681B2 (en) 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7225309B2 (en) 2003-10-09 2007-05-29 International Business Machines Corporation Method and system for autonomic performance improvements in an application via memory relocation
US20050081206A1 (en) * 2003-10-14 2005-04-14 Armstrong Douglas R. Methods and apparatus for profiling threaded programs
US7617499B2 (en) 2003-12-18 2009-11-10 International Business Machines Corporation Context switch instruction prefetching in multithreaded computer
JP2005284749A (ja) 2004-03-30 2005-10-13 Kyushu Univ 並列処理コンピュータ
US7567963B2 (en) * 2004-06-28 2009-07-28 Intel Corporation Thread synchronization with lock inflation methods and apparatus for managed run-time environments
US8230423B2 (en) * 2005-04-07 2012-07-24 International Business Machines Corporation Multithreaded processor architecture with operational latency hiding
US8095921B2 (en) 2005-10-12 2012-01-10 International Business Machines Corporation Identifying code that wastes time switching tasks
US7474991B2 (en) 2006-01-19 2009-01-06 International Business Machines Corporation Method and apparatus for analyzing idle states in a data processing system
US8219993B2 (en) 2008-02-27 2012-07-10 Oracle America, Inc. Frequency scaling of processing unit based on aggregate thread CPI metric
JP5330384B2 (ja) 2008-06-25 2013-10-30 パナソニック株式会社 情報処理装置、情報処理方法及び情報処理プログラム
CN101334742B (zh) * 2008-08-05 2011-06-01 中国科学院软件研究所 一种Java EE应用服务器并发处理方法
CN101403982B (zh) 2008-11-03 2011-07-20 华为技术有限公司 一种多核处理器的任务分配方法和系统
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US20120180057A1 (en) 2011-01-10 2012-07-12 International Business Machines Corporation Activity Recording System for a Concurrent Software Environment
US9471458B2 (en) 2012-01-05 2016-10-18 International Business Machines Corporation Synchronization activity recording system for a concurrent software environment

Also Published As

Publication number Publication date
JP2014505294A (ja) 2014-02-27
US9600348B2 (en) 2017-03-21
GB2501434A (en) 2013-10-23
CN103339606A (zh) 2013-10-02
GB201313798D0 (en) 2013-09-18
CN103339606B (zh) 2017-04-26
GB2501434B (en) 2013-12-25
US20130227586A1 (en) 2013-08-29
DE112012000245T5 (de) 2013-08-14
WO2012095762A1 (en) 2012-07-19

Similar Documents

Publication Publication Date Title
JP5889332B2 (ja) 並行ソフトウェア環境のためのアクティビティ記録システム
US9081629B2 (en) Excluding counts on software threads in a state
US20120180057A1 (en) Activity Recording System for a Concurrent Software Environment
US8136124B2 (en) Method and apparatus for synthesizing hardware counters from performance sampling
US9858169B2 (en) Monitoring a data processing apparatus and summarising the monitoring data
US9471458B2 (en) Synchronization activity recording system for a concurrent software environment
Dean et al. Perfcompass: Online performance anomaly fault localization and inference in infrastructure-as-a-service clouds
US20070067777A1 (en) Logging lock data
US5872913A (en) System and method for low overhead, high precision performance measurements using state transistions
US20110138389A1 (en) Obtaining application performance data for different performance events via a unified channel
Seelam et al. Extreme scale computing: Modeling the impact of system noise in multicore clustered systems
Izadpanah et al. Production application performance data streaming for system monitoring
EP2735970B1 (en) Dynamic library profiling method
WO2005006205A1 (en) A method of efficient performance monitoring for symmetric multi-threading systems
Walcott-Justice et al. THeME: A system for testing by hardware monitoring events
Zheng et al. Vapro: Performance variance detection and diagnosis for production-run parallel applications
US6725363B1 (en) Method for filtering instructions to get more precise event counts
Meng et al. Convul: an effective tool for detecting concurrency vulnerabilities
US8160845B2 (en) Method for emulating operating system jitter
Dimpsey et al. Performance prediction and tuning on a multiprocessor
de Kergommeaux et al. Monitoring parallel programs for performance tuning in cluster environments
Larysch Fine-grained estimation of memory bandwidth utilization
Song et al. On the existence of probe effect in multi-threaded embedded programs
Sasongko et al. Precise event sampling on amd versus intel: Quantitative and qualitative comparison
Fiorini et al. Visualization of profiling and tracing in CPU‐GPU programs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140812

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160216

R150 Certificate of patent or registration of utility model

Ref document number: 5889332

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150