tprof コマンド

目的

プロセッサーの使用状況を報告します。

構文

tprof { [ -c ] [ -C { all | cpulist } ] [ -d ] -D ] [ -e ] [ -@ {ALL | wparlist } ] [ [ { -E [ mode [ -b ] [ -B ] } ] ] [ -f frequency ] ] [ -F ] [-I] [ -j ] [ -k ] [ -l ] [-L objectlist] [ -m objectslist ] [ -M sourcepathlist ] [-N] [ -p processlist ] [ -P { all | pidslist } ] [ -s ] [ -S searchpathlist ] [ -t ] [ -T buffersize ] [ -u ] [ -v ] [ -V verbosefilename ] [-g] [-G "start=mmddhhmmssyy",end=mmddhhmmssyy] [-O options]{ [-z] [-Z] | -R } { { -r rootstring } | { [ -A { all | cpulist }[ -n ] ] [ -r rootstring [ -X [ timedata [ , buckets=N ] ] ] ] { -x program | -y program } } } } { -a [ -A [ all ] ] [ -f frequency ] [ -F ] [ -v ] [ -z ] [ -V verbosefilename ] [ -T buffersize ] { { [ -r rootstring ] -y program } | { -r rootstring } } }
注:
  • リスト・タイプの入力はすべてコンマで区切りますが、pathlist だけは コロンで区切ります。
  • リアルタイム・モードで実行されている間、マルチ CPU プロファイル作成モードは自動的に使用不可になります。
  • プロセッサーごとのプロファイル作成をオンにすると、マイクロプロファイル作成は 自動的に使用不可になります。
  • 指定されたログ・バッファー・サイズは、tprof コマンドがリアルタイム・モードで実行する場合は省略されます。
  • -x フラグを指定して、-A フラグ を指定しないと、tprof はリアルタイム・モードで実行します。
  • -x フラグと -A フラグを組み合わせて 使用すると、tprof は自動オフライン・モードで実行します。
  • -x フラグを省略する と、tprof は、cooked ファイルと -F フラ グがあるかないかにより、ポストプロセッシング・モードまたは手動オフライン・モード で実行します。
  • tprof コマンドが、リアルタイムまたは自動化オフライン・モードのworkload partitionで実行する場合、-@ フラグは自動的に使用不可になります。
  • -y フラグは、-E フラグまたは -a フラグとのみ同時に使用できます。
  • -O showaddrbytes=on オプションを -z オプションと一緒に使用することはできません。
  • -O wrapfname=on オプションは、-l オプションと一緒に使用してください。
  • -G オプションは、ポストプロセッシング・モードでのみ使用できます。
  • -O pdetails=on オプションは、-p オプションと一緒にのみ使用できます。
  • tprof ポストプロセッシング・モードで、-A オプションを使用してトレースを手動で収集する場合は、必ず trace コマンドの -pP オプションと I オプションを指定する必要があります。

説明

tprof コマンドは個別のプログラムおよびシステム全体におけるプロセッサーの使用状況について報告します。 このコマンドは、 プロセッサーの制約を受ける Java™、C、C++、 または FORTRAN プログラムを使っているすべてのユーザーや、 そのプログラムのどのセクションがプロセッサーに最も負担をかけているのか知りたいユーザーなどに便利なツールです。

tprof コマンドを使用すると、オブジェクト・ファイル、プロセス、スレッド、 サブルーチン (ユーザー・モード、カーネル・モード、共用ライブラリー)、およびプログラム のソース行や個別命令に対して、プロセッサー時間をチャージできます。プロセッサー時間を サブルーチンにチャージすることをプロファイル作成、プロセッサー時間をソース・プログラ ム行にチャージすることを、マイクロプロファイル作成と呼びます。

サブルーチン・レベルのプロファイル作成の場合は、ユーザーは実行可能なプログラムを 変更することなしに tprof コマンドを実行できます。 つまり、特殊なコンパイラー・フラグを使用して再コンパイルする必要はありません。 トレースバック・テーブルも削除した場合を除き、実行可能プログラムを削除した場合も同様です。ただし、リスト作成ファイルが既に使用可能に なっている場合を除き、マイクロプロファイルを獲得するには再コンパイルが 必要です。プログラム上でマイクロプロファイル作成を実行するには、-g フラグを指定してプログラムをコンパイルし、tprof コマンドからソース・ファイルにアクセスできるようにするか、-qlist フラグを指定してプログラムをコンパイルし、tprof コマンドからオブジェクト・リスト作成ファイルとソース・ファイルの両方、またはオブジェクト・リスト作成ファイルだけにアクセスできるようにします。tprof のマイクロ プロファイル作成機能のすべてを利用するには、.lst とソース・ ファイルの両方を提供してください。

tprof コマンドは、次のモードで実行できます。
  • リアルタイムまたはオンライン
  • 手動オフライン
  • 自動オフライン
  • ポストプロセッシング
-x フラグを指定して、-A フラグを指定しないと、tprof コマンドはリアルタイム・モードで実行されます。 リアルタイム・モードでは、tprof コマンドはバックグラウンドで AIX® trace ユーティリティーを開始し、トレース・データが生成されるとそれを処理します。プロファイル作成の対象となっているプログラムが終了すると、tprof がシンボル名情報を収集して、tprof レポートを生成します。
注: このモードでは、プロセッサーごとのプロファイル作成は実行できません。
-x フラグと -A フラグを指定すると、tprof コマンドは自動オフライン・モードで実行されます。このモードでは、tprof コマンドは AIX trace ユーティリティーを開始し、トレース・データをファイルに記録します。トレース・データの収集が完了すると、シンボル名情報を収集し、tprof コマンドがトレース・ログ・ファイルを開いて、データの処理を行い、レポートを生成します。このモードでは、 tprof コマンドは、tprof レポート・ファイルのほかに以下のファイルを生成します。
  • rootstring.syms
  • rootstring.trc [ -cpuid]

tprof コマンドが使用する入力ファイルとレポート・ファイルは、すべて rootstring.suffix の名前が付きます。ここで rootstring は、-r フラグで指定するか、-x フラグによって指定されるプログラム名になります。

リアルタイム・モードおよび自動オフライン・モードでは、プロファイルを作成するプログラムのデータ域の ulimit 値は unlimited に設定されます。

自動オフライン・モードでは、-N フラグを指定して、生成された RootString.syms ファイル内にソース行情報を収集することができます。さらに、-I フラグを指定して、バイナリー命令を生成された RootString.syms ファイル内に収集することができます。

tprof コマンドでは、以上のファイルについて任意の時点で再処理を 実行して、プロファイル・レポートを生成することができます。これは 手動オフライン・モードと呼びます。rootstring.syms ファイルには、gensyms コマンドの出力と同様のシンボル名情報が組み込まれます。 rootstring.trc[-cpuid] ファイルはトレース・ログ・ファイルです。プロセッサーごとのトレース をオンにすると、-cpuid が追加されます。この場合、 ファイルごとにそれぞれ 1 台だけのプロセッサーのトレース・データが入ります。

-c フラグと -A フラグを同時に指定した場合、rootstring.syms ファイルと rootstring.trc[-cpuid] ファイルは生成されません。その代わりに、 次の 2 つのファイルが作成されます。
  • rootstring.csyms
  • rootstring.ctrc[ -cpuid ]
以上のファイルはクックド・ファイルです。 つまり、通常のトレース・ファイルと名前ファイルをプリプロセスしたバージョンのファイルです。 tprof ポストプロセスは、ファイルをより速くクックしました。
-A フラグと -x フラグを両方とも指定しない場合、tprof コマンドは手動オフラインまたはポストプロセッシング・モードで実行されます。tprof コマンドをポストプロセッシング・モードで実行するには、以下のファイルが必要です。
  • rootstring.csyms
  • rootstring.ctrc[ -cpuid ]

これらのファイルは、-c フラグを指定して (ポストプロセッシング以外の任意のモードで) tprof コマンドを実行すると生成されます。

tprof コマンドを手動オフライン・モードで実行するには、以下のファイルが必要です。
  • rootstring.syms
  • rootstring.trc [ -cpuid]

これらのファイルを生成するには、手動で gensyms コマンドと AIX トレース機能を実行するか、 -c フラグを指定せずに tprof コマンドを自動オフライン・モードで実行します。

tprof コマンドは、常に rootstring.csyms ファイルと rootstring.ctrc[-cpuid] ファイルを最初に検索します。これらのファイルが見つからない場合にのみ、rootstring.syms ファイルと rootstring.trc[-cpuid] ファイルを検索します。tprof コマンドが rootstring.csyms ファイルと rootstring.ctrc[-cpuid] ファイルを検索しないようにするには、つまり手動オフライン・モードを強制するには、-F フラグを使用します。

入力シンボル・ファイルにデマングル名が入っている場合は、-Z フラグを使用できません。

tprof コマンドは、プロセス、スレッド、オブジェクト・ファイル、およびサブルーチン・レベルのプロファイル・レポートを保持する、rootstring.prof という名前の tprof レポート・ファイルを生成します。このファイルには、以下のセクションとサブセクションを組み込むことができます。
  • 要約報告書セクション:
    • プロセス名別プロセッサー使用率の要約
    • スレッド別プロセッサー使用率の要約 (tid)
  • グローバル (システム上のすべてのプロセスの実行に関連する) プロファイル・セクション:
    • ユーザー・モード・ルーチンのプロセッサー使用率
    • カーネル・モードで呼び出されるミリコード・ルーチンを含む、カーネル・ルーチンのプロセッサー使用率
    • カーネル・エクステンションのプロセッサー使用率の要約
    • カーネル・エクステンションのサブルーチンごとのプロセッサー使用率
    • 専用にロードされた、グローバルな名前付き共用ライブラリー、およびユーザー・モードで呼び出されたミリコード・ルーチンのプロセッサー使用率の要約
    • 共用ライブラリーのサブルーチンごとのプロセッサー使用率
    • Java クラスごとのプロセッサー使用率
    • 各 Java クラスの Java メソッドごとのプロセッサー使用率
  • プロセスおよびスレッド・レベルのプロファイル・セクション (プロセスまたはスレッドごとに 1 つのセクション):
    • このプロセス/スレッドに対するユーザー・モード・ルーチンのプロセッサー使用率
    • カーネル・モードで呼び出されるミリコード・ルーチンを含む、このプロセス/スレッドに対するカーネル・ルーチンのプロセッサー使用率
    • このプロセス/スレッドに対するカーネル・エクステンションのプロセッサー使用率要約
    • このプロセス/スレッドに対する各カーネル・エクステンションのサブルーチンのプロセッサー使用率
    • このプロセス/スレッドに対する、専用にロードされた、グローバルな名前付き共用ライブラリー、 およびユーザー・モードで呼び出されたミリコード・ルーチンのプロセッサー使用率の要約
    • このプロセス/スレッドに対する各共用ライブラリーのサブルーチンのプロセッサー使用率
    • このプロセス/スレッドに対する各 Java クラスのプロセッサー使用率
    • このプロセス/スレッドに対する各 Java クラスの Java メソッドのプロセッサー使用率
rootstring.prof レポート・ファイルには、常に要約報告書のセクションがあります。以下のプロファイル作成フラグを使用して、グローバル・プロファイル・セクションの各サブセクションをオンまたはオフに設定できます。
  • -u は、サブセクション a をオンにします。
  • -k は、サブセクション b をオンにします。
  • -e は、サブセクション c と d をオンにします。
  • -s は、サブセクション e と f をオンにします。
  • -j は、サブセクション g と h をオンにします。

-p-P、および -t フラグを指定すると、プロセスおよびスレッドに対してプロファイル・レベルとスレッド・レベルのプロファイル・セクションが作成されます。プロセスごとおよびスレッドごとのセクションの サブセクションは、グローバル・セクションのサブセクションと同じものです。 このサブセクションは、プロファイル作成フラグ (-u-s-k-e-j) を使用して選択されます。

オプションで、-C フラグを指定して tprof コマンドを実行すると、このコマンドはプロセッサーごとのプロファイル・レポートを生成します。このレポートにはプロセッサーごとの 1 つのプロファイル・レポートが含まれています。生成される tprof レポートは同じ構造で、次の規則を使用して名前が付けられます。rootstring.prof[-cpuid]。

-m フラグを指定すると、tprof コマンドはマイクロプロファイル・レポートを生成します。このレポートでは次の命名規則が使用されます。 rootstring.source.mprof。ここで、source はソース・ファイルのベース名です。複数のソース・ファイルに同一のベース名がある場合は、それらを固有に識別するためにレポート・ファイル名に 1 つの番号が付けられます。例えば、rootstring.Filename.c.mprof-1。マイクロ プロファイル・レポートには次の情報があります。
  • 注釈付きソース・ファイルの絶対パス名。
  • ホット・ライン・プロファイル・セクション。ここには、プロセッサー使用率でソー トして、プロファイル・サンプルで一致したソース・ファイルのすべての 行番号が含まれます。ソース行ごとに、プロセス合計で使用した経過時間パーセント値 が 1 行に表示され、この後にプロセスごとの詳細を表示する行が続きます。
  • プロセッサー使用率があるソース・ファイルの各機能に関するソース行プロファイ ル・セクション。このセクションには、ソース行番号、プロセッサー使用率、および ソース・コードが含まれます。そのソース・ファイルの .lst ファイルが tprof からアクセスできる場合は、.lst ファイルの命令行とソース・ファイルのソース行を組み合わせて、プロセッサー使用率を正しくチャージします。 これにより、各ソース・ファイルについて、命令別の詳細が提供されます。

    ソース・ファイルがなく、.lst ファイルがある場合 は、tprof は、ソース行と .lst ファイルの命令に 基づいて、プロセッサー使用率だけを表示します。

    .lst ファイルもソース・ファイルも存在しないが、ソース・ファイルが -g フラグを指定してコンパイルされている場合、tprof コマンドはソース行番号を取り出して、ソース・コードの列がない、同様のレポートを生成します。
    注: プロセッサーごとのプロファイル作成が要求されると、マイクロプロファイル作成 は自動的に使用不可になります。.c ファイルが別の .c ファイルに含まれている場合、tprof コマンドは正しいソース行情報を報告できません。tprof コマンドは、Java クラスまたはメソッドのマイクロプロファイルを作成できません。

-m フラグを指定すると、-N フラグが自動的に指定され、ソース行情報が自動オフライン・モードでシンボル・ファイルに集められます。

-Z フラグと -m フラグを同時に指定すると、サブルーチンごとに 1 つのレポート・ファイルが生成されます。この場合、次の命名規則が使用されます。RootString.source.routine.mprof。ここで、routine はソース・ファイルにリストされたサブルーチンの 1 つの名前です。さらに、上記で説明したホット・ライン・プロファイル作成情報を含む RootString.source.HOT_LINES.mprof という名前のファイルも作成されます。

-L フラグを指定すると、tprof コマンドは注釈付きリスト・ファイルを生成します。このファイルには次の命名規則が使用されます。例: RootString.source.alst、ここで source はソース・ファイルのベース名です。 複数のソース・ファイルに同一のベース名がある場合は、それらを固有に識別するためにレポート・ファイル名に 1 つの番号が付けられます。例: RootString.Filename.c.alst-1-Z フラグと -L フラグを同時に指定すると、サブルーチンごとに 1 つのレポート・ファイルが生成されます。この場合、次の命名規則が使用されます。例: RootString.source.routine.alst、ここで、routine はソース・ファイルにリストされたサブルーチンの 1 つの名前です。

JPA (-x java -Xrunjpa または -x java -agentlib:jpa) を使用して Java プログラムのプロファイルを作成する際に -N フラグまたは -I フラグが指定されると、対応するパラメーターが -Xrunjpa フラグまたは -agentlib:jpa フラグに追加されている場合は、JIT ソース行番号および命令を収集できます。
  • source=1 は、JIT ソース行の収集をオンにします (IBM® JRE 1.5.0 またはそれ以上のバージョンが必要)。
  • instructions=1 は、JIT 命令の収集をオンにします。
次の制約事項が、tprof コマンドを実行する non-root ユーザーに適用されます。
  • tprof は、実行中のカーネルが /unix ファイルと同じであることを検査できません。 これは、 警告メッセージが表示される場合でも、ほとんどの場合、 実行中のカーネルと /unix が同じであるために、 データは正確でなければならないことを意味します。
  • gensyms コマンドが root 以外のユーザーによって実行される場合、制約事項 #1 (上記) と同じ警告が出され、gensyms ファイルにマークが付けられます。 tprof がオフライン・モードで実行される場合は、gensyms > コマンドにより作成されたファイルには、未検査カーネルに関して tprof のフラグが立てられます。
  • tprof は、読み取り許可が設定されていないファイルのシンボルを開き、読み取ることができません。専用の共用ライブラリーの中には読み取り許可が設定されていないものがあり、カーネル・エクステンションの中には読み取り不可のものがあります。

時間ベースのプロファイル作成とイベント・ベースのプロファイル作成の比較

デフォルトでは、tprof は時間ベースであり、decrementer 割り込みによって駆動されます。 もう 1 つのプロファイル作成モードはイベント・ベースです。この場合、割り込みはソフトウェア・ベース・イベントまたはパフォーマンス・モニター・イベントによって発生します。 イベント・ベースのプロファイル作成では、サンプリング頻度とプロファイル作成イベントをコマンド・ラインで変更することができます。

-E フラグを使用すると、イベント・ベースのプロファイル作成が可能になります。-E フラグは、4 つのソフトウェア・ベースのイベント (EMULATION、ALIGNMENT、ISLBMISS、DSLBMISS) のいずれか 1 つ、またはパフォーマンス・モニター・イベント (PM_*) です。デフォルトでは、プロファイル作成イベントはプロセッサー・サイクルです。 すべてのパフォーマンス・モニター・イベントにはプレフィックス PM_ が付きます。例えば、プロセッサー・サイクルの場合は PM_CYC、完了済みの命令の場合は PM_INST_CMPL です。 pmlist を使用すると、プロセッサーでサポートされるすべてのパフォーマンス・モニター・イベントの一覧が作成されます。選択されたパフォーマンス・モニター・イベントは、グループ内に取り込む必要がありますが、そのグループでも PM_INST_CMPL パフォーマンス・モニター・イベントを検索できます。 POWER4 以降のプロセッサーでは、マークを付けられたイベントに関するプロファイルが、より正確に作成されます。マークを付けられたイベントには、PM_MRK_ prefix が付きます。

-y フラグを指定すると、指定されたプログラムとその子孫のプロファイルのみが作成されます。-y フラグは、-E または -a フラグのみと同時に使用します。

-f フラグを使用すると、イベント・ベースのプロファイル作成のサンプリング頻度が変更されます。 ソフトウェア・ベース・イベントおよびプロセッサー・サイクルの場合、サポートされる頻度の範囲は 1 から 500 ミリ秒で、デフォルトは 10 ミリ秒です。それ以外のすべてのパフォーマンス・モニター・イベントの場合、サポートされる範囲は、10000 回から MAXINT 回のイベント発生回数で、デフォルトは 10000 回です。-f フラグと -y フラグを同時に指定すると、その他のパフォーマンス・モニター・イベントのサンプリング頻度の範囲は 1 回から MAXINT 回の発生回数となり、デフォルトは 10000 回のイベントとなります。

プロセッサー名、プロファイル作成イベント、およびサンプリング頻度を反映するため、.prof ファイルに追加情報が付加されます。

Java アプリケーションのプロファイル作成

Java アプリケーションのプロファイルを作成するには、-j フラグを指定し、java コマンド・ライン・オプションである -Xrunjpa API (Java 5 以前の JVM で実行する場合) または -agentlib:jpa (Java 6 JVM で実行する場合) を指定して、アプリケーションを開始する必要があります。このオプションを指定すると、JVM は新規クラスおよびメソッドがメモリーにロードされるたびに、自動的に jpa ライブラリーを呼び出します。同様に ライブラリーは、メソッドとクラスに関する名前マッピング情報への アドレスを、/tmp/JavaPID.syms という名前のファイルに収集します。 ここで PID は、Java 仮想マシンを実行するプロセスのプロセス ID です。 tprof コマンドは、上記のディレクトリーでそれらのファイルを自動的に検索します。

自動オフライン・モードで実行されている場合、または cooking フラグを選択している場合は、tprof コマンドは JavaPID.syms ファイルに含まれている情報を RootString.syms ファイルまたは RootString.csyms ファイルにコピーします。ここで、/tmp 内の対応するファイルは削除できます。 ディレクトリーの内容は、tprof コマンドのユーザーが最新状態に保持する必要があります。 特定の JavaPID.syms に対応する JVM が停止すると、ファイルをそのつど削除する必要があります。

プロファイルの精度

プロセッサー・アクティビティーが分析される度合いは、収集したサンプルの数とホット・スポット が占める割合によって決まります。 プログラムのホット・スポットの数が少なければ、比較的少量のサンプルでプロファイルを作成できますが、プログラムの実行頻度の低い部分については、サンプルの収集量を増やさない限り、プロファイル・レポートには表示されません。ユーザー・プログラムを 1 分未満しか実行しないような場合であれば、信頼できる概算を得るには不十分な精度である可能性があります。

簡単な解決法の 1 つは必要とする精度が得られるまで繰り返しユーザー・プログラムまたはスクリプトを実行することです。 つまり、プログラムを長く実行すればそれだけプロファイルの精度が詳細になります。プロファイルの精度が信頼できない場合は tprof コマンドを何回か実行して、それぞれのプロファイルの結果を比較してみてください。

情報

-@ フラグは、tprof レポートへの WPAR 情報の追加を制御します。 サブオプションは、レポート・セクションのいくつかに組み込まれる情報を指定します。これらのサブオプションの形成は、以下のいずれかです。
  • プロセッサー使用率 WPAR 名の要約を追加するのは、-@ フラグのみです (すなわち、サブオプションはなし)。 また、WPAR 名は、プロセスおよびスレッドによるプロセッサー使用率を要約するセクションにリストされた、プロセスごとに表示されます。
  • ALL サブオプションを使用すると、tprof レポートに、システム全体の、かつ WPAR の実行ごとの、プロセス、スレッド、オブジェクト・ファイルおよびサブルーチン・レベルのプロファイル作成レポートが含まれます。
  • WPAR 名のコンマで区切られたリストは、 tprof レポート内の名前付き WPAR ごとの、 プロセス、スレッド、オブジェクト・ファイルおよびサブルーチン・レベルのプロファイル・セクションになります。
注: WPAR がチェックポイントとして使用されて、再始動するときは、共用ライブラリー域によって、WPAR に対してローカルになる場合もあります。 この場合は、WPAR の名前が領域 myarea@mywpar の名前の後に印刷されます。 他の場合はすべて、領域はシステム規模であるため、WPAR 名は省略されます。

XML レポート生成

-X フラグは、RootString.etm という XML レポート・ファイルを生成します。 このファイルは、ビジュアル・パフォーマンス・アナライザー内に表示できます。 XML レポート・ファイルには、以下の 4 つのセクションが含まれています。
  • プロファイル一般情報
  • シンボル・データ
  • プロファイル階層
  • 一時データ

-X は、XML レポートを直接生成する場合に、自動化オフライン・モードで使用されます。

-X は、RootString.syms および RootString.trc ファイルから XML レポートを生成する場合に、手動オフライン・モードでも使用されます。

-X timedata が指定されると、生成された XML レポートに時刻データ情報が組み込まれます。 デフォルトでは、時刻データ生成機能はオフになっています。

時刻データのバケット数を指定する場合は、buckets=N 引数を使用します。 デフォルトのバケット数は 1800 です。

ラージ・ページ分析

tprof -a コマンドは、代表的なコマンド実行からプロファイル・トレースを収集して、パフォーマンス予測を作成します。この予測では、アプリケーションのデータ・スペースのさまざまな部分がさまざまなページ・サイズにマップされます。ラージ・ページ分析ではトレースの情報を使用して、コマンドが次のいずれかのアプリケーション・メモリー領域をさまざまなページ・サイズにマップする際の変換バッファー・パフォーマンスを予測します。
  • 静的アプリケーション・データ・データ (初期化されているデータまたは初期化されていないデータ)
  • アプリケーション・ヒープ (動的に割り当てられているデータ)
  • スタック
  • アプリケーション・テキスト
パフォーマンス予測は、オペレーティング・システムでサポートされるそれぞれのページ・サイズについて提供されます。最初のパフォーマンス予測は、すべてのメモリー領域をデフォルトのページ・サイズである 4KB にマップするベースライン予測です。その後の予測では、1 回に 1 つの領域が異なるページ・サイズにマップされます。それぞれの予測では、以下の統計が報告されます。
  • ページ・サイズ
  • すべての領域をバックアップするのに必要なページ数
  • 変換ミスのスコア
  • コールド変換のミス・スコア
要約セクションにはプロファイルが作成されるプロセスと、報告が行われる統計がリストされます。この要約には以下の情報が含まれます。
  • メモリー参照の数またはパーセンテージ
  • モデルとなるメモリー参照
  • Malloc 呼び出し
  • フリー呼び出し

データ・プロファイル作成

tprof -b コマンドは基本のデータのプロファイル作成をオンにして、データ・アクセス情報を収集します。要約セクションはそれぞれのプロセスのカーネル・データ、ライブラリー・データ、ユーザー・グローバル・データ、およびスタック・ヒープのセクション全体にわたるアクセス情報を報告します。

-b フラグと -s-u-k、および -e フラグを同時に指定すると、tprof コマンドのデータ・プロファイル作成は、共用ライブラリー、バイナリー、カーネル、およびカーネル・エクステンションで最も使用頻度の高いデータ構造 (エクスポートされたデータ・シンボル) を報告します。-b フラグもこれらのデータ構造を使用する機能を報告します。

tprof に対する prof と gprof の比較

この 3 つのコマンドの最も大きな違いは、tprof が プロファイル作成中のプログラムに対して実行時間に対する影響を与えずにデータを 収集し、マイクロプロファイル・レポートを生成することを除いて、 再コンパイルをせずに、最適化され、かつストリップしたバイナリーで作業できることです。 gprofprof は、いずれもマイクロプロファイル作成機能を備えておらず、最適化されたバイナリーに対しても機能しませんが、これらは特殊なコンパイル・フラグを必要とするため、場合によっては実行時間の大幅なスローダウンが生じます。 prof は、ストリップされたバイナリーでは機能しません。

prof および gprof ツールは、 このオペレーティング・システムを含む多くの UNIX システム上でサポートされている、 標準のプロファイル作成ツールです。 prof および gprof はともに、サブプログラムのプロファイル作成と、すべてのサブプログラムが呼び出された回数の正確なカウント値を提供します。 gprof コマンドはまた呼び出しグラフ という非常に便利な機能も備えており、この機能によって特定の親による各サブプログラムの呼び出し回数と各サブプログラムの子の呼び出し回数が表示されます。tprof コマンドにはサブプログラムの呼び出しカウントも、呼び出しグラフ情報のいずれもありません。

tprof コマンドと同様に、profgprof の 両方のコマンドとも、ユーザー・プログラムのプログラム・カウンターを サンプリングして、各サブプログラムのプロセッサー推定使用量を獲得します。

tprof は、全システムのプロセッサー使用率情報を収集します が、一方 profgprof は、 ユーザー・モードで使用されている期間だけ、1 つのプログラム に対して、プロファイル情報だけを収集します。 tprof は、プロファイル作成されたユーザー・プログラムを実行中に、 活動化されているすべてのプロセスについても要約を提供し、ライブラリーとカーネル・ モードのプロファイル作成を完全にサポートします。

tprof は Java アプリケーションのプロファイル作成をサポー トしますが、profgprof はサポートしません。

フラグ

項目 説明
-@ { ALL | wparlist } 生成されたレポートに WPAR 情報が組み込まれます。

ALL オプションにより、すべての WPAR に関する要約が組み込まれます。 このオプションが設定されると、レポートには、「SYSTEM」レポートと、トレースされた WPAR ごとのレポートが含まれます。

wparlist オプションは、WPAR のコンマ区切りのリストを指定します。wparlist オプションが設定されると、tprof コマンドは、指定された WPAR ごとにレポートを作成します。

-a ラージ・ページ分析をオンにします。
-A { all | cpulist } 自動オフライン・モードをオンにします。プロセッサーごとのトレースをオフにする 引数はありません。all を使用すると、 すべてのプロセッサーのトレースをオンにします。cpulist は、トレース対象となるプロセッサー ID のコンマ区切りのリストです。
-b 基本データ・プロファイル作成をオンにします。
-B 命令アドレスのマップされた機能に関する情報で基本データ・プロファイル作成をオンにします。
-c cooked ファイルの生成をオンにします。
-C all | cpulist プロセッサーごとのプロファイル作成をオンにします。all を指定すると、 すべてのプロセッサーについてプロファイル・レポートを生成します。cpulist を指定する場合は、プロセッサー番号をコンマで区切ります (例えば、0,1,2)。
注: プロセッサーごとのプロファイルを作成するには、プロセッサーごとのトレースを オンにするか (自動オフライン・モードのとき)、または既に使用済み (手動オフライン・ モードのとき) にしておく必要があります。オンライン・モードでは実行できません。 このオプションは、トレースされる CPU の数が 128 個より多い場合はサポートされません。
-d 据え置きトレース・モードをオンにします。 このモードでは、trcon が呼び出されるまで、データ収集が 据え置かれます。
-D 詳細プロファイル作成をオンにします。 サブルーチンごとに命令オフセット別にプロセッサー使用率を表示します。
-e カーネル・エクステンション・プロファイル作成をオンにします。
-E [ mode ] イベント・ベースのプロファイル作成を可能にします。使用できるモードは以下のとおりです。
PM_event
プロファイルを作成するハードウェア・イベントを指定します。-E フラグにモードを指定しない場合、デフォルトのイベントはプロセッサー・サイクル (PM_CYC) です。
EMULATION
エミュレーション・プロファイル作成モードを使用可能にします。
ALIGNMENT
調整プロファイル作成モードを使用可能にします。
ISLBMISS
命令セグメント索引バッファー・ミス・プロファイル作成モードを使用可能にします。
DSLBMISS
データ・セグメント索引バッファー・ミス・プロファイル作成モードを使用可能にします。
-f frequency サンプリング頻度を指定します。サンプリング頻度は、プロセッサー・サイクルおよび EMULATIONALIGNMENTISLBMISSDSLBMISS イベントの場合は 1 から 500 ミリ秒に設定でき、その他のパフォーマンス・モニター・イベントの場合は、イベント発生回数で 10000 回から MAXINT 回までに設定できます。-f フラグと -y フラグを同時に指定すると、その他のパフォーマンス・モニター・イベントに対するサンプリング頻度の値の範囲は 1 回から MAXINT 値の発生回数となり、デフォルト値は 10000 回のイベントとなります。
-F cooked ファイルが既に存在している場合は、このファイルを上書きし ます。-x フラグを付けずに使用すると、 手動オフライン・モードを強制します。
-g シンボル名を人間が読める名前に変換しないでください。
-G トレース処理の開始日と終了日を設定します。パラメーターは、以下のフォーマットで指定します。
"start=mmddhhmmssyy,end=mmddhhmmssyy"
ここで、mmddhhmmssyy はそれぞれ、月、日、時、分、秒、および年です。このオプションには、以下の値を指定できます。
start
これを設定すると、指定した開始日ストリングからトレース処理が開始されます。
end
これを設定すると、指定した終了日ストリングにトレース処理が停止します。
-I バイナリー命令収集をオンにします。
注: -I フラグはシンボル・ファイルを生成するとき、または加工されたシンボル・ファイルを自動オフライン・モードで生成するときに、バイナリー命令の収集を活動化します。 ただし、手動オフライン・モードでは、-I フラグはレポート・ファイルに影響しません。
-j Java クラスとメソッドのプロファイル作成をオンにします。
-k カーネル・プロファイル作成を使用可能にします。
-l ロング・ネームのレポートを使用可能にします。デフォルトで は、サブルーチン名、プログラム名、およびソース・ファイル名がプロファイル・ レポートのスペースに入りきらない場合は、tprof がこれらを 切り捨てます。このフラグは、切り捨てを使用不可にします。
-L objectlist コンマ区切りリスト objectlist によって指定されたオブジェクトのリスト注釈を使用可能にします。実行可能プログラムと共用ライブラリーでは、それぞれのリスト・ファイルに注釈を付けることができます。 ライブラリーのアーカイブ名を指定してください。
注:
  1. プログラムのリスト注釈を使用可能にするには、ユーザー・モードのプロファイル作成 (-u) をオンにする必要があります。
  2. 共用ライブラリーのリスト注釈を使用可能にするには、共用ライブラリーのプロファイル作成 (-s) をオンにする必要があります。
  3. IPA のコンパイルによって生成されたリストに注釈を付けるには、objectlist として a.lst を指定します。
-m objectslist コンマ区切りリスト objectlist によって指定されたオブジェクトのマイクロプロファイル作成を使用可能にします。実行可能プログラム、共用ライブラリー、 およびカーネル・エクステンションをマイクロプロファイル作成できます。 ライブラリーおよびカーネル・エクステンションのアーカイブ名を指定してください。
注:
  1. プログラムのマイクロプロファイル作成を使用可能にするには、 ユーザー・モードのプロファイル作成 (-u) をオンにする 必要があります。
  2. 共用ライブラリーのマイクロプロファイル作成を使用可能にするには、 共用ライブラリーのプロファイル作成 (-s) をオンにする 必要があります。
  3. カーネル・エクステンションのマイクロプロファイル作成を使用可能にするには、 カーネル・エクステンションのプロファイル作成 (-e) をオンにする 必要があります。
-M PathList ソース・パス・リストを指定します。PathList は、マイクロプロファイル作成および注釈のリスト作成に必要な、ソース・ファイルおよび .lst ファイルを検索する際のパスのコロン区切りリストです。

デフォルトのソース・パス・リストは、オブジェクト検索パス・リストです。

-n ポストプロセッシングをオフにします。-n フラグが指定されていると、-u-s -k-e、および -jフラグは無視されます。 データは収集され、.trc ファイルおよび gensyms ファイルは生成されますが、.prof ファイルは生成されません。 この結果、例えば、ベンチマークの間のシステムの過負荷を回避するのに役立ちます。 -n オプションが使用される場合は、-A フラグを使用する必要があります。
-N ソース行番号情報の収集をオンにします。

-N フラグはシンボル・ファイルを生成するとき、または自動オフライン・モードで加工済みシンボル・ファイルを生成するときに、ソース行情報の収集を活動化します。 ただし、手動オフライン・モードでは、-N フラグはレポート・ファイルに影響しません。

-O このオプションには、以下の値を指定できます。
showaddrbytes=[on|off]
サブルーチン・レポートの Address 列と Bytes 列をオンにします。デフォルト値は off です。
wrapfname=[on|off]
長い関数名の行折り返しをオンにします。関数名を行で折り返すには、値を -l として設定します。デフォルト値は off です。
pdetails=[on|off]
レポートのデータ統合プロセスをオンにします。 このレポートは、「Process Summary」セクションのセグメント kernel および sharedlib に指定された processlist のデータを統合します。
-p processlist processlist に指定されたプロセス名について、プロセス・レベルのプロファイル作成を使用可能にします。processlist は、コンマ区切りのプロセス名のリストです。

プロセス・レベルのプロファイル作成は、プロファイル作成モードの少なくとも 1 つ (-u-s-k-e、または -j) がオンになっている場合にのみ使用可能になります。

-P { all | PIDList } all の場合は、実行したすべてのプロセス、 または PIDList が指定されたプロセスについて、 プロセス・レベルのプロファイル作成を使用可能にします。 PIDList は、プロセス ID コンマで区切ったリストです。

プロセス・レベルのプロファイル作成は、プロファイル作成モードの少なくとも 1 つ (-u-s-k-e、または -j) がオンになっている場合にのみ使用可能になります。

-r rootstring rootstring を指定します。tprof 入力ファイルとレポート・ファイルはすべて、rootstring.suffix の形式になります。

-r フラグを指定しないと、rootstring パラメーターは -x フラグが指定するデフォルト・プログラム名を使用します。

-R tprof コマンドは、パーセンテージを計算するために PURR 増分値によって重み計算されたサンプルを使用することを指定します。これは、同時マルチスレッド化またはMicro-Partitioning®環境で実行するときの推奨モードです。

-R フラグは、-z フラグまたは -Z フラグと一緒に使用できません。

-s 共用ライブラリーのプロファイル作成が可能です。
-S PathList オブジェクト検索 PathList を指定します。 PathList は、実行可能プログラム、共用ライブラリー、 およびカーネル・エクステンションを検索するときのパスをコロンで区切ったリストです。

デフォルトのオブジェクト検索 PathList は、 環境パス・リスト ($PATH) です。

-t スレッド・レベルのプロファイル作成を使用可能にします。

-p または -P を指定せず に -t フラグを使用する と、-t-P all -t と同じになり ます。指定した場合は、選択したプロセスに対して、スレッド・レベルのレポートが 使用可能になります。スレッド・レベルのプロファイル作成を使用可能にするには、 次のいずれかのプロファイル作成モード (-u-s-k-e、または -j) をオンにする必要があります。

-T buffersize トレース buffersize を指定します。

このフラグは、リアルタイムまたは自動オフライン・モードでのみ意味を持ちます。

-u ユーザー・モードのプロファイル作成を使用可能にします。
-v 詳細モードを使用可能にします。
-V File 指定された File に詳細出力を保管します。
-x program tprof がプログラムを実行するように指定します。 program が完了したとき、trcoff または trcstop によって trace が手動で停止されると、データ収集が停止します。

-x フラグは、tprof に指定す るフラグのリストで、最後のフラグにしてください。

-X tprof コマンドは、tprof プロファイル作成の終了時に XML 生成プログラムを呼び出す場合、ならびに tprof trace および symlib データから直接 XML レポートを生成する場合に指定します。

-X オプションには Java が必要です。 Java を最初にインストールし、必ず Java が PATH に入っていることを確認します。

-y 指定されたコマンドとその子孫についてのみ、イベント・ベースのプロファイル作成をオンにします。
-z ティック・レポートをオンにします。前バージョンの tprof との互換性が可能になります。 デフォルトでは、プロセッサー使用率がパーセント値でのみ報告されます。 -z を使用すると、tprof がティックも 報告します。このフラグを使用すると、サブルーチン・レポート に Address と Bytes のカラムを追加します。

-z フラグと -a フラグを同時に指定すると、レポートのプロセス要約セクションにはパーセンテージではなく数値が表示されます。

-Z レポートでパーセンテージではなくティックを使用するように切り替え (-z フラグと同じ)、注釈付きリスト (-L フラグと一緒に使用する場合) および注釈付きソース・ファイル (-m フラグと一緒に使用する場合) を、サブルーチンごとに 1 つずつの複数のファイルに分割します。

このオプションは、-g フラグをオンにします。

セキュリティー

RBAC ユーザーと Trusted AIX ユーザーへの注意: このコマンドは特権命令を実行できます。特権命令を実行できるのは特権ユーザーのみです。 許可と特権の詳細については、「セキュリティー」の『特権コマンド・データベース』を参照してください。このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。

  1. 以下の例は基本のグローバル・プログラムとスレッド・レベルの要約を示したものです。
    $tprof -x sleep 10 

    以下の出力に類似した出力が表示されます。

    Mon May 21 00:39:26 2012 System: AIX 6.1 Node: dreaming Machine: 000671894C00 
    Starting Command sleep 10 
    stopping trace collection. 
    Generating sleep.prof 

    生成される sleep.prof ファイルには、要約レポート・セクションのみが含まれます。

  2. 以下の例は、すべてのオプションが指定されたグローバル・プロファイル作成を示したものです。
    $tprof -skeuj -x sleep 10 

    以下の出力に類似した出力が表示されます。

    Mon May 21 00:39:26 2012 
    System: AIX 6.1 Node: drea
    ming Machine: 000671894C00 
    Starting Command sleep 10 
    stopping trace collection.
    Generating sleep.prof 

    生成される sleep.prof ファイルには、要約レポート・セクションとグローバル・プロファイル・セクションが含まれます。

  3. 以下の例は、単一のプロセス・レベルのプロファイル作成を示したものです。
    $tprof -u -p workload -x workload 

    以下の出力に類似した出力が表示されます。

    Mon May 21 00:39:26 2012 
    System: AIX 6.1 Node: drea
    ming Machine: 000671894C00 
    Starting Command workload stopping trace collection. 
    Generating workload.prof 

    生成される workload.prof ファイルには、ユーザー・モード・プロファイル・サブセクションのみが含まれる「workload」プロセスの要約レポート・セクション、グローバル・ユーザー・モード・プロファイル・セクション、および 1 つのプロセス・レベルのプロファイル・セクションが含まれます。

  4. 以下の例は、複数のプロセス・レベルのプロファイル作成を示したものです。
    $tprof -se -p send,receive -x startall 

    以下の出力に類似した出力が表示されます。

    Mon May 21 00:39:26 2012 
    System: AIX 6.1 Node: drea
    ming Machine: 000671894C00 
    Starting Command startall 
    stopping trace collection. 
    Generating startall.prof

    生成される startall.prof ファイルには要約レポート、グローバル共用ライブラリー・モード・プロファイル、グローバル・カーネル・エクステンション・プロファイルの各セクション、および 2 つのプロセス・レベル (プロセス「send」用とプロセス「receive」用) のプロファイル・セクションが含まれます。プロセス・レベルの各セクションには、共用ライブラリーのプロファイ ル情報とカーネル・エクステンションのプロファイル情報用に 2 つのサブセクションがあります。

  5. 以下の例は、マイクロプロファイル作成とリスト注釈を示したものです。
    $tprof -m ./tcalc -L ./tcalc -u -x ./tcalc 

    以下の出力に類似した出力が表示されます。

    Mon May 21 00:39:26 2012 
    System: AIX 6.1 Node: drea
    ming Machine: 000671894C00 
    Starting Command ./tcalc 
    stopping trace collection. 
    Generating tcalc.prof 
    Generating tcalc.tcalc.c.mprof
    Generating tcalc.tcalc.c.alst

    生成される tcalc.prof ファイルには要約レポート・セクションとグローバル・ユーザー・モード・プロファイル・セクションが含まれます。出力される tcalc.tcalc.c.mprof および tcalc.tcalc.c.alst ファイルには、マイクロプロファイル作成レポートと注釈付きリストが組み込まれます。

  6. プロセッサー・サイクルに関するイベント・ベースのプロファイル作成で、100 ミリ秒ごとに 1 回サンプリングするには、次のように入力します。
    $tprof -E -f 100 -Askex sleep 10

    出力は、以下の表示に類似する出力となります。

    Starting Command sleep 10
    stopping trace collection.
    Tue Apr 26 14:44:02 2005
    System: AIX 5.3 Node: bigdomino Machine: 00C0046A4C00
    Generating sleep.trc
    Generating sleep.prof
    Generating sleep.syms
  7. 完了済み命令に関するイベント・ベースのプロファイル作成で、20,000 の完了済み命令ごとに 1 回サンプリングするには、次のように入力します。
    $tprof -E PM_INST_CMPL -f 20000 -Askex sleep 10

    出力は、以下の表示に類似する出力となります。

    Starting Command sleep 10
    stopping trace collection.
    Tue Apr 26 14:42:44 2005
    System: AIX 5.3 Node: bigdomino Machine: 00C0046A4C00
    Generating sleep.trc
    Generating sleep.prof
    Generating sleep.syms
  8. エミュレーション割り込みに関するイベント・ベースのプロファイル作成の場合、10000 回のイベントごとに 1 回サンプリングするには、以下のコマンドを入力します。
    $tprof -E EMULATION -Askex sleep 10

    出力は、以下の表示に類似する出力となります。

    Starting Command sleep 10
    stopping trace collection.
    Tue Apr 26 14:41:44 2005
    System: AIX 5.3 Node: bigdomino Machine: 00C0046A4C00
    Generating sleep.trc
    Generating sleep.prof
    Generating sleep.syms
  9. 以下の例は、自動オフライン・モードを示したものです。
    $tprof -c -A all -x sleep 10 

    出力は、以下の表示に類似する出力となります。

    Starting Command sleep 10 
    stopping trace collection. 
    Mon May 21 00:39:26 2012 
    System: AIX 6.1 Node: drea
    ming Machine: 000671894C00 
    Generating sleep.ctrc 
    Generating sleep.csyms 
    Generating sleep.prof 

    生成される sleep.prof ファイルには要約レポート・セクションのみが含まれますが、2 つの加工済みファイルは再ポストプロセスの準備ができています。

  10. 以下の例は、ソース行収集を使用可能にする自動オフライン・モードを示したものです。
    $tprof -A -N -x sleep 10 

    出力は、以下の表示に類似する出力となります。

    Starting Command sleep 10
    stopping trace collection.
    Wed Feb 8 15:12:41 2006
    System: AIX 5.3 Node: aixperformance Machine: 000F9F3D4C00
    Generating sleep.trc
    Generating sleep.prof
    Generating sleep.syms
    生成される sleep.prof ファイルには要約レポート・セクションのみが含まれ、sleep.syms にはソース行情報が含まれます。
  11. 以下の例は、ソース行収集と命令収集を使用可能にする自動オフライン・モードを示したものです。
    $tprof -A -N -I -r RootString -x sleep 10 

    出力は、以下の表示に類似する出力となります。

    Starting Command sleep 10
    stopping  trace collection.
    Wed Feb  8 15:16:37 2006
    System: AIX 5.3 Node: aixperformance Machine: 000F9F3D4C00
    Generating RootString.trc
    Generating RootString.prof
    Generating RootString.syms
    rootstring.prof ファイルが生成されます。rootstring.syms ファイルにはソース行情報とバイナリー命令が含まれます。
  12. Java 5 JVM 上でリアルタイム・モードで実行されているアプリケーション HelloAIX に対して Java ソース行と命令の収集を使用可能にするには、次のコマンドを入力してください。
    $tprof -N -I -x java -Xrunjpa:source=1,instructions=1 Hello AIX 

    出力は、以下の表示に類似する出力となります。

    Thu Feb  9 13:30:38 2006
    System: AIX 5.3 Node: perftdev Machine: 00CEBB4A4C00
    Starting Command java -Xrunvpn_jpa:source=1,instructions=1 Hello AIX
    Hello AIX!
    stopping trace collection.
    Generating java.prof
    java.prof ファイルが生成されます。これには、JIT ソース行情報と JIT 命令が含まれます。
  13. 以下の例は、共用ライブラリー、スレッド・レベル・プロファイル作成、プロセッサーごとのトレース、またはポストプロセッシングがない、 vloop_lib_32 プログラムのプロセッサー使用を示したものです。
    $tprof -A -n -s -t -r test -x vloop_lib_32 5

    出力は、以下の表示に類似する出力となります。

    Starting Command vloop_lib_32 5
    stopping trace collection.
    Generating test.trc
    Generating test.syms
  14. 以下に、XML レポートの自動化オフライン・モードの例を示します。
    $tprof -A -X -r RootString -x sleep 10
    Starting Command sleep 10
    stopping trace collection.
    Tue Apr 17 22:00:24 2007
    System: AIX 5.3 Node: test105 Machine: 00CEBB4A4C00
    Generating sleep.trc
    Generating sleep.syms
    Calling tprof2xml to generate XML report.
    tprof2xml TraceReader Version 1.2.0
    Tue Apr 17 22:00:24 2007
    System: AIX 6.1 Node: test105 Machine: 00CEBB4A4C00
     ------------------0------------------
    Record 0
    Post-processing counters
    Retrieving Disassembly
    writing the XML
    Writing symbol list
    .
    Writing process hierarchy
    Finished writing sleep.etm
  15. 以下に、ソース行と命令収集を使用可能にする自動化オフライン・モードの例を示します。
    $tprof -A -N -I -X -x sleep 10
    Starting Command sleep 10
    stopping trace collection.
    Tue Apr 17 22:00:24 2007
    System: AIX 5.3 Node: test105 Machine: 00CEBB4A4C00
    Generating sleep.trc
    Generating sleep.syms
    Calling tprof2xml to generate XML report.
    tprof2xml TraceReader Version 1.2.0
    Tue Apr 17 22:00:24 2007
    System: AIX 6.1 Node: test105 Machine: 00CEBB4A4C00
    ------------------0------------------
    Record 0
    Post-processing counters
    Retrieving Disassembly
    writing the XML
    Writing symbol list
    .
    Writing process hierarchy
    Finished writing sleep.etm
    The symbol data elements in the xml report will have both bytes and
    LineNumberList child elements.
  16. 以下に、時刻データを使用可能にする XML レポートの自動化オフライン・モードの例を示します。
    $tprof -A -X timedata,buckets=100 -x sleep 10
    Starting Command sleep 10
    stopping trace collection.
    Tue Apr 17 22:18:06 2007
    System: AIX 5.3 Node: test105 Machine: 00CEBB4A4C00
    Generating RootString.trc
    Generating RootString.syms
    Calling tprof2xml to generate XML report.
    tprof2xml TraceReader Version 1.2.0
    Tue Apr 17 22:18:06 2007
    System: AIX 5.3 Node: test105 Machine: 00CEBB4A4C00
    Tue Apr 17 22:18:06 2007
    System: AIX 5.3 Node: test105 Machine: 00CEBB4A4C00
    ------------------0------------------
    Record 0
    Post-processing counters
    Retrieving Disassembly
    writing the XML
    Writing symbol list
    .
    Writing process hierarchy
    Finished writing RootString.etm
    The RootString.etm will have bucket elements in each object of the profile
    hierachy.
  17. 以下に、XML レポートの手動オフライン・モードの例を示します。
    $tprof -A -x sleep 10
    Starting Command sleep 10
    stopping trace collection.
    Tue Apr 17 22:28:01 2007
    System: AIX 5.3 Node: test105 Machine: 00CEBB4A4C00
    Generating sleep.trc
    Generating sleep.prof
    Generating sleep.syms
    tprof を実行して、sleep.trc および sleep.syms を使用し、XML レポートを生成する場合は、以下の入力を行って -r sleep を指定して、XML レポートを生成します。
    $tprof -X -r sleep
    Calling tprof2xml to generate XML report.
    tprof2xml TraceReader Version 1.2.0
    Tue Apr 17 22:28:01 2007
    System: AIX 6.1 Node: test105 Machine: 00CEBB4A4C00
    ------------------0------------------
    Record 0
    Post-processing counters
    Retrieving Disassembly
    writing the XML
    Writing symbol list
    .
    Writing process hierarchy
    Finished writing sleep.etm
  18. ワークロードとその子孫のラージ・ページ分析については、以下のコマンドを入力してください。
    $tprof -a -y workload
    出力は、以下の表示に類似する出力となります。
    Starting Command workload
    stopping trace collection.
    Tue Apr 26 14:42:44 2005
    System: AIX 5.3 Node: bigdomino Machine: 00C0046A4C00
    Generating workload.trc
    Generating workload.prof
    Generating workload.syms
  19. 指定されたプログラム workload とその子孫のみのプロファイルを作成するには、以下のコマンドを入力してください。
    $tprof -E PM_MRK_LSU_FIN -f 20000 –Aske –y workload
    出力は、以下の表示に類似する出力となります。
    Starting Command workload
    stopping trace collection.
    Tue Apr 26 16:42:44 2005
    System: AIX 5.3 Node: bigdomino Machine: 00C0046A4C00
    Generating workload.trc
    Generating workload.prof
    Generating workload.syms
  20. Java 6 JVM でリアルタイム・モードで実行されているアプリケーション HelloAIX に対して Java ソース行と命令の収集を使用可能にするには、 次のコマンドを入力してください。
    $ tprof -N -I -x java -agentlib:jpa=source=1,instructions=1 Hello AIX
    注: 64 ビットの JDK を使用する場合は、-agentlib:jpa ではなく -agentlib:jpa64 コマンドを次の形式で入力します。
    
    $ tprof -N -I -x java -agentlib:jpa64=source=1,instructions=1 Hello AIX
    出力は、以下の表示に類似する出力となります。
    Fri May 30 04:16:27 2008
    System: AIX 6.1 Node: toolbox2 Machine: 00CBA6FE4C00
    Starting Command java -agentlib:jpa=source=1,instructions=1 Hello AIX
    Hello AIX!
    stopping trace collection.
    Generating java.prof

    java.prof ファイルが生成されます。これには、JIT ソース行情報と JIT 命令が含まれます。

  21. -O showaddrbytes=on フラグを使用してレポートにアドレス・バイト情報を表示するには、次のコマンドを入力します。
    $ tprof  -O showaddrbytes=on -x sleep 5
    
    次の例のようなレポートが表示されます。
    
    Subroutine                        %   Source                Address  Bytes 
    ==========                     ====== ======                =======  ===== 
    h_cede_end_point                98.47 hcalls.s               111bfc     14 
    
    Sample report without -O showaddrbytes=on option 
    
    Subroutine                        %   Source                      
    ==========                     ====== ======         
    h_cede_end_point                98.47 hcalls.s    
  22. -G オプションを使用して、02/18/2016 02:30:30 から 02/18/2016 02:35:30 までのトレース・データの処理を表示するには、次のコマンドを入力します。
    $tprof  -G “start=021802303016,end=021802353016” -r sleep
    
    02/18/2016 02:30:30 から終了までのトレース・データを処理するには、次のコマンドを入力します。
    
    $tprof -G “start= 021802303016” -r sleep
    開始から 02/18/2016 02:35:30 までのトレース・データを処理するには、次のコマンドを入力します。
    $tprof -G “end=021802303517” -r sleep
  23. 以下の例で、関数名は次のとおりです。
    Test::abcdefghijklmnoprstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789
    . -O wrapfname=on オプションを使用して長い関数名の行折り返しを行う方法を表示するには、次のコマンドを入力します。
    $tprof -ukesl -O wrapfname=on -x sleep 5
    
    The following is a sample report: 
    .Test::abcdefghijklmnoprstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVW
    XYZ123456789							215  19.40 test. C
    -O wrapfname=on オプションを使用しないサンプル・レポートを以下に示します。
    Test::abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789_0abcdefghijk 
    lmnoprstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890(int,int)  215  19.40 test. C

メッセージ

システムが以下のメッセージを表示したものと仮定します。

/dev/systrace: device busy or trcon: TRCON:no such device

これは、trace 機能を既に使用中であることを意味します。 プログラムを停止し、trcstop を入力してトレースを停止してから、再実行してください。