tprof コマンド
目的
プロセッサーの使用状況を報告します。
構文
- リスト・タイプの入力はすべてコンマで区切りますが、pathlist だけは コロンで区切ります。
- リアルタイム・モードで実行されている間、マルチ CPU プロファイル作成モードは自動的に使用不可になります。
- プロセッサーごとのプロファイル作成をオンにすると、マイクロプロファイル作成は 自動的に使用不可になります。
- 指定されたログ・バッファー・サイズは、tprof コマンドがリアルタイム・モードで実行する場合は省略されます。
- -x フラグを指定して、-A フラグ を指定しないと、tprof はリアルタイム・モードで実行します。
- -x フラグと -A フラグを組み合わせて 使用すると、tprof は自動オフライン・モードで実行します。
- -x フラグを省略する と、tprof は、cooked ファイルと -F フラ グがあるかないかにより、ポストプロセッシング・モードまたは手動オフライン・モード で実行します。
- tprof コマンドが、リアルタイムまたは自動化オフライン・モードのワークロード・パーティションで実行する場合、-@ フラグは自動的に使用不可になります。
- -y フラグは、-E フラグまたは -a フラグとのみ同時に使用できます。
説明
tprof コマンドは個別のプログラムおよびシステム全体におけるプロセッサーの使用状況について報告します。 このコマンドは、 プロセッサーの制約を受ける Java™、C、C++、 または FORTRAN プログラムを使っているすべてのユーザーや、 そのプログラムのどのセクションがプロセッサーに最も負担をかけているのか知りたいユーザーなどに便利なツールです。
tprof コマンドを使用すると、オブジェクト・ファイル、プロセス、スレッド、 サブルーチン (ユーザー・モード、カーネル・モード、共用ライブラリー)、およびプログラム のソース行や個別命令に対して、プロセッサー時間をチャージできます。プロセッサー時間を サブルーチンにチャージすることをプロファイル作成、プロセッサー時間をソース・プログラ ム行にチャージすることを、マイクロプロファイル作成と呼びます。
サブルーチン・レベルのプロファイル作成の場合は、ユーザーは実行可能なプログラムを
変更することなしに tprof コマンドを実行できます。
つまり、特殊なコンパイラー・フラグを使用して再コンパイルする必要はありません。
トレースバック・テーブルも削除した場合を除き、実行可能プログラムを削除した場合も同様です。ただし、リスト作成ファイルが既に使用可能に
なっている場合を除き、マイクロプロファイルを獲得するには再コンパイルが
必要です。プログラム上でマイクロプロファイル作成を実行するには、-g フラグを指定してプログラムをコンパイルし、tprof コマンドからソース・ファイルにアクセスできるようにするか、-qlist フラグを指定してプログラムをコンパイルし、tprof コマンドからオブジェクト・リスト作成ファイルとソース・ファイルの両方、またはオブジェクト・リスト作成ファイルだけにアクセスできるようにします。tprof のマイクロ
プロファイル作成機能のすべてを利用するには、.lst
とソース・
ファイルの両方を提供してください。
- リアルタイムまたはオンライン
- 手動オフライン
- 自動オフライン
- ポストプロセッシング
- 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 台だけのプロセッサーのトレース・データが入ります。
- rootstring.csyms
- rootstring.ctrc[ -cpuid ]
- rootstring.csyms
- rootstring.ctrc[ -cpuid ]
これらのファイルは、-c フラグを指定して (ポストプロセッシング以外の任意のモードで) 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 フラグを使用できません。
- 要約報告書セクション:
- プロセス名別プロセッサー使用率の要約
- スレッド別プロセッサー使用率の要約 (tid)
- グローバル (システム上のすべてのプロセスの実行に関連する) プロファイル・セクション:
- ユーザー・モード・ルーチンのプロセッサー使用率
- カーネル・モードで呼び出されるミリコード・ルーチンを含む、カーネル・ルーチンのプロセッサー使用率
- カーネル・エクステンションのプロセッサー使用率の要約
- カーネル・エクステンションのサブルーチンごとのプロセッサー使用率
- 専用にロードされた、グローバルな名前付き共用ライブラリー、およびユーザー・モードで呼び出されたミリコード・ルーチンのプロセッサー使用率の要約
- 共用ライブラリーのサブルーチンごとのプロセッサー使用率
- Java クラスごとのプロセッサー使用率
- 各 Java クラスの Java メソッドごとのプロセッサー使用率
- プロセスおよびスレッド・レベルのプロファイル・セクション (プロセスまたはスレッドごとに 1 つのセクション):
- このプロセス/スレッドに対するユーザー・モード・ルーチンのプロセッサー使用率
- カーネル・モードで呼び出されるミリコード・ルーチンを含む、このプロセス/スレッドに対するカーネル・ルーチンのプロセッサー使用率
- このプロセス/スレッドに対するカーネル・エクステンションのプロセッサー使用率要約
- このプロセス/スレッドに対する各カーネル・エクステンションのサブルーチンのプロセッサー使用率
- このプロセス/スレッドに対する、専用にロードされた、グローバルな名前付き共用ライブラリー、 およびユーザー・モードで呼び出されたミリコード・ルーチンのプロセッサー使用率の要約
- このプロセス/スレッドに対する各共用ライブラリーのサブルーチンのプロセッサー使用率
- このプロセス/スレッドに対する各 Java クラスのプロセッサー使用率
- このプロセス/スレッドに対する各 Java クラスの Java メソッドのプロセッサー使用率
- -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]。
- 注釈付きソース・ファイルの絶対パス名。
- ホット・ライン・プロファイル・セクション。ここには、プロセッサー使用率でソー トして、プロファイル・サンプルで一致したソース・ファイルのすべての 行番号が含まれます。ソース行ごとに、プロセス合計で使用した経過時間パーセント値 が 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 つの名前です。
- source=1 は、JIT ソース行の収集をオンにします (IBM® JRE 1.5.0 またはそれ以上のバージョンが必要)。
- instructions=1 は、JIT 命令の収集をオンにします。
- 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 コマンドを何回か実行して、それぞれのプロファイルの結果を比較してみてください。
情報
- プロセッサー使用率 WPAR 名の要約を追加するのは、-@ フラグのみです (すなわち、サブオプションはなし)。 また、WPAR 名は、プロセスおよびスレッドによるプロセッサー使用率を要約するセクションにリストされた、プロセスごとに表示されます。
- ALL サブオプションを使用すると、tprof レポートに、システム全体の、かつ WPAR の実行ごとの、プロセス、スレッド、オブジェクト・ファイルおよびサブルーチン・レベルのプロファイル作成レポートが含まれます。
- WPAR 名のコンマで区切られたリストは、 tprof レポート内の名前付き WPAR ごとの、 プロセス、スレッド、オブジェクト・ファイルおよびサブルーチン・レベルのプロファイル・セクションになります。
XML レポート生成
- プロファイル一般情報
- シンボル・データ
- プロファイル階層
- 一時データ
-X は、XML レポートを直接生成する場合に、自動化オフライン・モードで使用されます。
-X は、RootString.syms および RootString.trc ファイルから XML レポートを生成する場合に、手動オフライン・モードでも使用されます。
-X timedata が指定されると、生成された XML レポートに時刻データ情報が組み込まれます。 デフォルトでは、時刻データ生成機能はオフになっています。
時刻データのバケット数を指定する場合は、buckets=N 引数を使用します。 デフォルトのバケット数は 1800 です。
ラージ・ページ分析
- 静的アプリケーション・データ・データ (初期化されているデータまたは初期化されていないデータ)
- アプリケーション・ヒープ (動的に割り当てられているデータ)
- スタック
- アプリケーション・テキスト
- ページ・サイズ
- すべての領域をバックアップするのに必要なページ数
- 変換ミスのスコア
- コールド変換のミス・スコア
- メモリー参照の数またはパーセンテージ
- モデルとなるメモリー参照
- Malloc 呼び出し
- フリー呼び出し
データ・プロファイル作成
tprof -b コマンドは基本のデータのプロファイル作成をオンにして、データ・アクセス情報を収集します。要約セクションはそれぞれのプロセスのカーネル・データ、ライブラリー・データ、ユーザー・グローバル・データ、およびスタック・ヒープのセクション全体にわたるアクセス情報を報告します。
-b フラグと -s、-u、-k、および -e フラグを同時に指定すると、tprof コマンドのデータ・プロファイル作成は、共用ライブラリー、バイナリー、カーネル、およびカーネル・エクステンションで最も使用頻度の高いデータ構造 (エクスポートされたデータ・シンボル) を報告します。-b フラグもこれらのデータ構造を使用する機能を報告します。
tprof に対する prof と gprof の比較
この 3 つのコマンドの最も大きな違いは、tprof が プロファイル作成中のプログラムに対して実行時間に対する影響を与えずにデータを 収集し、マイクロプロファイル・レポートを生成することを除いて、 再コンパイルをせずに、最適化され、かつストリップしたバイナリーで作業できることです。 gprof と prof は、いずれもマイクロプロファイル作成機能を備えておらず、最適化されたバイナリーに対しても機能しませんが、これらは特殊なコンパイル・フラグを必要とするため、場合によっては実行時間の大幅なスローダウンが生じます。 prof は、ストリップされたバイナリーでは機能しません。
prof および gprof ツールは、 このオペレーティング・システムを含む多くの UNIX システム上でサポートされている、 標準のプロファイル作成ツールです。 prof および gprof はともに、サブプログラムのプロファイル作成と、すべてのサブプログラムが呼び出された回数の正確なカウント値を提供します。 gprof コマンドはまた呼び出しグラフ という非常に便利な機能も備えており、この機能によって特定の親による各サブプログラムの呼び出し回数と各サブプログラムの子の呼び出し回数が表示されます。tprof コマンドにはサブプログラムの呼び出しカウントも、呼び出しグラフ情報のいずれもありません。
tprof コマンドと同様に、prof と gprof の 両方のコマンドとも、ユーザー・プログラムのプログラム・カウンターを サンプリングして、各サブプログラムのプロセッサー推定使用量を獲得します。
tprof は、全システムのプロセッサー使用率情報を収集します が、一方 prof と gprof は、 ユーザー・モードで使用されている期間だけ、1 つのプログラム に対して、プロファイル情報だけを収集します。 tprof は、プロファイル作成されたユーザー・プログラムを実行中に、 活動化されているすべてのプロセスについても要約を提供し、ライブラリーとカーネル・ モードのプロファイル作成を完全にサポートします。
tprof は Java アプリケーションのプロファイル作成をサポー トしますが、prof と gprof はサポートしません。
フラグ
項目 | 説明 |
---|---|
-@ { 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 ] | イベント・ベースのプロファイル作成を可能にします。使用できるモードは以下のとおりです。
|
-f frequency | サンプリング頻度を指定します。サンプリング頻度は、プロセッサー・サイクルおよび EMULATION、ALIGNMENT、ISLBMISS、DSLBMISS イベントの場合は 1 から 500 ミリ秒に設定でき、その他のパフォーマンス・モニター・イベントの場合は、イベント発生回数で 10000 回から MAXINT 回までに設定できます。-f フラグと -y フラグを同時に指定すると、その他のパフォーマンス・モニター・イベントに対するサンプリング頻度の値の範囲は 1 回から MAXINT 値の発生回数となり、デフォルト値は 10000 回のイベントとなります。 |
-F | cooked ファイルが既に存在している場合は、このファイルを上書きし ます。-x フラグを付けずに使用すると、 手動オフライン・モードを強制します。 |
-g | シンボル名を人間が読める名前に変換しないでください。 |
-I | バイナリー命令収集をオンにします。
注: -I フラグはシンボル・ファイルを生成するとき、または加工されたシンボル・ファイルを自動オフライン・モードで生成するときに、バイナリー命令の収集を活動化します。
ただし、手動オフライン・モードでは、-I フラグはレポート・ファイルに影響しません。
|
-j | Java クラスとメソッドのプロファイル作成をオンにします。 |
-k | カーネル・プロファイル作成を使用可能にします。 |
-l | ロング・ネームのレポートを使用可能にします。デフォルトで は、サブルーチン名、プログラム名、およびソース・ファイル名がプロファイル・ レポートのスペースに入りきらない場合は、tprof がこれらを 切り捨てます。このフラグは、切り捨てを使用不可にします。 |
-L objectlist | コンマ区切りリスト objectlist によって指定されたオブジェクトのリスト注釈を使用可能にします。実行可能プログラムと共用ライブラリーでは、それぞれのリスト・ファイルに注釈を付けることができます。
ライブラリーのアーカイブ名を指定してください。 注:
|
-m objectslist | コンマ区切りリスト objectlist によって指定されたオブジェクトのマイクロプロファイル作成を使用可能にします。実行可能プログラム、共用ライブラリー、
およびカーネル・エクステンションをマイクロプロファイル作成できます。
ライブラリーおよびカーネル・エクステンションのアーカイブ名を指定してください。
注:
|
-M PathList | ソース・パス・リストを指定します。PathList は、マイクロプロファイル作成および注釈のリスト作成に必要な、ソース・ファイルおよび .lst ファイルを検索する際のパスのコロン区切りリストです。
デフォルトのソース・パス・リストは、オブジェクト検索パス・リストです。 |
-n | ポストプロセッシングをオフにします。-n フラグが指定されていると、-u、-s 、-k、-e、および -jフラグは無視されます。 データは収集され、.trc ファイルおよび gensyms ファイルは生成されますが、.prof ファイルは生成されません。 この結果、例えば、ベンチマークの間のシステムの過負荷を回避するのに役立ちます。 -n オプションが使用される場合は、-A フラグを使用する必要があります。 |
-N | ソース行番号情報の収集をオンにします。
-N フラグはシンボル・ファイルを生成するとき、または自動オフライン・モードで加工済みシンボル・ファイルを生成するときに、ソース行情報の収集を活動化します。 ただし、手動オフライン・モードでは、-N フラグはレポート・ファイルに影響しません。 |
-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 サブコマンドの項を参照してください。
例
- 以下の例は基本のグローバル・プログラムとスレッド・レベルの要約を示したものです。
$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 ファイルには、要約レポート・セクションのみが含まれます。
- 以下の例は、すべてのオプションが指定されたグローバル・プロファイル作成を示したものです。
$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 ファイルには、要約レポート・セクションとグローバル・プロファイル・セクションが含まれます。
- 以下の例は、単一のプロセス・レベルのプロファイル作成を示したものです。
$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 つのプロセス・レベルのプロファイル・セクションが含まれます。
- 以下の例は、複数のプロセス・レベルのプロファイル作成を示したものです。
$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 つのサブセクションがあります。
- 以下の例は、マイクロプロファイル作成とリスト注釈を示したものです。
$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 ファイルには、マイクロプロファイル作成レポートと注釈付きリストが組み込まれます。
- プロセッサー・サイクルに関するイベント・ベースのプロファイル作成で、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
- 完了済み命令に関するイベント・ベースのプロファイル作成で、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
- エミュレーション割り込みに関するイベント・ベースのプロファイル作成の場合、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
- 以下の例は、自動オフライン・モードを示したものです。
$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 つの加工済みファイルは再ポストプロセスの準備ができています。
- 以下の例は、ソース行収集を使用可能にする自動オフライン・モードを示したものです。
$tprof -A -N -x sleep 10
出力は、以下の表示に類似する出力となります。
生成される sleep.prof ファイルには要約レポート・セクションのみが含まれ、sleep.syms にはソース行情報が含まれます。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
- 以下の例は、ソース行収集と命令収集を使用可能にする自動オフライン・モードを示したものです。
$tprof -A -N -I -r RootString -x sleep 10
出力は、以下の表示に類似する出力となります。
rootstring.prof ファイルが生成されます。rootstring.syms ファイルにはソース行情報とバイナリー命令が含まれます。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
- Java 5 JVM 上でリアルタイム・モードで実行されているアプリケーション HelloAIX に対して Java ソース行と命令の収集を使用可能にするには、次のコマンドを入力してください。
$tprof -N -I -x java -Xrunjpa:source=1,instructions=1 Hello AIX
出力は、以下の表示に類似する出力となります。
java.prof ファイルが生成されます。これには、JIT ソース行情報と JIT 命令が含まれます。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
- 以下の例は、共用ライブラリー、スレッド・レベル・プロファイル作成、プロセッサーごとのトレース、またはポストプロセッシングがない、 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
- 以下に、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
- 以下に、ソース行と命令収集を使用可能にする自動化オフライン・モードの例を示します。
$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.
- 以下に、時刻データを使用可能にする 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.
- 以下に、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
- ワークロードとその子孫のラージ・ページ分析については、以下のコマンドを入力してください。
$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
- 指定されたプログラム
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
- 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 命令が含まれます。
メッセージ
システムが以下のメッセージを表示したものと仮定します。
/dev/systrace: device busy or trcon: TRCON:no such device
これは、trace 機能を既に使用中であることを意味します。 プログラムを停止し、trcstop を入力してトレースを停止してから、再実行してください。