tprof コマンド
目的
プロセッサーの使用状況を報告します。
構文
- リスト・タイプの入力はすべてコンマで区切りますが、pathlist だけは コロンで区切ります。
- リアルタイム・モードで実行されている間、マルチ CPU プロファイル作成モードは自動的に使用不可になります。
- プロセッサーごとのプロファイル作成をオンにすると、マイクロプロファイル作成は 自動的に使用不可になります。
- 指定されたログ・バッファー・サイズは、tprof コマンドがリアルタイム・モードで実行する場合は省略されます。
- -x フラグを指定して、-A フラグ を指定しないと、tprof はリアルタイム・モードで実行します。
- -x フラグと -A フラグを組み合わせて 使用すると、tprof は自動オフライン・モードで実行します。
- -x フラグを省略する と、tprof は、cooked ファイルと -F フラ グがあるかないかにより、ポストプロセッシング・モードまたは手動オフライン・モード で実行します。
- -@ フラグは、 tprof コマンドが ワークロード・パーティション でリアルタイム・モードまたは自動オフライン・モードで実行されると、自動的に使用不可になります。
- -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 とソース・
ファイルの両方を提供してください。
- リアルタイムまたはオンライン
- 手動オフライン
- 自動オフライン
- ポストプロセッシング
- 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 台だけのプロセッサーのトレース・データが入ります。
- ルートストリング.csyms
- ルート文字列.ctrc [ -cpuid ]
- ルートストリング.csyms
- ルート文字列.ctrc [ -cpuid ]
これらのファイルは、-c フラグを指定して (ポストプロセッシング以外の任意のモードで) tprof コマンドを実行すると生成されます。
- ルートストリング.syms
- ルートストリング.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®JRE1.5.0 またはそれ以降のバージョンが必要です)。
- instructions=1 は、JIT 命令の収集をオンにします。
- tprof は、実行中のカーネルが /unix ファイルと同じであることを検査できません。 これは、 警告メッセージが表示される場合でも、ほとんどの場合、 実行中のカーネルと /unix が同じであるために、 データは正確でなければならないことを意味します。
- gensyms コマンドが root 以外のユーザーによって実行される場合、制約事項 #1 (上記) と同じ警告が出され、gensyms ファイルにマークが付けられます。 tprof がオフライン・モードで実行される場合は、gensyms > コマンドにより作成されたファイルには、未検査カーネルに関して tprof のフラグが立てられます。
- tprof は、読み取り許可が設定されていないファイルのシンボルを開き、読み取ることができません。 専用の共有ライブラリーの中には読み取り許可が設定されていないものがあり、カーネル・エクステンションの中には読み取り不可のものがあります。
時間ベース・プロファイル作成とイベント・ベース・プロファイル作成
デフォルトでは、 tprof は時間ベースであり、デクリメンター割り込みによって駆動されます。 もう 1 つのプロファイル作成モードはイベント・ベースです。この場合、割り込みはソフトウェア・ベース・イベントまたはパフォーマンス・モニター・イベントによって発生します。 イベント・ベースのプロファイル作成では、サンプリング頻度とプロファイル作成イベントをコマンド・ラインで変更することができます。
-E フラグは、イベント・ベースのプロファイル作成を有効にします。 -E フラグは、4 つのソフトウェア・ベース・イベント (EMULATION、ALIGNMENT、ISLBMISS、DSLBMISS) またはパフォーマンス・モニター・イベント (PM_ *) の 1 つです。 デフォルトでは、プロファイル・イベントはプロセッサー・サイクルです。 すべてのパフォーマンス・モニター・イベントにはプレフィックス PM_ が付きます。例えば、プロセッサー・サイクルの場合は PM_CYC、完了済みの命令の場合は PM_INST_CMPL です。 pmlist は、プロセッサーでサポートされるすべてのパフォーマンス・モニター・イベントをリストします。 選択したパフォーマンス・モニター・イベントは、 PM_RUN_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 フラグを指定する必要があります。 さらに、 -Xrunjpa API (Java 5 以前の JVM で実行する場合) または java コマンド行オプションの -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 Versus 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 { すべて | cpulist } | 自動オフライン・モードをオンにします。 プロセッサーごとのトレースをオフにする 引数はありません。 all を使用すると、 すべてのプロセッサーのトレースをオンにします。 cpulist は、トレース対象となるプロセッサー ID のコンマ区切りのリストです。 |
| -b | 基本データ・プロファイル作成をオンにします。 |
| -B | 命令アドレスのマップされた機能に関する情報で基本データ・プロファイル作成をオンにします。 |
| -c | cooked ファイルの生成をオンにします。 |
| -C all | cpulist | プロセッサーごとのプロファイル作成をオンにします。 all を指定すると、
すべてのプロセッサーについてプロファイル・レポートを生成します。 cpulist を指定する場合は、プロセッサー番号をコンマで区切ります (例えば、0,1,2)。 注: プロセッサーごとのプロファイル作成は、プロセッサーごとのトレースがオン (自動オフライン・モード) であるか、または使用された (手動オフライン・モード) 場合にのみ可能です。 オンライン・モードでは実行できません。 このオプションは、トレースされる CPU の数が 128 個より多い場合はサポートされません。
|
| -d | 据え置きトレース・モードをオンにします。 このモードでは、trcon が呼び出されるまで、データ収集が 据え置かれます。 |
| -D | 詳細プロファイル作成をオンにします。 サブルーチンごとに命令オフセット別にプロセッサー使用率を表示します。 |
| -e | カーネル・エクステンション・プロファイル作成をオンにします。 |
| -E [ モード ] | イベント・ベースのプロファイル作成を可能にします。 使用できるモードは以下のとおりです。
|
| -f frequency | サンプリング頻度を指定します。 サンプリング頻度は、プロセッサー・サイクルおよび EMULATION、ALIGNMENT、ISLBMISS、DSLBMISS イベントの場合は 1 から 500 ミリ秒に設定でき、その他のパフォーマンス・モニター・イベントの場合は、イベント発生回数で 10000 回から MAXINT 回までに設定できます。 -f フラグと -y フラグを同時に指定すると、その他のパフォーマンス・モニター・イベントに対するサンプリング頻度の値の範囲は 1 回から MAXINT 値の発生回数となり、デフォルト値は 10000 回のイベントとなります。 |
| -F | cooked ファイルが既に存在している場合は、このファイルを上書きし ます。 -x フラグを付けずに使用すると、 手動オフライン・モードを強制します。 |
| -g | シンボル名を人間が読める名前に変換しないでください。 |
| -G | トレース処理の開始日と終了日を設定します。 パラメーターは、以下のフォーマットで指定します。ここでmmddhhmmssyy月、日、時、分、秒、および年です。 このオプションには、以下の値を指定できます。
|
| -I | バイナリー命令収集をオンにします。 注: 自動オフライン・モードでシンボル・ファイルまたはクックド・シンボル・ファイルを生成すると、 -I フラグがアクティブになり、バイナリー命令が収集されます。 ただし、手動オフライン・モードでは、-I フラグはレポート・ファイルに影響しません。
|
| -j | Java クラスおよびメソッドのプロファイル作成をオンにします。 |
| -k | カーネル・プロファイル作成を使用可能にします。 |
| -l | ロング・ネームのレポートを使用可能にします。 デフォルトで は、サブルーチン名、プログラム名、およびソース・ファイル名がプロファイル・ レポートのスペースに入りきらない場合は、tprof がこれらを 切り捨てます。 このフラグは、切り捨てを使用不可にします。 |
| -L オブジェクト・リスト | コンマ区切りリスト objectlist によって指定されたオブジェクトのリスト注釈を使用可能にします。 実行可能プログラムと共有ライブラリーでは、それぞれのリスト・ファイルに注釈を付けることができます。 ライブラリーのアーカイブ名を指定してください。 注:
|
| -m objectslist | コンマ区切りリスト objectlist によって指定されたオブジェクトのマイクロプロファイル作成を使用可能にします。 実行可能プログラム、共有ライブラリー、
およびカーネル・エクステンションをマイクロプロファイル作成できます。 ライブラリーおよびカーネル・エクステンションのアーカイブ名を指定してください。 注:
|
| -M PathList | ソース・パス・リストを指定します。 PathList は、マイクロ・プロファイル作成およびリスト注釈に必要なソース・ファイルと .lst ファイルを検索する対象の、コロン区切りのパスのリストです。 デフォルトのソース・パス・リストは、オブジェクト検索パス・リストです。 |
| -n | ポストプロセッシングをオフにします。 -n フラグが指定されていると、-u、-s 、-k、-e、および -jフラグは無視されます。 データは収集され、.trc ファイルおよび gensyms ファイルは生成されますが、.prof ファイルは生成されません。 この結果、例えば、ベンチマークの間のシステムの過負荷を回避するのに役立ちます。 -n オプションが使用される場合は、-A フラグを使用する必要があります。 |
| -N | ソース行番号情報の収集をオンにします。 -N フラグはシンボル・ファイルを生成するとき、または自動オフライン・モードで加工済みシンボル・ファイルを生成するときに、ソース行情報の収集を活動化します。 ただし、手動オフライン・モードでは、-N フラグはレポート・ファイルに影響しません。 |
| -O | このオプションには、以下の値を指定できます。
|
| -p processlist | processlist に指定されたプロセス名について、プロセス・レベルのプロファイル作成を使用可能にします。 processlist は、コンマ区切りのプロセス名のリストです。 プロセス・レベルのプロファイル作成は、プロファイル作成モードの少なくとも 1 つ (-u、-s、-k、-e、または -j) がオンになっている場合にのみ使用可能になります。 |
| -P { すべて | PIDList } | all の場合は、実行したすべてのプロセス、
または PIDList が指定されたプロセスについて、
プロセス・レベルのプロファイル作成を使用可能にします。 PIDList は、プロセス ID コンマで区切ったリストです。 プロセス・レベルのプロファイル作成は、プロファイル作成モードの少なくとも 1 つ (-u、-s、-k、-e、または -j) がオンになっている場合にのみ使用可能になります。 |
| -r ルート・ストリング | 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ユーザーおよびTrustedAIXユーザーに注意:このコマンドは特権操作を実行できます。 特権命令を実行できるのは特権ユーザーのみです。 権限および特権について詳しくは、「セキュリティー」の『特権コマンド・データベース』を参照してください。 このコマンドに関連した特権および権限のリストについては、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.symstprof を実行して、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上でリアルタイム・モードで実行されているアプリケーションAIXの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.profjava.prof ファイルが生成されます。 これには、JIT ソース行情報と JIT 命令が含まれます。
- -O showaddrbytes=on フラグを使用してレポートにアドレス・バイト情報を表示するには、次のコマンドを入力します。
次の例のようなレポートが表示されます。$ tprof -O showaddrbytes=on -x sleep 5Subroutine % 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 - -G オプションを使用して、02/18/2016 02:30:30 から 02/18/2016
02:35:30 までのトレース・データの処理を表示するには、次のコマンドを入力します。
02/18/2016 02:30:30 から終了までのトレース・データを処理するには、次のコマンドを入力します。$tprof -G “start=021802303016,end=021802353016” -r sleep
開始から 02/18/2016 02:35:30 までのトレース・データを処理するには、次のコマンドを入力します。$tprof -G “start= 021802303016” -r sleep$tprof -G “end=021802303517” -r sleep - 以下の例で、関数名は次のとおりです。
-O wrapfname=on オプションを使用して長い関数名の行折り返しの方法を表示するには、次のコマンドを入力します。Test::abcdefghijklmnoprstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789$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_0abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890(int,int) 215 19.40 test. C
メッセージ
システムが以下のメッセージを表示したものと仮定します。
/dev/systrace: device busy or trcon: TRCON:no such deviceこれは、trace 機能を既に使用中であることを意味します。 プログラムを停止し、入力後に再試行してくださいtrcstopトレースを停止します。