JP2010003057A - プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法 - Google Patents

プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法 Download PDF

Info

Publication number
JP2010003057A
JP2010003057A JP2008160429A JP2008160429A JP2010003057A JP 2010003057 A JP2010003057 A JP 2010003057A JP 2008160429 A JP2008160429 A JP 2008160429A JP 2008160429 A JP2008160429 A JP 2008160429A JP 2010003057 A JP2010003057 A JP 2010003057A
Authority
JP
Japan
Prior art keywords
event
program
performance profiling
processor
application program
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
JP2008160429A
Other languages
English (en)
Other versions
JP5326374B2 (ja
Inventor
Shigeru Kimura
茂 木村
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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2008160429A priority Critical patent/JP5326374B2/ja
Priority to US12/379,549 priority patent/US20090319758A1/en
Publication of JP2010003057A publication Critical patent/JP2010003057A/ja
Application granted granted Critical
Publication of JP5326374B2 publication Critical patent/JP5326374B2/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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • 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/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • 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/88Monitoring involving counting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】OS環境下で実行中のプログラムに対して、プログラムの修正や実行停止することなく、特定のプログラムの挙動に関する情報を取得すること。
【解決手段】性能プロファイリング取得ツール120では、プロセッサ100のイベントコンテキストレジスタ102に測定対象となるプロセスのプロセスIDを登録する。そして、OS110の環境下で測定対象プログラム111が実行されると、実行中の測定対象プログラム111のプロセスIDが実行情報としてプロセッサ100のコンテキストレジスタ103に記録される。コンテキストレジスタ103に記録されたプロセスIDは、比較器104によって、イベントコンテキストレジスタ102に登録されている測定対象となるプロセスIDと比較される。比較器104では、比較されたプロセスID同士が一致した場合にのみ、イベントカウンタ105にカウント指示を出力する。
【選択図】図1

Description

この発明は、OS環境下で実運用中のプログラムについての性能プロファイリングを取得するためのプロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法に関する。
従来より、プロセッサの多くには、プロセッサ内部のイベントや、外部とのやり取りによるイベントなどをカウントするためのカウンタ(以下、「イベントカウンタ」とよぶ)が搭載されている。たとえば、インテル社のペンティアム(登録商標)プロセッサでは、複数本のカウンタを備えている。これらのカウンタによって、クロック数、実行命令数、あるいはキャッシュミス数などの多数のイベントの中から選択してイベントカウントとして機能するように構成されている。このようなカウント機能によって、プロセッサによって実行されているアプリケーションプログラム(以下、「プログラム」という)のどのプロセスが多く使用されているかといったプロセッサの動作の解析が可能となった。
また、上記のようなプロセッサの他にIBM社のパワーPCプロセッサも、ペンティアムプロセッサと同様に複数のカウンタを備えた構成が採用されており、多数のイベントの中から選択してカウントすることができる。これによりパイプラインストール、メモリトラフィック、バス負荷情報などのアーキテクチアのイベント情報とプログラムカウンタ(PC)を同時に取得することが可能となる。そして、これらの情報を参照することによって、どの関数や処理でイベントが多く発生しているかを解析可能となった。さらに、時系列に即して連続的に上記の情報を取得し、グラフなどにより視覚的に出力することによって、局所的な問題箇所や、システム全体を通したイベント情報の推移や高負荷部分を特定することができる(たとえば、下記特許文献1参照。)。
従来、これらイベント情報を取得するには、累積型と割込み型との2つの手法が用いられている。累積型の場合、指定したイベント(たとえば、実行サイクル数やキャッシュミス回数など)が発生するごとにイベント値をカウントする。そして、プロセッサには、イベントカウンタによってカウントされた測定範囲のイベント値の累積値が格納されることによってイベント情報が取得される。
一方、割込み型の場合、プロセッサには、イベントカウンタに加えて、あらかじめ指定した閾値を超える回数のイベント(たとえば、実行サイクル数やキャッシュミス回数など指定したイベント)が発生するごとに割込みを発生させるカウンタ機構が内蔵されている。そして、割込みハンドラ(割込み内容に応じて呼び出されるプログラム)では、割込み発生アドレス(プログラムカウンタ)とイベントカウンタによるカウント値などイベント情報が取得され、イベントの発生した関数や命令を特定することができる。
なお、上述したイベントとは、たとえば下記のようなプロセッサ内のハードウェア動作をあらわす情報である。
−実行サイクル数
−キャッシュミス数
−TLBミス数
−実行命令数
−実行命令並列度
−分岐命令実行数
−特定命令の実行数
−パイプラインストール要因
−レジスタ干渉サイクル数
−バスアクセス情報
上述した手法のいずれを採用するかは、基本的には、プログラムを実行させるプロセッサのハードウェア構成に依存していた。とはいえ、割込み生成機能を有さない種類のプロセッサであっても、プロセッサ内蔵のインターバルタイマによる一定時間ごとの割込み機能を利用することによって上述したような割込み型のイベント情報の取得を実現することも可能であった。
特開2004−318538号公報
しかしながら、上述したような従来技術を用いてイベント情報すなわちプログラムの性能プロファイリングを取得するには、通常のプログラムにイベント情報処理を付加した専用のプログラムを用意しなければならなかった。図13は、従来の性能プロファイリング処理の構成を示す説明図である。図13のように、プロセッサ1300は、プログラム実行部1301と、イベントカウンタ1302と、プログラムカウンタ1303とが含まれている。
ここで、プロセッサ1300が、プログラム実行部1301によって測定対象プログラム1304を実行させ、測定対象プログラム1304の性能プロファイリングを実施する場合について説明する。図13のように、測定対象プログラム1304には、性能プロファイリングを実施したい部分となる関数あるいはルーチンの前後に、性能プロファイリング開始呼び出しコマンド1310と、性能プロファイリング終了呼び出しコマンド1320と、性能プロファイリング関数(取得ルーチン)とが付加されている。
すなわち、実行中の測定対象プログラム1304を、本来の構成ではなく、性能プロファイリング用に修正しなければならない。また、イベント情報のカウント時にはデバッグ情報やC言語などで記述されたソースプログラム(プログラミング言語によらないため以下、ソースプログラムと表現する)が必要であるが、これら環境のないプログラムのイベント情報は取得できない。さらに、イベント取得ルーチンをリンクするため、取得したイベントに誤差が発生してしまう。たとえば、イベントとして命令キャッシュ情報を指定した場合、プログラムにイベント取得ルーチンをリンクするため、コートサイズが大きくなり、イベント取得ルーチンによる副作用が発生するというように、様々な問題を抱えていた。
さらに、OS環境下では、性能プロファイリングを測定したい測定対象プログラムと他のプログラムとを同時に実行させるような利用状況が多々発生する。図14は、複数のプログラムを実行させた場合のイベントカウンタのカウント処理を示す説明図である。図14のようにプロセス1と、プロセス2とが同時に実行されているとしても、イベント情報は同一のイベントカウンタ1302によってカウントされてしまう。したがって、測定対象プログラムのみのイベント情報やプログラムカウンタ情報を取得することは不可能であった。
この発明は、上述した従来技術による問題点を解消するため、OS環境下で実行中のプログラムに対して、プログラムの修正や実行停止をすることなく、特定のプログラムの挙動に関する情報を取得することのできるプロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、プロセッサは、OS上で任意のアプリケーションプログラムを実行可能なプロセッサであって、前記任意のアプリケーションプログラムの中の測定対象となるイベントのIDが登録されたイベントコンテキストレジスタと、前記OS上で前記任意のアプリケーションプログラムが実行されると、当該アプリケーションプログラムによって実行されたイベントのIDを記録するコンテキストレジスタと、前記コンテキストレジスタに記録されたイベントのIDと、前記イベントコンテキストレジスタに登録されている測定対象となるイベントのIDとを比較する比較器と、前記比較器によって前記ID同士が一致すると判断された回数をカウントするイベントカウンタと、を備えることを要件とする。
このプロセッサによれば、実行中のアプリケーションプログラムにおいて、イベントコンテキストレジスタに登録された測定対象となるイベントのIDに関するカウントが蓄積される。
また、上述した課題を解決し、目的を達成するため、この性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法は、複数のレジスタを備え、オペレーティングシステム(以下、「OS」という)上で任意のアプリケーションプログラムを実行可能なコンピュータが、前記OS上で前記任意のアプリケーションプログラムが実行されると、当該アプリケーションプログラムによって実行されたイベントのIDを前記複数のレジスタの中の一のレジスタに記録する処理と、前記一のレジスタに記録されたプロセスIDと、前記一のレジスタ以外の他のレジスタにあらかじめ登録されている測定対象となるイベントのIDとを比較する処理と、比較した前記ID同士が一致すると判断された回数をイベント情報としてカウントする処理と、を含むことを要件とする。
この性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法によれば、アプリケーションプログラムを構成するすべてのイベントの中から指定したイベントに関する情報を取得することができる。
このプロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法によれば、OS環境下で実行中のプログラムに対して、アプリケーションプログラムの修正や実行停止をすることなく、特定のプログラムの挙動に関する情報を取得することができるという効果を奏する。
以下に添付図面を参照して、このプロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法の好適な実施の形態を詳細に説明する。このプロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法では、あらかじめ測定対象となるイベントのIDを登録しておくレジスタを用意し、実行させたイベントのIDと登録されているIDとを比較して、ID同士が一致した場合にのみイベントカウンタによってカウントさせる。したがって、イベントカウンタでは、測定対象となるイベントのIDに範囲を絞ったイベント情報を取得することができる。また、測定対象プログラム自体にイベント情報取得用のコマンドを埋め込む必要もない。なお、以下の説明では、アプリケーションプログラムに含まれるイベントの一例としてプロセスを指定して性能プロファイリングを取得するための処理とする。
(性能プロファイリング処理の概要)
まず、本実施の形態にかかる性能プロファイリング処理の概要について説明する。図1は、本実施の形態にかかる性能プロファイリング処理の概要を示す説明図である。本実施の形態では、プロセッサ100に、従来のイベントカウンタ、イベントモード設定レジスタ、しきい値保持レジスタ、コンテキストレジスタなどに加えて、新しくイベントコンテキストレジスタが内蔵されている。OS110上では、上述のような構成のプロセッサ100のプログラム実行部101によって測定対象プログラム111が実行される。
そして、性能プロファイリングを取得する場合には、性能プロファイリング取得ツール120を実行させる。性能プロファイリング取得ツール120では、コンピュータのハードウェア資源をイベントコンテキストレジスタ102に測定対象となるプロセスIDを登録する登録手段と、イベントカウンタ105によってカウントされた測定対象となるプロセスIDのイベント情報のカウント数を取得する取得手段と、この取得手段によって取得した情報を出力する出力手段として機能させる。
たとえば、プロセッサ100のイベントコンテキストレジスタ102に測定対象プログラム111の中のさらに測定対象となるプロセスをあらわすプロセスIDを登録する。そして、OS110の環境下で測定対象プログラム111が実行されると、性能プロファイリング取得ツール120は、実行中の測定対象プログラム111のプロセスIDが実行情報としてプロセッサ100のコンテキストレジスタ103に記録させる。コンテキストレジスタ103に記録されたプロセスIDは、比較器104によって、イベントコンテキストレジスタ102に登録されている測定対象となるプロセスIDと比較される。比較器104では、比較されたプロセスID同士が一致した場合にのみ、イベントカウンタ105にカウント指示を出力する。したがって、イベントカウンタ105のカウント結果は、測定対象となるプロセスIDに絞ったイベント情報として出力される。なお、プロセッサ100には、従来のプロセッサと同様に、プログラムカウンタ106も搭載されており、イベントカウンタ105のカウントのタイミングに連動してプログラムカウント結果を出力することができる。したがって、プロセッサ100からは、プログラムカウンタ106によるプログラムカウント値と対応つけられたイベントのカウント結果が性能プロファイリング情報として取得される。
なお、上述の説明では、OS110上で実行されるプログラムにおけるプロセスを測定対象としてイベントコンテキストレジスタ102に登録しているが、測定対象は、プロセスに限るものではない。すなわち、タスクやスレッドでも同様に測定対象として登録可能である。したがって、以下の説明では、便宜上プロセスを測定対象としているが、実際には、タスクやスレッドに置換可能な処理となる。
(性能プロファイリング取得ツール)
つぎに、上述した本実施の形態にかかる性能プロファイリング処理を実現するための性能プロファイリング取得ツール120の構成について説明する。図2は、性能プロファイリング取得ツールの構成を示す説明図である。すなわち、本実施の形態では、上述したプロセッサ100によって測定対象プログラム111を実行させたコンピュータに性能プロファイリング取得ツール120を適用させることによって、上述したような性能プロファイリング装置が実現される。性能プロファイリング取得ツール120は、測定対象プログラム111に対して、プロセスID、取得イベント、取得権限や割込みのしきい値などをパラメタで指定して測定対象プログラムのイベント情報を取得する。
また、図2のように、性能プロファイリング取得ツール120は、アプリケーション層によって実現される。したがって、ユーザが登録した特定のプロセスに絞ったイベント情報を取得する際は、性能プロファイリング取得ツール120からプロセッサ100の各ハードウェア資源を利用するために、イベント取得ライブラリ200からOS110の環境下のドライバを経由して各ハードウェア資源にアクセスするなど、一般的なハードウェア資源のアクセス階層にしたがった処理をおこなう。
<プロセッサの構成>
ここでは、まず、性能プロファイリング取得ツール120に用いられているプロセッサ100の構成について説明する。図3は、プロセッサの構成を示すブロック図である。なお、図3のプロセッサ100では、性能プロファイリング取得ツール120に利用する構成のみ抽出して表示している。したがって、実際のプロセッサ100には、クロックコアをはじめとするプログラム実行部101(図1参照)のような、従来のプロセッサと同様の機能部を含んでいるが、それらは図示および説明は省略する。
したがって、図3のプロセッサ100には、上述したイベントコンテキストレジスタ102と、コンテキストレジスタ103と、比較器104と、イベントカウンタ105に加えて、実行中の測定対象プログラム111の測定対象となるイベントモードの設定が記録されているイベントモード設定レジスタ301と、割込み処理の判断基準となるしきい値が保持されたしきい値保持レジスタ302と、比較器303とが備えられている。
イベントカウンタ105には、プログラム実行部101(図1参照)から実行中のイベントに関する情報が入力される。そして、イベントカウンタ105は、イベントモード設定レジスタ301に設定されているイベントモードと、実行中のイベントとが一致し、なおかつ、比較器104からイベントコンテキストレジスタ102に登録されたプロセスIDとコンテキストレジスタ103に記録されたプロセスIDとの一致をあらわす信号が入力された場合に(イベントカウンタ105内部の比較器によって判断する)、加算器に1を加算させてイベント情報を計数する。加算器の計数結果は、記憶領域に格納され、性能プロファイリング取得ツール120の呼び出しに応じて出力される。
なお、図1の比較器104ではイベントコンテキストレジスタ102とコンテキストレジスタ103を入力としているが、これ以外にも任意のレジスタを比較条件として追加してもよい。たとえば、カーネル権限/ユーザ権限での走行状態を区別するレジスタを追加すると、カーネル権限/ユーザ権限ごとに特定プロセスの特定イベントを計測することができる。
また、プロセッサ100における比較器303は、イベントカウンタ105の計数結果と、しきい値保持レジスタ302に保持されたしきい値とを比較して、一致したタイミングで性能プロファイル割込みハンドラを実行させることができる。したがって、比較器303の判断によって割込み手段が発生させられた割込み間隔ごとに、イベントカウンタ105によってカウントされた測定対象となるプロセスIDのイベント情報のカウント数を取得することもできる。
図2の説明に戻ると、たとえば、Linuxシステムでは、測定対象に登録したプロセスIDのイベント情報を取得するためには、OSに組み込まれる専用アクセスドライバを用意する。このドライバは、測定対象となるプロセスを特定するため、イベントコンテキストレジスタ102にプロセスIDを設定する機能を備えている。
また、イベント取得ライブラリ200は、ユーザがイベント取得関数に指定した対象プログラムのプロセスIDと各種パラメタ(取得対象イベント、取得開始指示、取得終了指示、取得権限、しきい値)が蓄積されている。これら蓄積された情報から性能プロファイリング取得ツール120によって測定対象を指定することによって、イベント取得ドライバ112を呼び出すことができる。
なお、イベント取得ライブラリ200に蓄積しておくイベント取得の関数名は任意でよい。具体例を挙げると、実施例1として、一つの関数名で取得開始/終了を切り分ける例がある。この場合は、「pa_driver(pid,para,mode,l);para(1:開始,2:終了),mode(イベント種別),l(u:user,s:system)」という関数名となる。
また、実施例2として、取得開始関数:pa_startと、取得終了関数:pa_stopとを別関数にする例がある。この場合は、「pa_start(pid,mode,l);」、「pa_stop(pid,mode,l);」といった関数名となる。
つぎに、イベント取得ドライバ112の処理手順について説明する。図4は、イベント取得ドライバの処理手順を示すフローチャートである。図4において、ユーザによってイベント取得関数に指定された測定対象プログラム111のプロセスIDを取得する(ステップS401)。
つぎに、取得するイベント種別と開始指定をイベントカウンタ105に指定する(ステップS402)。そして、現在プロセッサ100において実行しているプロセスIDが、ステップS401によって指定されたプロセスIDと等しいか否かを判断する(ステップS403)。ここで、ステップS401によって指定されたプロセスIDと等しいと判断された場合(ステップS403:Yes)、イベントカウンタ105を計数し(ステップS404)、イベント情報を呼び出し元であるイベント取得ライブラリ200に通知して(ステップS405)、一連の処理を終了する。また、ステップS403において、ステップS401によって指定されたプロセスIDと等しくないと判断された場合(ステップS403:No)、ステップS404の処理をおこなわずに、そのままステップS405の処理に移行する。
以上のようにイベント取得ドライバおよびイベント取得ライブラリの処理概要をLinuxの場合を例に挙げて説明したが、OS種類やタイプによらず、また、OSのない環境でも同様に適用できる。本実施の形態では、便宜上以下の説明もLinuxであらわす。
<性能プロファイリング取得ツールの処理手順>
つぎに、性能プロファイリング取得ツール120の処理手順について説明する。図5は、性能プロファイリング取得ツールの処理手順を示すフローチャートである。図5のフローチャートにおいて、まず、性能プロファイリング取得ツール120によって指定されたプロセスのIDを測定対象のプロセスIDに登録する(ステップS501)。
つぎに、登録されたプロセスID、取得PAなどを指定してプロファイリング用ライブラリを呼び出し(ステップS502)、呼び出したプロファイリング用ライブラリから対象プロセスのイベント情報、プログラムカウンタなどの各種情報のPA情報を取得し、記録する(ステップS503)。
そして、PA情報(たとえば、実行サイクル数、キャッシュミス数など)を、コマンドパラメタの出力形式に応じて出力して(ステップS504)、一連の処理を終了する。このステップS504の出力形式としては、たとえば、プログラム一括、関数、処理といった所定の単位ごとに出力する(これらの出力形式は後ほどコマンド実施例の説明にあわせて例示する)。
<コマンド実施例>
以下に、性能プロファイリング取得ツール120における具体的なコマンドの実施内容を例示する。
・コマンド実施例1
attachPA −set 1000 −l us −start −pa 3
→プロセスID:1000のデータキャッシュのPA情報(PA種別:3)をユーザ権限およびシステム権限の配下(−l us)で取得開始させるコマンド
attachPA −set 1000 −stop
→プロセスID:1000の命令キャッシュのPA情報取得を終了し結果を表示させるコマンド
・コマンド実施例2
attachPA −start user_prog −pa 3
→プログラムuser_progの起動と同時にPA情報の取得(PA種別:3)を開始させるコマンド
attachPA −stop user_prog
→プログラムuser_progの取得を終了し、結果を表示させるコマンド
<出力表示例>
上述したコマンドを実施することによって下記のようなデータが出力される。
・出力表示例1(一括出力)
Data cache miss information
Data cache miss ratio(a/b*100):8.76%
Data cache miss cycles(a) :19547
Execution cycles(b) :523141
上記の出力表示例1は、測定範囲全体での取得結果を一括出力によって表示している。この出力表示例1にプログラムカウンタから取得した情報を組み合わせることによって、イベント発生回数と対応するイベント発生位置を特定することができる。したがって、下記の出力表示例2(関数単位)と出力表示例3(命令単位)ではイベント情報(「実行サイクル数」、「キャッシュミス」など)の一括表示に加え、関数単位および命令単位に出力できる。関数単位および命令単位の出力は、イベント発生時のプログラムカウンタ情報を照合することで、イベント情報発生時の関数や処理単位を特定できる。なお、イベント情報への対応付けはプログラムファイルのシンボル情報やデバッグ情報などを使用する。
・出力表示例2(関数単位)
Data cache miss information
発生関数 キャッシュミスサイクル数
Func1 : 12345 (7.11%)
Func2 : 9345 (5.38%)
Func3 : 8845 (5.09%)
… … …
Total : 173741
・出力表示例3(命令単位)
Data cache miss information
発生アドレス キャッシュミスサイクル数
0x00200000 : 5582(3.21%)
0x00100100 : 4126(2.37%)
0x00201000 : 3991(2.30%)
… … …
Total :173741
なお、OS110のスケジューラでは、性能プロファイリング取得ツール120が開始された時点より、プロセスIDが変化しないような処理をおこなう。具体的には、OS110におけるドライバによる呼び出しがあった場合、測定対象プログラム111のコンテキスト(プロセス)は、システムスワップ対象になった場合であっても、プロセスIDを測定対象プログラム111の実行が終了するまで変更させないように設定しておく。このような設定を施しておくことによって、コンテキストレジスタ103に記録される実行中のプロセスIDが、システムスワップなどによって変更されたときに、イベントコンテキストレジスタ102に登録した測定対象となるプロセスIDとの一致判断を正しくおこなえないような事態を回避することができる。
(ソフトウェアによる実現例)
つぎに、性能プロファイリング処理のソフトウェアによる実現例について説明する。上述した性能プロファイリング取得ツール120では、従来のプロセッサに、ハードウェアを追加することによって、選択したプロセスに絞ったイベント情報を取得していた。しかしながら、本実施の形態にかかる性能プロファイリング取得ツール120は、上述したハードウェアの機能をソフトウェアによって実現させてもよい。したがって、以下に性能プロファイリング取得ツール120のソフトウェアによる実現例について説明する。
<イベント情報取得時のカーネル処理>
イベントコンテキストレジスタおよびコンテキストレジスタがプロセッサ100に内蔵されていない場合、プロセスごとのイベントカウントは、カーネルのタスクスイッチ時にソフトウェアにより対象プロセスを識別させればよい。以下に、イベント情報処理時のカーネルの処理手順について説明する。図6,7は、イベント情報取得時のカーネルの処理手順を示すフローチャートである。なお、図6のフローチャートでは、実行開始するプロセスを選択するカーネルに関する処理をあらわしている。また、図7のフローチャートでは、実行中プロセスが中断してカーネルに復帰した際の処理をあらわしている。
図6のフローチャートでは、まず、測定対象プログラムのプロセスIDを取得する(ステップS601)。つぎに、タスクスイッチにより実行再開するプロセスIDを求める(ステップS602)。そして、測定対象となるプロセスのプロセスIDと、タスクスイッチにより実行再開するプロセスIDとが等しいか否かを判断する(ステップS603)。
このステップS603において、測定対象となるプロセスのプロセスIDと、タスクスイッチにより実行再開するプロセスIDとが等しいと判断された場合(ステップS603:Yes)、プロセッサ100のイベント測定開始を指示する(ステップS604)。その後、実行再開するタスクに分岐して(ステップS605)、一連の処理を終了する。なお、ステップS603において、測定対象となるプロセスのプロセスIDと、タスクスイッチにより実行再開するプロセスIDとが等しくないと判断された場合(ステップS603:No)、ステップS604の処理をおこなわずに、そのままステップS605の処理に移行する。
また、図7のフローチャートでは、まず、測定対象プログラム111のプロセスIDを取得する(ステップS701)。つぎに、タスクスイッチにより実行中断したプロセスIDを求める(ステップS702)。そして、測定対象となるプロセスのプロセスIDと、タスクスイッチにより実行中断したプロセスIDとが等しいか否かを判断する(ステップS703)。
このステップS703において、測定対象となるプロセスのプロセスIDと、タスクスイッチにより実行中断されたプロセスIDとが等しいと判断された場合(ステップS703:Yes)、プロセッサ100のイベント測定停止を指示する(ステップS704)。その後、タスクスイッチしたタスクに分岐して(ステップS705)、一連の処理を終了する。なお、ステップS703において、測定対象となるプロセスのプロセスIDと、タスクスイッチにより実行中断されたプロセスIDとが等しくないと判断された場合(ステップS703:No)、ステップS704の処理をおこなわずに、そのままステップS705の処理に移行する。
なお、ステップS603およびステップS703において、他の任意の比較条件を追加することもできる。たとえは、カーネル権限/ユーザ権限での走行状態を区別する処理を追加すると、カーネル権限/ユーザ権限ごとに特定プロセスの特定イベントを計測することができる。
このように、本実施の形態にかかる性能プロファイリング処理は、上述したような専用のプロセッサ100が搭載されていない場合であっても、上述のカーネル処理を実現させるための性能プロファイリングプログラムを追加することによって、汎用コンピュータによって性能プロファイリング取得ツール120に相当する処理を実現させることもできる。
<性能プロファイリングに基づいたチューニング>
本実施の形態では、性能プロファイリング取得ツール120によって取得したイベント情報に基づいて、プログラムの状態を監視し、プロセスおよびプログラムの実行状態を判断してプログラム優先順位やシステム資源を割りつけるなどのチューニングを施すことができる。
特に、本実施の形態にかかる性能プロファイリング取得ツール120では、実運用環境において測定対象プログラムを止めることなく、各種の性能プロファイリング情報を取得できるためチューニング手番を削減できる。たとえば、バス効率の悪いプログラムやストールの多いプログラムを運用中の複数プログラムから抽出してから、チューニングに取りかかることができるなどチューニングに関する作業を効率化できる。
さらに、取得した各種イベントカウンタをもとに、自動的にプログラムの状態を監視して、プロセスおよびプログラムの実行状態を判断してプログラム優先順位やシステム資源を割りつけるようなチューニングをおこなってもよい。図8は、イベント情報に基づいたチューニングの処理手順を示すフローチャートである。図8のフローチャートでは、測定対象プログラムの状態を監視して自動的にプログラムの優先順位やシステム資源の割り当てをおこなう。
まず、チューニング対象とするプロセス群を抽出する(ステップS801)。そして、ステップS801によって抽出した複数の対象プロセスについてプロファイリング取得ツールを実行して各プロセスのイベント情報を取得する(ステップS802)。そしてプロセスに対応するイベント情報の値に応じてOSのプロセスの実行・資源割当ての優先順位を変更して(ステップS803)、一連の処理を終了する。
上述したステップS801の処理を詳細に説明すると、このステップでは、プロセス状況をOSにて判断できる指標(たとえば、CPU走行時間、メモリ使用率、I/O走行時間、ネットワーク負荷率など)や、外部で定義した任意の指標からチューニング対象とすべきプロセスを抽出することができる。また、ユーザからのプロセスIDの指定を受け付け、指定されたプロセスIDに対応するプロセスを抽出対象としてもよい。
なお、上述したチューニングをOSに組み込む場合は、スケジューリングや資源の割り当てなど任意のタイミングで走行させて、その結果をスケジューリングや資源割り当てにフィードバックさせればよいし、OSに対する制御プログラムとして外部ツールとして用意してもよい。
つぎに、ステップS803の変更処理について具体例を挙げて説明する。ここでは、ステップS802の処理によって、測定対象プログラムの中のCPUの走行率の大きい上位5つのプロセスが選択され、それぞれイベント情報が取得された場合、たとえば、下記のような判断がおこなわれる。
・I/Oアクセス待ちの大きいプロセスの優先順位を1レベル下げる。
・キャッシュミスの大きいプロセスの組合せを調査して、キャッシュミスの大きいプロセスで同時走行しないようにスケジューリングを変更する。
・アイドル状態の多いプロセスの実行時の動作周波数を低くする。
・キャッシュミスの大きいプログラムや共用ライブラリ関数から呼び出されるシステムコールの資源割当てや電力削減を調整する。
上述のようなチューニングによってシステム全体としてスループット向上や電力削減を図ることができる。これは一例であり、判断の基準や内容は上述のものに限らず、プログラムやユーザで任意に定義することができる。また、これらデータをマージし、蓄積した経験値として、データベース化してその値を自動的に活用することもできる。これらの情報を取得するごとにマージされた値を経験値としてメモリに保持することで、プロファイリングの精度を向上させることもできる。
(入出力GUI)
つぎに、性能プロファイリング取得ツール120を利用する際の入出力GUIについて説明する。上述した性能プロファイリング取得ツール120をより効果的に利用させるには、ユーザに扱いやすい入出力GUIを用意することが求められる。したがって、以下に、性能プロファイリング取得ツール120に適用可能な入出力GUIについて具体例を挙げて説明する。
<入力例>
まず、入力例について説明する。図9,10は、性能プロファイリング取得ツールの入力例を示す説明図である。図9では、コマンド実施例1において、OSの管理ツールと連携して測定対象となるPAを選択させるウィンドウ900を用意している。このウィンドウ900では、起動済みプロセスがOS110の管理ツールから性能プロファイリング取得ツール120が選択されることによって表示される。さらに、ウィンドウ900のプロセス名にカーソルを合わせると、ポップアップメニューが表示される。
ポップアップメニューでは、PA情報を取得するための各種項目が表示される。ポップアップメニューとして具体的には、測定の開始と終了の動作を指示するメニューや取得したPA情報を表示させるメニューといった項目が用意されている。これら各種項目も、カーソルを合わせるとさらにPA項目を選択させるリストボックスなどが表示される。これにより、コマンドインタフェースよりも優れた方法で操作が可能となる。またプロファイリング取得ツールに他のパラメタがある場合には任意に追加してもよい。なお、GUIで使用する部品は、特定のシステムによらず使用するウィンドウシステムで用意されている汎用的な部品やオリジナルな部品(任意)を使用して表示させてもよい。
また、図10では、コマンド実施例2において、OSの管理ツールと連携して測定対象となるPAを選択させるウィンドウ1000を用意している。GUI表示のウィンドウ1000において、測定対象プログラム111の起動と同時に、PAイベント情報を取得する場合は、測定対象プログラムのアイコンの選択、または、スタートメニューからの性能プロファイリング取得ツール120(上述したコマンド実施例2におけるattachPA −startコマンド)の選択をトリガに測定対象プログラム111が起動されるように設定しておく。なお、図10のウィンドウ1000では、測定対象プログラムのアイコン1001が選択(クリックなど)され、測定対象プログラム111が起動する場合を示している。
さらに、測定対象プログラム111のアイコン1001のプロパティ属性設定メニュー1002では、上述したコマンド形式2でのコマンドを内部的に起動できるようにする。また測定対象プログラム111のアイコン1001のプロパティ属性設定メニュー1002から、指定するPA種別の選択メニューおよびPA測定結果をあらわすメニューがリンクして表示されるように設定しておく。また、性能プロファイリング取得ツール120に他のパラメタがある場合には、他のパラメタの内容に応じて任意に対応するメニューを追加することもできる。
ウィンドウ1000におけるユーザの動作指示としては、たとえば、ダブルクリックにより、コマンド形式2でのattachPA −startコマンドから測定対象プログラムを起動するように設定する。また、シングルクリックにより、コマンド形式2でのattachPA −stopコマンドを起動して、PA測定を停止するように設定する。なおダブルクリック、シングルクリックとの対応付けはウィンドウシステムでの対応付けにしたがうように指定し、動作指定は、上述したような他の任意のGUI操作イベントに対応付けてもよい。さらに図9,図10のポップアップメニューにて、任意の抽出条件を追加することもできる。たとえば、カーネル権限/ユーザ権限での走行状態ごとの測定条件を設定してもよい。
<出力例>
つぎに、出力例について説明する。図11,12は、性能プロファイリング取得ツールの出力例を示す説明図である。図11の図表1100では、割込みアドレスから換算したソース名、関数、命令アドレスごとの関数定義位置に対応させてイベント回数のカウント結果が表示される。図表1100の場合は、出力結果のうち、1101部分のアドレス付近におけるイベント情報のカウント数が大きい。したがって、1101部分に対応する関数定義位置1102から、「ソース名S、関数F、アドレスXXXXX」というようにプロセスを特定することができる。
一方、図12では、ウィンドウ1200に関数内の命令ごとにイベント回数のカウント結果(図11の図表1100参照)を表示させている。具体的には、性能プロファイリング取得ツール120において、取得されたイベント回数(カウント数)と、実行中のプログラムとを照合する照合処理部と、照合結果を用いて、前記取得手段によって取得された値のうち、所定数以上となる値となったに対応する関数、処理および命令を前記プリケーションプログラムの中から抽出する抽出処理部を追加すればよい。そして、出力の際に抽出処理部によって抽出された関数、処理および命令を出力する。さらに、ウィンドウ1200は、関数や命令の位置をクリックすることによって対応するソースプログラムやアセンブラソースをあらわすウィンドウ1201を表示させるようにリンクさせておいてもよい。さらに図12にて、任意の表示条件を追加することもできる。たとえばカーネル権限/ユーザ権限での走行状態ごとに表示条件を設定でき、それら条件ごとに表示してもよい。
このように、本実施の形態にかかる性能プロファイリング取得ツール120では、図9,10のような入力用のGUIを用意することにより、ユーザが操作しやすい操作環境を提供することができる。また、図11,12のような出力用のGUIとして、イベント情報をオペレーティングシステムの管理ツールとグラフィカルに連携して表示することにより、操作性を改善される。結果として、チューニング工数の効率化をはかることができる。
以上説明したように、本実施の形態にかかる性能プロファイリング処理を適用することにより、実運用環境において測定対象プログラムを止めることなく、各種チューニングプロファイリング情報を取得できる。したがって、利用者に要求されるチューニング処理が大幅に削減される。たとえば、バス効率の悪いプログラムやストールの多いプログラムを運用中の複数プログラムから抽出してから、チューニングに取りかかることができるなどチューニグ作業の効率化を図れる。
また、本実施の形態にかかる性能プロファイリング処理を適用することにより、実運用環境において測定対象プログラムを止めることなく、各種チューニングプロファイリング情報を取得できるためチューニング手番を自動的におこなわせることができる。たとえば、運用中の複数プログラムから、バス効率の悪いプログラムやストールの多いプロセス部分を自動抽出してオペレーティングシステムが自動的に最適なスケシューリング、実行性能及び消費電力の最適化を施せば、これらのプログラムのシステム全体の実行効率や電力効率を上げることができる。
さらに、本実施の形態にかかる性能プロファイリング処理を適用することにより、実運用環境でソース等に修正を加えることがないため、修正によるオーバーヘッドの影響がない状態でイベント情報を取得できる。
また、従来は不可能であったソースプログラムのない、第3者の作成したプログラムについてのイベント情報を取得できるため、システム全体のスループットを高めることができる。したがって、第1の利点として、I/Oアクセス待ちの大きい第3者プログラムの優先順位をユーザが下げる、もしくはオペレーティングシステムが自動的に判断するなど、システム全体を見通したチューニングが可能となる。また、第2の利点として、キャッシュミスの大きくなるプロセスの相性を調査して、キャッシュミスの大きいプロセスがなるべく同時に走行しないようにスケジューリングを変更することができる。さらに、第3の利点として、アイドル状態の多いプロセスの実行時の動作周波数を低くする。これにより、電力消費を削減することができるといったチューニングが可能となる。
以上説明したように、本実施の形態にかかる性能プロファイリング処理を適用することによって、OS環境下で実行中のプログラムに対して、プログラムの修正や実行停止をすることなく、特定のプログラムの挙動に関する情報を取得することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)オペレーティングシステム(以下、「OS」という)上で任意のアプリケーションプログラムを実行可能なプロセッサであって、
前記任意のアプリケーションプログラムの中の測定対象となるイベントのIDが登録されているイベントコンテキストレジスタと、
前記OS上で前記任意のアプリケーションプログラムが実行されると、当該アプリケーションプログラムによって実行されたイベントのIDを記録するコンテキストレジスタと、
前記コンテキストレジスタに記録されたイベントのIDと、前記イベントコンテキストレジスタに登録されている測定対象となるイベントのIDとを比較する比較器と、
前記比較器によって前記ID同士が一致すると判断された回数をカウントするイベントカウンタと、
を備えることを特徴とするプロセッサ。
(付記2)前記イベントコンテキストレジスタは、前記測定対象となるイベントのIDとして、プロセス、タスクおよびスレッドのいずれかをあらわすIDが登録され、
前記コンテキストレジスタは、前記OS上で前記任意のアプリケーションプログラムのイベントが実行されると、当該実行されたイベントのIDとして前記イベントコンテキストレジスタに登録されているIDと同じ種類のIDを記録することを特徴とする付記1に記載のプロセッサ。
(付記3)付記1または2に記載のプロセッサと、
前記プロセッサによって前記任意のアプリケーションプログラムが実行されると、前記イベントカウンタによってカウントされた値を取得する取得手段と、
前記取得手段によって取得された情報を出力する出力手段と、
を備えることを特徴とする性能プロファイリング装置。
(付記4)前記取得手段は、前記プロセッサに搭載されたプログラムカウンタから、前記イベントカウンタの値が取得されたときのプログラムカウント値を取得し、
前記出力手段は、前記取得手段によって取得されたプログラムカウント値を、前記イベントカウンタの値とともに出力することを特徴とする付記3に記載の性能プロファイリング装置。
(付記5)前記アプリケーションプログラムが実行されると、一定の間隔で割込みを発生させる割込み手段とを備え、
前記取得手段は、前記割込み手段によって発生させられた割込み間隔ごとに、前記イベントカウンタによってカウントされた値を取得することを特徴とする付記3または4に記載の性能プロファイリング装置。
(付記6)前記取得手段によって取得された値と、前記アプリケーションプログラムとを照合する照合手段と、
前記照合結果を用いて、前記取得手段によって取得された値のうち、所定数以上となる値となったに対応する関数、処理および命令を前記プリケーションプログラムの中から抽出する抽出手段と、を備え、
前記出力手段は、前記抽出手段によって抽出された関数、処理および命令を出力することを特徴とする付記3〜5のいずれか一つに記載の性能プロファイリング装置。
(付記7)前記出力手段は、前記抽出手段によって抽出された関数、処理および命令とともに、対応するソースプログラムまたは機械語命令を出力することを特徴とする付記6に記載の性能プロファイリング装置。
(付記8)前記取得手段によって取得された情報を所定のメモリにマージする記録手段を備えることを特徴とする付記3〜7のいずれか一つに記載の性能プロファイリング装置。
(付記9)前記出力手段によって出力された情報と、前記アプリケーションプログラムの実行状態に応じて、プログラム優先順位を設定する設定手段を備えることを特徴とする付記3〜8のいずれか一つに記載の性能プロファイリング装置。
(付記10)前記設定手段は、前記出力手段によって出力された情報と、前記アプリケーションプログラムの実行状態に応じて、システム資源の割りつけを設定する設定手段を備えることを特徴とする付記9に記載の性能プロファイリング装置。
(付記11)オペレーティングシステム(以下、「OS」という)上で任意のアプリケーションプログラムを実行可能なコンピュータを、
前記任意のアプリケーションプログラムの中の測定対象となるイベントのIDが登録されているイベントコンテキスト登録手段、
前記OS上で前記任意のアプリケーションプログラムが実行されると、当該アプリケーションプログラムによって実行されたイベントのIDを記録するコンテキスト記録手段、
前記コンテキスト記録手段に記録されたIDと、前記イベントコンテキスト登録手段に登録されている測定対象となるイベントのIDとを比較する比較手段、
前記比較手段によって前記ID同士が一致すると判断された回数をイベント情報としてカウントするイベントカウント手段、
前記イベントカウント手段によってカウントされた値を出力する出力手段、
として機能させることを特徴とする性能プロファイリングプログラム。
(付記12)前記コンピュータを、
当該コンピュータに搭載されたプログラムカウンタから、イベントカウント手段によってイベントカウンタの値がカウントされたときのプログラムカウント値を取得し、
前記出力手段は、前記取得手段によって取得されたプログラムカウント値を、前記イベントカウンタの値とともに出力することを特徴とする付記5に記載の性能プロファイリングプログラム。
(付記13)複数のレジスタを備え、オペレーティングシステム(以下、「OS」という)上で任意のアプリケーションプログラムを実行可能なプロセッサを搭載したコンピュータが、
前記OS上で前記任意のアプリケーションプログラムが実行されると、当該アプリケーションプログラムによって実行されたイベントのIDを前記複数のレジスタの中の一のレジスタに記録するコンテキスト記録工程と、
前記コンテキスト記録工程によって前記一のレジスタに記録されたIDと、前記一以外のレジスタにあらかじめ登録されていた測定対象となるイベントのIDとを比較する比較工程と、
前記比較工程によって前記ID同士が一致すると判断された回数をイベント情報としてカウントするカウント工程と、
を実行することを特徴とする性能プロファイリング方法。
本実施の形態にかかる性能プロファイリング処理の概要を示す説明図である。 性能プロファイリング取得ツールの構成を示す説明図である。 プロセッサの構成を示すブロック図である。 イベント取得ドライバの処理手順を示すフローチャートである。 性能プロファイリング取得ツールの処理手順を示すフローチャートである。 イベント情報取得時のカーネルの処理手順(その1)を示すフローチャートである。 イベント情報取得時のカーネルの処理手順(その2)を示すフローチャートである。 イベント情報に基づいたチューニングの処理手順を示すフローチャートである。 性能プロファイリング取得ツールの入力例(その1)を示す説明図である。 性能プロファイリング取得ツールの入力例(その2)を示す説明図である。 性能プロファイリング取得ツールの出力例(その1)を示す説明図である。 性能プロファイリング取得ツールの出力例(その2)を示す説明図である。 従来の性能プロファイリング処理の構成を示す説明図である。 複数のプログラムを実行させた場合のイベントカウンタのカウント処理を示す説明図である。
符号の説明
100 プロセッサ
101 プログラム実行部
102 イベントコンテキストレジスタ
103 コンテキストレジスタ
104 比較器
105 イベントカウンタ
106 プログラムカウンタ
110 オペレーティングシステム(OS)
120 性能プロファイリング取得ツール

Claims (7)

  1. オペレーティングシステム(以下、「OS」という)上で任意のアプリケーションプログラムを実行可能なプロセッサであって、
    前記任意のアプリケーションプログラムの中の測定対象となるイベントのIDが登録されているイベントコンテキストレジスタと、
    前記OS上で前記任意のアプリケーションプログラムが実行されると、当該アプリケーションプログラムによって実行されたイベントのIDを記録するコンテキストレジスタと、
    前記コンテキストレジスタに記録されたイベントのIDと、前記イベントコンテキストレジスタに登録されている測定対象となるイベントのIDとを比較する比較器と、
    前記比較器によって前記ID同士が一致すると判断された回数をカウントするイベントカウンタと、
    を備えることを特徴とするプロセッサ。
  2. 前記イベントコンテキストレジスタは、前記測定対象となるイベントのIDとして、プロセス、タスクおよびスレッドのいずれかをあらわすIDが登録され、
    前記コンテキストレジスタは、前記OS上で前記任意のアプリケーションプログラムのイベントが実行されると、当該実行されたイベントのIDとして前記イベントコンテキストレジスタに登録されているIDと同じ種類のIDを記録することを特徴とする請求項1に記載のプロセッサ。
  3. 請求項1または2に記載のプロセッサと、
    前記プロセッサによって前記任意のアプリケーションプログラムが実行されると、前記イベントカウンタによってカウントされた値を取得する取得手段と、
    前記取得手段によって取得された情報を出力する出力手段と、
    を備えることを特徴とする性能プロファイリング装置。
  4. 前記取得手段は、前記プロセッサに搭載されたプログラムカウンタから、前記イベントカウンタの値が取得されたときのプログラムカウント値を取得し、
    前記出力手段は、前記取得手段によって取得されたプログラムカウント値を、前記イベントカウンタの値とともに出力することを特徴とする請求項3に記載の性能プロファイリング装置。
  5. オペレーティングシステム(以下、「OS」という)上で任意のアプリケーションプログラムを実行可能なコンピュータを、
    前記任意のアプリケーションプログラムの中の測定対象となるイベントのIDが登録されているイベントコンテキスト登録手段、
    前記OS上で前記任意のアプリケーションプログラムが実行されると、当該アプリケーションプログラムによって実行されたイベントのIDを記録するコンテキスト記録手段、
    前記コンテキスト記録手段に記録されたIDと、前記イベントコンテキスト登録手段に登録されている測定対象となるイベントのIDとを比較する比較手段、
    前記比較手段によって前記ID同士が一致すると判断された回数をカウントするイベントカウント手段、
    前記イベントカウント手段によってカウントされた値を出力する出力手段、
    として機能させることを特徴とする性能プロファイリングプログラム。
  6. 前記コンピュータを、
    当該コンピュータに搭載されたプログラムカウンタから、イベントカウント手段によってイベントカウンタの値がカウントされたときのプログラムカウント値を取得し、
    前記出力手段は、前記取得手段によって取得されたプログラムカウント値を、前記イベントカウンタの値とともに出力することを特徴とする請求項5に記載の性能プロファイリングプログラム。
  7. 複数のレジスタを備え、オペレーティングシステム(以下、「OS」という)上で任意のアプリケーションプログラムを実行可能なプロセッサを搭載したコンピュータが、
    前記OS上で前記任意のアプリケーションプログラムが実行されると、当該アプリケーションプログラムによって実行されたイベントのIDを前記複数のレジスタの中の一のレジスタに記録するコンテキスト記録工程と、
    前記コンテキスト記録工程によって前記一のレジスタに記録されたIDと、前記一以外のレジスタにあらかじめ登録されていた測定対象となるイベントのIDとを比較する比較工程と、
    前記比較工程によって前記ID同士が一致すると判断された回数をカウントするカウント工程と、
    を実行することを特徴とする性能プロファイリング方法。
JP2008160429A 2008-06-19 2008-06-19 プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法 Expired - Fee Related JP5326374B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008160429A JP5326374B2 (ja) 2008-06-19 2008-06-19 プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法
US12/379,549 US20090319758A1 (en) 2008-06-19 2009-02-24 Processor, performance profiling apparatus, performance profiling method , and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008160429A JP5326374B2 (ja) 2008-06-19 2008-06-19 プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法

Publications (2)

Publication Number Publication Date
JP2010003057A true JP2010003057A (ja) 2010-01-07
JP5326374B2 JP5326374B2 (ja) 2013-10-30

Family

ID=41432461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008160429A Expired - Fee Related JP5326374B2 (ja) 2008-06-19 2008-06-19 プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法

Country Status (2)

Country Link
US (1) US20090319758A1 (ja)
JP (1) JP5326374B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017503233A (ja) * 2013-12-12 2017-01-26 インテル コーポレイション 競合状態を検出する技法
US10409636B2 (en) 2016-01-13 2019-09-10 Fujitsu Limited Apparatus and method to correct an execution time of a program executed by a virtual machine

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8572295B1 (en) * 2007-02-16 2013-10-29 Marvell International Ltd. Bus traffic profiling
US7917677B2 (en) * 2008-09-15 2011-03-29 International Business Machines Corporation Smart profiler
US8898646B2 (en) * 2010-12-22 2014-11-25 Intel Corporation Method and apparatus for flexible, accurate, and/or efficient code profiling
US9021172B2 (en) * 2012-07-06 2015-04-28 Arm Limited Data processing apparatus and method and method for generating performance monitoring interrupt signal based on first event counter and second event counter
US9311209B2 (en) * 2012-11-27 2016-04-12 International Business Machines Corporation Associating energy consumption with a virtual machine
US9823929B2 (en) * 2013-03-15 2017-11-21 Qualcomm Incorporated Optimizing performance for context-dependent instructions
JP2014182478A (ja) * 2013-03-18 2014-09-29 Fujitsu Ltd 性能プロファイリング装置及び性能プロファイリング方法
JP6693308B2 (ja) * 2016-07-05 2020-05-13 富士通株式会社 負荷推定プログラム、負荷推定方法及び負荷推定装置
US10764315B1 (en) * 2019-05-08 2020-09-01 Capital One Services, Llc Virtual private cloud flow log event fingerprinting and aggregation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002342125A (ja) * 2001-05-18 2002-11-29 Fujitsu Ltd イベント計測装置および方法並びにイベント計測プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体並びにプロセッサシステム
JP2006092029A (ja) * 2004-09-21 2006-04-06 Fujitsu Ltd マイクロコンピュータ及びトレース制御方法
JP2007304765A (ja) * 2006-05-10 2007-11-22 Nec Electronics Corp プロセッサシステム及びプロセッサシステムの性能測定方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US7197652B2 (en) * 2003-12-22 2007-03-27 International Business Machines Corporation Method and system for energy management in a simultaneous multi-threaded (SMT) processing system including per-thread device usage monitoring

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002342125A (ja) * 2001-05-18 2002-11-29 Fujitsu Ltd イベント計測装置および方法並びにイベント計測プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体並びにプロセッサシステム
JP2006092029A (ja) * 2004-09-21 2006-04-06 Fujitsu Ltd マイクロコンピュータ及びトレース制御方法
JP2007304765A (ja) * 2006-05-10 2007-11-22 Nec Electronics Corp プロセッサシステム及びプロセッサシステムの性能測定方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017503233A (ja) * 2013-12-12 2017-01-26 インテル コーポレイション 競合状態を検出する技法
US10409636B2 (en) 2016-01-13 2019-09-10 Fujitsu Limited Apparatus and method to correct an execution time of a program executed by a virtual machine

Also Published As

Publication number Publication date
JP5326374B2 (ja) 2013-10-30
US20090319758A1 (en) 2009-12-24

Similar Documents

Publication Publication Date Title
JP5326374B2 (ja) プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法
US10698726B2 (en) Techniques for switching threads within routes
JP5386905B2 (ja) プロファイリング方法およびプロファイリングプログラム
CN102314391B (zh) 一种基于硬件基础工具监视虚拟化系统性能的架构及方法
US8949671B2 (en) Fault detection, diagnosis, and prevention for complex computing systems
US5297274A (en) Performance analysis of program in multithread OS by creating concurrently running thread generating breakpoint interrupts to active tracing monitor
CN104794047B (zh) 性能指标的相关性分析的方法和系统
US20160232040A1 (en) Thread folding tool
US8418148B2 (en) Thread execution analyzer
JP2012094166A (ja) アプリケーションプログラムのパフォーマンス解析方法、アプリケーションプログラムのパフォーマンス解析に用いられるシステム及び装置
JP5329983B2 (ja) デバッグ支援装置
Reiss et al. JOVE: Java as it happens
US9697009B2 (en) Method for improving the performance of computers
US20120124422A1 (en) Description language for identifying performance issues in event traces
US8561032B2 (en) Visualizing thread life time in eclipse
Schneider et al. Migration of automotive real-time software to multicore systems: First steps towards an automated solution
US7502967B1 (en) Identifying an object in a data file that causes an error in an application
JP5740338B2 (ja) 仮想環境運用支援システム
Ezzati-Jivan et al. Depgraph: Localizing performance bottlenecks in multi-core applications using waiting dependency graphs and software tracing
US8261245B2 (en) Method and system for associating profiler data with a reference clock
WO2020073200A1 (zh) 调试程序的方法和系统
US7769976B2 (en) Identifying code that wastes virtual memory
US7281240B1 (en) Mechanism for lossless, lock-free buffer switching in an arbitrary-context tracing framework
JP2011118596A (ja) 情報処理装置およびプロファイリング方法
LaRock et al. Querying SQL Server Wait Statistics

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120605

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120806

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121127

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: 20130625

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130708

R150 Certificate of patent or registration of utility model

Ref document number: 5326374

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees