Oracle Solaris Studio 12.4 Man Pages

印刷ビューの終了

更新: January 2015
 
 

er_print(1)

名前

er_print - 1 つ以上のパフォーマンス実験からの ASCII レポートの出力

形式

er_print [ -script script | -command | -V ] experiment-list

説明

er_print は、パフォーマンスアナライザでサポートされるさまざまな表示のプレーンテキストバージョンを生成するユーティリティーです。その出力は、標準出力に表示されます。実験ファイルは、collect コマンドまたは dbx collector コマンドを使用して生成されます。experiment-list には、実験名または実験グループ名を含めることができます。実験グループは、そのグループ内の実験の名前を含むファイルによって定義されます。子孫プロセス上の実験を読み取るには、それらのプロセスを明示的に参照するか、または collect(1) のマニュアルページの説明に従って、それらのプロセスの実験グループを構築します。

収集されたデータに基づいて、関数、呼び出し元と呼び出し先、ソースファイル、および逆アセンブリリストに関するパフォーマンスのさまざまなメトリックを計算できます。収集されるデータと生成されるメトリックは、collect(1) のマニュアルページで説明されています。使用可能なグラフィカル表示は、パフォーマンスアナライザマニュアルで説明されています。

オプション

-script script

ファイル script から er_print コマンドを読み取ります。このファイルは、1 行に 1 つのコマンドが含まれています。

-command

指定されたコマンドを処理します。

-V

バージョン情報を表示して終了します。

これらのオプションは、指定されている順序で処理されます。オプションは繰り返すことができます。スクリプトと明示的なコマンドは任意の順序で組み合わせることができます。コマンドまたはスクリプトの引数が指定されていない場合、er_print は、入力端末からコマンドを読み取る対話型モードに入ります。入力端末からの入力は quit コマンドで終了します。

\ で終わる行はすべて、その \ 文字が削除され、次の行の内容が付加されてからその行の構文が解析されます。使用できる継続行の数に制限はありません (合計メモリーを除く)。空白を含む引数はすべて、コマンド行で指定されるか、またはスクリプトや .er.rc ファイルから読み取られるかにかかわらず、二重引用符 (") で囲む必要があります。

各コマンドが処理されたあと、その処理から発生したエラーまたは警告メッセージがあれば、すべて書き込まれます。処理に関するサマリー統計情報は、procstats コマンドで出力できます。

er_print は、複数の実験または実験グループで呼び出された場合、デフォルトではアグリゲーションモードで起動されます。詳細は、下記の「比較モード」を参照してください。

サブコマンド

er_print ユーティリティーによって受け入れられるコマンドを次に示します。そのコマンドが明確であるかぎり、すべてのコマンドを短い文字列に短縮できます。

関数リストを制御するコマンド

functions

関数リストを、現在の一連のメトリックととともに書き込みます。関数リストには、object_select コマンドで関数が非表示になっているすべてのロードオブジェクトが含まれています。

metrics metric_spec

関数リストメトリックを設定します (同じメトリックが、ソースと逆アセンブリおよび行と PC にも使用されます)。metric_spec は、コロンで区切られたメトリックキーワードのリストです。動的メトリック、つまり、測定されたデータに基づくメトリックの場合、各キーワードの形式は <flavor><visibility><metric-name> です。静的メトリック、つまり、実験内のロードオブジェクトの静的なプロパティー (名前、アドレス、およびサイズ) に基づくメトリックの場合、各キーワードの形式は [<visibility>]<metric-name> であり、<visibility> の設定はオプションです。

<flavor> には、包括的を示す「i」か、排他的を示す「e」のどちらかを指定できます。「ie」や「ei」の組み合わせは展開されます。たとえば、「ie<visibility><metric-name>」は「i<visibility><metric-name>:e<visibility><metric-name>」に展開されます。

<visibility> には、「.」(メトリックを時間として表示)、「%」(パーセンテージとして表示)、および「+」(カウントとして表示) の任意の組み合わせを指定できます。メトリックを時間またはカウントとしてしか表示できない場合、「.」と「+」は同じ意味を持ちます。ハードウェアカウンタプロファイリング実験や、サイクル数でカウントするカウンタの場合は通常、メトリックは時間 (「.」) として表示されますが、<visibility> フィールドに「+」を使用してカウントとして表示できます。時間、パーセント、およびカウントが現れる順序は固定されており、<visibility> 設定での文字の順序には影響されません。静的メトリックの場合、「+」、「.」、「%」はすべて同じ意味を持ちます。

「cycles」と「insts」の 2 つの特定のカウンタが収集される場合、「CPI」と「IPC」という 2 つのメトリックが使用可能になり、これらはそれぞれ「命令当たりのサイクル数」と「サイクル当たりの命令数」を意味します。「+」、「,」、「.」、「%」のどれで指定されていても、これらは時間、カウント、またはパーセンテージではなく常に比率として表示されます。CPI 値が高いか IPC 値が低ければ、マシン内でのコードの実行が非効率であることを示し、逆に CPI 値が低いか IPC 値が高ければ、パイプライン内で実行中のコードの効率がよいことを示します。

<visibility> は、メトリックを無効にすることを示す「!」としても指定できます。これは通常は使用されませんが、メトリックのタイプごとの組み込みの表示形式のデフォルト値をオーバーライドする、デフォルトのメトリックを設定するために使用される dmetrics コマンド (下記を参照) で使用されます。

metric_spec に同じメトリックを複数回指定することはできません。指定されている場合は、エラーとして報告されます。メトリックの「名前」がリストにない場合は、その名前がリストに付加されます。ロードされた実験に使用可能なすべての <metric-name> 値のリストは、metric_list コマンドで取得できます。メトリックの詳細は、collect(1) のマニュアルページを参照してください。

デフォルトでは、下記の「デフォルト設定のコマンド」で説明されている、.er.rc ファイルから処理された dmetrics コマンドに基づくメトリック設定を使用します。metrics コマンドが metric_spec を明示的に default に設定している場合は、記録されるデータに適したデフォルト設定を復元します。メトリックがリセットされると、新しいリスト内でデフォルトのソートメトリックが設定されます。metric_spec が省略されている場合は、現在のメトリック設定を出力します。

関数リストなどのメトリックの設定に加えて、メトリック設定に一致する呼び出し元-呼び出し先、データ派生出力、およびインデックスオブジェクトのメトリックを設定します。呼び出し元-呼び出し先メトリックは、関数リスト内のメトリックのうち、包括的または排他的メトリックが表示されているメトリックに対応する属性メトリック、および静的メトリックを表示します。

データ領域メトリックは、関数リスト内のメトリックのうち、包括的または排他的メトリックが表示されているメトリックに対応する、データが使用可能なデータ領域メトリック、および静的メトリックを表示します。

インデックスオブジェクトメトリックは、関数リスト内のメトリックのうち、包括的または排他的メトリックが表示されているメトリックに対応するインデックスオブジェクトメトリック、および静的メトリックを表示します。

metrics コマンドの内部にエラーがある場合や、指定の中に現在のデータに対応するメトリックがない場合は、警告を表示してコマンドを無視し、以前の設定を有効なままにします。

sort metric_spec

関数リストを指定されたメトリックでソートします。metric_spec は、metrics で説明されています。この前に、逆順ソートを指定する「-」記号を付けることができます。例:

sort i.user

包括的なユーザー時間でソートすることを示します。メトリック名の中の <visibility> は、ソート順序には影響を与えません。複数のメトリックが metric_spec の中で指定されている場合は、表示可能な最初のものが使用されます。指定されたメトリックに表示可能なものがない場合は、コマンドが無視されます。

デフォルトでは、下記の「デフォルト設定のコマンド」で説明されている、.er.rc ファイルから処理された dsort コマンドに基づくメトリックソート設定を使用します。sort コマンドが metric_spec を明示的に default に設定している場合は、デフォルト設定を使用します。

metric_spec が省略されている場合は、現在のソートメトリックを出力します。

fsummary

関数リスト内の各関数のサマリーパネルを、現在のソートメトリックで指定されている順序で書き込みます。object_select コマンドで関数が非表示になっている、関数リスト内のすべてのロードオブジェクトを含めます。

fsingle function_name [N | ADDR]

指定された関数のサマリーパネルを書き込みます。オプションパラメータは、関数名があいまいな場合に必要です。詳細は、下記の「source」コマンドを参照してください。

呼び出し元-呼び出し先リストを制御するコマンド

callers-callees

最後の metrics 指定に基づいて、各関数の呼び出し元-呼び出し先パネルを、関数ソートメトリック (sort) で指定されている順序で書き込みます。

csingle function_name [N | ADDR]

指定された関数の呼び出し元 - 呼び出し先パネルを出力します。オプションパラメータは、関数名があいまいな場合に必要です。詳細は、下記の「source」コマンドを参照してください。

呼び出し元-呼び出し先パネルはまた、呼び出しスタック断片用にも生成できます。断片内の初期フレームは、csingl コマンドで設定されます。フレームは、cprepend または cappend コマンドで追加できます。フレームは、crmfirst および crmlast コマンドで削除できます。各フレームが呼び出しスタック断片に追加または削除されたあと、現在の断片へのすべての呼び出し元と、その断片からのすべての呼び出し先を示すパネルが出力されます。

cprepend function_name [N | ADDR]

指定された関数を現在の呼び出しスタック断片の前に付加します。オプションパラメータは、関数名があいまいな場合に必要です。詳細は、下記の「source」コマンドを参照してください。

cappend function_name [N | ADDR]

指定された関数を現在の呼び出しスタック断片のあとに付加します。オプションパラメータは、関数名があいまいな場合に必要です。詳細は、下記の「source」コマンドを参照してください。

crmfirst

呼び出しスタックセグメントから先頭フレームを削除します。

crmlast

呼び出しスタックセグメントからいちばん下のフレームを削除します。

呼び出しツリーのリストを制御するコマンド

calltree

実験から各レベルでの階層メトリックを示す動的な呼び出しグラフを書き込みます。

トレースデータに共通のコマンド

datasize

トレースデータ内で参照されるデータのサイズの分布を対数スケールで書き込みます。ヒープトレースの場合、サイズは割り当てサイズまたはリークサイズです。I/O トレースの場合、サイズは転送済みのバイト数です。

duration

トレースデータ内でのイベントの経過時間の分布を対数スケールで書き込みます。同期トレースの場合、経過時間は同期遅延です。I/O トレースの場合、経過時間は I/O 操作に費やした時間です。

リークおよび割り当てのリストを制御するコマンド

leaks

サイズでソートされたリークのリストを、各リストの呼び出しスタックとともに書き込みます。リークのリスト内の各エントリを共通の呼び出しスタックで集約します。

allocs

サイズでソートされた割り当てのリストを、各リストの呼び出しスタックとともに書き込みます。割り当てのリスト内の各エントリを共通の呼び出しスタックで集約します。

heap

共通呼び出しスタックによって集計された割り当ておよびリークのリストを書き込みます。

heapstat

アプリケーションのピークメモリー使用量を含む、ヒープ使用量に関する全体的な統計を書き込みます。

I/O アクティビティーのレポートを制御するコマンド

ioactivity

ファイルでソートされた、すべての I/O アクティビティーのレポートを書き込みます。

iodetail

仮想ファイル記述子でソートされた、すべての I/O アクティビティーのレポートを書き込みます。ファイルを開いたときに同じファイル記述子が返された場合でも、ファイルを開くたびに異なる仮想ファイル記述子が生成されます。

iocallstack

呼び出しスタックでソートされ、同じ呼び出しスタックですべてのイベントにわたって集約された、すべての I/O アクティビティーのレポートを書き込みます。集約された呼び出しスタックごとに、呼び出しスタックトレースを含めます。

iostat

すべての I/O アクティビティーに関するサマリー統計情報を書き込みます。

ソースおよび逆アセンブリのリストを制御するコマンド

pcs

プログラムカウンタ (PC) とそのメトリックのリストを、現在のソートメトリックで指定されている順序で書き込みます。このリストには、object_select コマンドで関数が非表示になっているロードオブジェクトごとに集約されたメトリックを示す行を含めます。

psummary

PC リスト内の各 PC のサマリーメトリックパネルを現在のソートメトリックで指定された順序で出力します。

lines

ソース行とそのメトリックのリストを、現在のソートメトリックで指定されている順序で書き込みます。このリストには、行番号の情報がないか、またはソースファイルが不明である関数ごとに集約されたメトリックを示す行を含めます。また、object_select コマンドで関数が非表示になっているロードオブジェクトごとに集約されたメトリックを示す行も含めます。

lsummary

行リスト内の各行のサマリーメトリックパネルを現在のソートメトリックで指定された順序で出力します。

source { filename | function_name } [N | ADDR]

指定されたオブジェクトファイル、または指定された関数を含むオブジェクトファイルの注釈付きソースを書き込みます。関数の名前が C++ 関数または Java メソッドの名前である場合は、復号化された名前 (短い形式または長い形式) あるいは符号化された名前を使用できます。復号化された名前にスペースが含まれている場合は、その名前を二重引用符で囲む必要があります。オプションパラメータ N または ADDR は、ファイル名または関数名があいまいな場合に必要です。N 形式が使用されている場合は、N 番目の可能性のある選択肢を選択します (番号は 1 から始まります)。複数の可能性があるときに、指定された N が可能性のある範囲内にない場合は、エラーを報告します。可能性が 1 つしかない場合は、このようなエラーを無視します。

ADDR 形式が使用されている場合は、@segment-number:address として書き込まれます。segment-number:address の値は、関数のアドレスメトリックとして表示されるため、正確に指定するようにしてください。

あいまいな名前が指定子なしで指定された場合は、注釈付きソースの代わりに選択肢のリストを出力します。各リスト項目には、N に使用できる数値、関数またはファイルを参照するオブジェクトモジュールの名前、およびあいまいな関数の場合は関数名が含まれます。

関数のデフォルトソースコンテキストは、その関数の最初の命令が帰するソースファイルとして定義されます。これは通常、関数を含むオブジェクトモジュールを生成するためにコンパイルされたソースファイルです。最初の命令の直後に、その関数のインデックス行を追加します。インデックス行を、次に示す形式で山括弧内にテキストとして表示します。

<Function: f_name>

代替ソースコンテキストは、それに帰属する関数内の命令を含むほかのファイルで構成されます。このようなコンテキストには、インクルードファイルの命令と、指定の関数にインライン化された関数の命令が含まれます。代替ソースコンテキストが存在する場合は、その代替ソースコンテキストが配置されている場所を示すための拡張インデックス行のリストをデフォルトソースコンテキストの先頭に次の形式で含めます。

<Function: f, instructions from source file src.h>

関数名は、function`file` としても指定できます。ここで、file は、その関数の代替ソースコンテキストを指定するために使用されます。

注: コマンド行で er_print を起動するときに -source 引数を使用する場合は、file の引用符の前にバックスラッシュのエスケープ文字を付加する必要があります。つまり、関数名は function\`file\` として書き込まれます。er_print が対話型モードにあるときは、バックスラッシュは必要ないため、使用しないでください。

通常、デフォルトソースコンテキストが使用されている場合は、ソースファイルのすべての関数に関してメトリックが表示されます。ソースファイルが明示的に代替ソースコンテキストとして使用されている場合は、指定された関数に関してのみメトリックが表示されます。

コンパイラ解説が選択されている場合は、その解説をソースリスト内のソース行でインタリーブします。重要な行を見つけやすくするために、ファイル内でそのメトリックの最大値のしきい値のパーセンテージに等しいか、またはそれを超えるメトリックを含む行の前に文字列「##」を付加します。しきい値および表示する解説のクラスは、ソースのしきい値の設定 (sthresh) およびソースのコンパイラ解説の設定 (scc) を使用して管理します。

setpath または addpath、あるいはその両方のコマンドで指定された検索パスを使用してファイルを検索します。ファイルが見つからない場合は、実行可能ファイル内に記録されている絶対パス名で検索します。ソースを移動したか、または実験が別のファイルシステムで記録された場合は、注釈付きソースを表示するためにシンボリックリンクを現在のディレクトリから実際のソースの場所に配置するか、またはソースコードとロードオブジェクトをその実験にコピーします。

src { filename | function_name } [N | ADDR]

source と同じです。

disasm { filename | function_name } [N | ADDR]

指定されたオブジェクトファイル、または指定された関数を含むオブジェクトファイルの注釈付き逆アセンブリを書き込みます。あいまいさは、source コマンドの場合と同じ方法で解決されます。

ある行にあるメトリック値がそのメトリックの最大値のしきい値のパーセンテージに等しいか、またはそれを超える場合は、その行の前に「##」を付加します。これにより、重要な行を見つけやすくなります。しきい値は、dthresh コマンドを使用して設定されます。表示される解説のクラスは、dcc コマンドで設定されます。

source コマンドで説明されている指定された逆アセンブリに対応するソースファイルを検索し、その逆アセンブリをソース行とインデックス行でインタリーブします。関数に代替ソースコンテキストのコードが含まれている場合は、その代替コンテキストを参照するインデックス行と、それに続けてコンパイラ解説のない raw の逆アセンブリを挿入します。ソースファイルが見つからない場合は、ソースもコンパイラ解説もない逆アセンブリを表示します。

scc com_spec

注釈付きソースでコンパイラ解説のどのクラスを表示するかを指定します。com_spec は、コロンで区切られたクラスのリストです。各クラスは、特定のタイプのメッセージを参照します。許可されるクラスは次のとおりです。

b[asic]

すべてのクラスからの基本的なメッセージを表示します。

v[ersion]

バージョンメッセージを表示します。

w[arn]

警告メッセージを表示します。

pa[rallel]

並列化メッセージを表示します。

q[uery]

コンパイラからの質問を表示します。

l[oop]

ループ変換メッセージを表示します。

pi[pe]

パイプラインメッセージを表示します。

i[nline]

インライン化メッセージを表示します。

m[emops]

メモリー操作に関するメッセージを表示します。

f[e]

フロントエンドメッセージを表示します。

co[degen]

コードジェネレータのメッセージを表示します。

cf

ソースの下部にコンパイルのフラグを表示します。

all

すべてのメッセージを表示します。

none

メッセージを表示しません。

クラス「all」と「none」は、ほかのクラスとともには使用できません。

互換性のために、重要な行にフラグを付けるためのしきい値は、「all」や「none」を含む任意のクラスとともにリストに含めることができます。

t[hreshold]=nn

ある行に、ファイル内のいずれかの行にあるそのメトリックの最大値の nn パーセントを超えるメトリック値が含まれている場合は、その行に重要というフラグを付けます。nn のデフォルト値は 75 です。

例:

scc l:pi:t=50

は、ループ変換メッセージとパイプラインメッセージを表示し、しきい値を 50 パーセントに設定することを示します。

scc コマンドが指定されていない場合は、デフォルト設定を使用します。

scc all

com_spec が指定されていない場合は、コンパイラ解説を無効にします。scc コマンドは通常、.er.rc ファイルでのみ使用されます。

sthresh value

ソース内の重要な行にフラグを付けるためのしきい値を設定します。ある行に、ファイル内のいずれかの行にあるそのメトリックの最大値の value パーセントを超えるメトリック値が含まれている場合は、その行に重要というフラグを付けます。value のデフォルト値は 75 です。

dcc com_spec

注釈付き逆アセンブリでコンパイラ解説のどのクラスを表示するかを指定します。このコマンドに対する com_spec の指定には、任意の scc クラスと、次の追加の指定を含めることができます。

h[ex]

各命令の 16 進表現を表示します。

noh[ex]

各命令の 16 進表現を表示しません。

s[rc]

逆アセンブリ内のソースをインターリーブします (デフォルト)。

as[rc]

逆アセンブリ内で、注釈付きソースをソース行メトリック付きでインターリーブします。

nos[rc]

逆アセンブリ内のソースをインターリーブしません。

dcc コマンドが指定されていない場合は、デフォルト設定を使用します。

dcc all:src

このコマンドは通常、.er.rc ファイルでのみ使用されます。

cc com_spec

ソースと逆アセンブリの両方のコンパイラ解説を指定します。

dthresh value

逆アセンブリ内の重要な行にフラグを付けるためのしきい値を設定します。ある行に、ファイル内のいずれかの行にあるそのメトリックの最大値の value パーセントを超えるメトリック値が含まれている場合は、その行に重要というフラグを付けます。value のデフォルト値は 75 です。

ファイルの検索を管理するコマンド

ロードオブジェクトファイルは、最初に実験のarchivesディレクトリで検索されます。そこに見つからない場合は、後述のとおり、ソースファイルおよびオブジェクトファイルと同じアルゴリズムを使用して検索されます。

ほとんどの実験で、ソースファイルとオブジェクトファイルはフルパス形式で記録されます。さらに、Java ソースファイルには、ファイルへのディレクトリ構造を示すパッケージ名もあります。実験が別のマシン上で表示された場合は、それらのフルパスにアクセスできないことがあります。

ソースファイルとオブジェクトファイルを見つけるために、パスマッピングと検索パスという 2 つの補完的な方法を使用できます。(archives サブディレクトリ内に見つからないロードオブジェクトファイルに対しても同じ方法が使用されます)。

最初にパスマッピングが適用され、それにより、いずれかのファイルのフルパスにある先頭のコンポーネントを別のパスに置き換える方法が指定されます。たとえば、ファイルが次のように指定されている場合は、

/a/b/c/d/e/sourcefile

pathmap 指令によって、/a/ から /x/y へのマッピングを指定したり、/a/b/c/d//x へのマッピングを指定したりできます。

パスマッピングでファイルが見つからなかった場合は、検索パスが使用されます。検索パスによって、指定されたベース名 (上記の例では sourcefile) を持つファイルを検索するディレクトリのリストが提供されます。検索パスは、setpath コマンドで設定したり、addpath コマンドで追加したりできます。Java ファイルの場合は、パッケージ名とベース名の両方がその順序で試行されます。

検索パス内の各ディレクトリを使用して、試行するフルパスが構築されます。(Java ソースファイルの場合は、2 つのフルパス)。これらの各フルパスにパスマッピングが適用され、マップされたどのパスもそのファイルを指していない場合は、次の検索パスディレクトリが試行されます。

最後に、これらのどちらのメカニズムでもファイルが見つからず、どのパスマッピング接頭辞も元のフルパスと一致していなかった場合は、その元のフルパスが試行されます。いずれかのパスマッピング接頭辞が元のフルパスと一致していたが、ファイルが見つからなかった場合、元のフルパスは試行されません。

デフォルトの検索パスには現在のディレクトリ (.) と実験ディレクトリが含まれているため、ソースファイルにアクセスできるようにする 1 つの方法として、そのソースファイルをこれらのいずれかの場所にコピーするか、またはそのファイルの現在の場所を指すシンボリックリンクをこれらの場所に配置する方法があります。

pathmap old_prefix new_prefix

addpath または setpath で設定された path_list を使用してファイルが見つからない場合は、1 つ以上のパスの再マッピングを指定できます。old_prefix で始まるソースファイル、オブジェクトファイル、または共有オブジェクトのパス名はすべて、その接頭辞が new_prefix に置き換えられ、結果として得られるパスがファイルの検索に使用されます。複数の pathmap コマンドを指定することができ、ファイルが見つかるまで各コマンドが試行されます。引数のない pathmap 指令は、現在のパスマッピングリストを出力します。

setpath path_list

ソース、オブジェクト、etc. ファイルを検索するために使用される検索パスを設定します。path_list は、コロンで区切られたディレクトリ、jar ファイル、または zip ファイルのリストです。いずれかのディレクトリにコロン文字が含まれている場合は、それをバックスラッシュでエスケープするようにしてください。特殊なディレクトリ名 $expts は、現在の一連の実験をそれらがロードされた順序で示します。これは、$ の 1 文字に短縮できます。$expts を検索したときに表示されるのは、初期の実験だけです。派生実験は検査されません。

デフォルトの検索パスは "$expts:." です。現在のパスの検索でファイルが見つからない場合は、コンパイルで入力されたフルパス名を使用します。

引数のない setpath は、現在のパスを出力します。

setpath コマンドを、.er.rc ファイルに含めることはできません。

addpath path_list

現在の setpath の設定に path_list を付加します。

addpath コマンドは、.er.rc ファイル内で指定することができ、連結されます。

データ領域のリストを制御するコマンド

データ領域のコマンドは、Solaris X86 または SPARC システム上で正確なカウンタに対してデフォルトで、または明示的にメモリー領域およびデータ領域データが記録されたハードウェアカウンタ実験にのみ適用できます。詳細は、 collect (1) のマニュアルページを参照してください。

データ領域データは、-xhwcprof フラグでコンパイルされた関数内で発生したプロファイルヒットでのみ使用できます。-xhwcprof フラグは、C、C++、および Fortran コンパイラでのコンパイルに適用でき、SPARC [R] プラットフォームでのみ意味があります。その他のプラットフォームでは無視されます。詳細は、コンパイラのマニュアルを参照してください。

data_objects

データオブジェクトのリストを、そのメトリックとともに書き込みます。

data_single

name [N] は、指定されたデータオブジェクトのサマリーメトリックパネルを書き込みます。オプションパラメータ N は、オブジェクト名があいまいな場合に必要です。

data_layout

データ派生メトリックデータを持つすべてのプログラミングデータオブジェクトについて、注釈付きのデータオブジェクトレイアウトを書き込みます。データは、各構造をひとまとめにして、現在のデータソートメトリック値によってソートされます。各集約データオブジェクトをそれに帰属する合計メトリックとともに表示したあと、そのすべての要素をオフセット順に表示します。各要素にはそれぞれのメトリックと、32 バイトブロックを基準にしたサイズと場所を示すインジケータが含まれます。ここでは:

<

要素は、ブロック全体に一致します。

/

要素は、ブロックを開始します。

|

要素は、ブロックの内部にあります。

\

要素は、ブロックを完了します。

#

要素サイズには、複数のブロックが必要です。

X

要素は複数のブロックにわたっていますが、1 つのブロック内に適合することがあります。

?

未定義。

メモリーオブジェクトのリストを制御するコマンド

メモリーオブジェクトのコマンドは、X86 上で正確なカウンタに対してデフォルトでメモリー領域およびデータ領域データが記録されたか、または SPARC Solaris システム上でのみ、正確でないカウンタに対してバックトラックが指定されたハードウェアカウンタ実験にのみ適用できます。詳細は、 collect (1) のマニュアルページを参照してください。

メモリーオブジェクトは、キャッシュライン、ページ、メモリーバンクなどの、メモリーサブシステム内のコンポーネントです。このオブジェクトは、記録されている仮想または物理アドレスから計算されたインデックスから決定されます。仮想および物理ページに対して、8K バイト、64K バイト、512K バイト、および 4M バイトのサイズのメモリーオブジェクトが事前に定義されています。その他のオブジェクトは、memobj_define コマンドで定義できます。

次のコマンドは、メモリーオブジェクトのリストを制御します。

memobj mobj_type

所定のタイプのメモリーオブジェクトと現在のメトリックのリストを出力します。使用されるメトリックとソートは、データ領域のリストの場合と同じです。また、名前 mobj_type をコマンドとして直接使用することもできます。

memobj_list | mobj_list

memobj コマンド内で mobj_type に使用する、既知のタイプのメモリーオブジェクトのリストを出力します。

memobj_define | mobj_define mobj_typeindex_exp

新しいタイプのメモリーオブジェクトを、index_exp で指定されたオブジェクトへの VA/PA のマッピングを使用して定義します。この式の構文は、下記の「式の文法」で説明されています。mobj_type がすでに定義されてはいけません。また、どの既存のコマンド、どのインデックスオブジェクトタイプ (下記を参照) にも一致していてはいけません。その名前は大文字と小文字が区別されません。また、すべてが英数字または「_」文字で構成され、かつ英字で始まっている必要があります。index_exp は、構文的に正しくなければいけません。そうでない場合は、エラーが返され、定義は無視されます。index_exp に空白文字が含まれる場合は、二重引用符 (") で囲む必要があります。<Unknown> メモリーオブジェクトのインデックスは -1 です。また、新しいメモリーオブジェクトを定義するために使用される式では、<Unknown> の認識がサポートされているべきです。たとえば、VADDR ベースのオブジェクトの場合、その式は次のような形式であるべきです。

VADDR>255?<expression>:-1

また、PADDR ベースのオブジェクトの場合、その式は次のような形式であるべきです。

PADDR>0?<expression>:-1
memobj_drop mobj_type

指定されたタイプのメモリーオブジェクトを削除します。

machinemodel model_name

指定されたマシンモデルで定義されているメモリーオブジェクトを作成します。model_name は、ユーザーの現在のディレクトリまたはユーザーのホームディレクトリ内のファイル名か、あるいはこのリリースで定義されているマシンモデルの名前です。マシンモデルのファイルは、.ermm の接尾辞で格納されています。machinemodel コマンドにある model_name がその接尾辞で終わらない場合は、.ermm が付加された model_name が使用されます。model_name/ で始まる場合、それは絶対パスであると見なされ、そのパスのみが (必要に応じて、.ermm を付加して) 試行されます。model_name/ が含まれている場合は、現在のディレクトリまたはユーザーのホームディレクトリを基準にしたそのパス名のみが試行されます。

マシンモデルのファイルには、コメントと mobj_define コマンドを含めることができます。その他のコマンドはすべて無視されます。machinemodel コマンドは、.er.rc ファイル内に指定できます。マシンモデルが (コマンドによって、またはマシンモデルが中に記録されている実験を読み取ることによって) ロードされた場合、以降の machinemodel コマンドは以前のマシンモデルからの定義をすべて削除します。

model_name がない場合は、すべての既知のマシンモデルのリストを出力します。model_name が長さ 0 の文字列である場合は、ロードされたマシンモデルをすべてアンロードします。

インデックスオブジェクトのリストを制御するコマンド

インデックスオブジェクトのコマンドは、すべての実験に適用できます。インデックスオブジェクトは、パケットのヘッダーから計算される式でインデックスを作成できるオブジェクトのクラスです。特に、スレッド、CPU、標本、および秒のインデックスオブジェクトが事前に定義されています。indxobj_list コマンドで完全なリストを取得できます。その他のオブジェクトは、indxobj_define コマンドで定義できます。

次のコマンドは、インデックスオブジェクトのリストを制御します。

indxobj indxobj_type

指定されたタイプのインデックスオブジェクトのリストを、現在のインデックスオブジェクトのメトリックとともに書き込みます。使用されるメトリックとソートは関数リストの場合と同じですが、排他的メトリックだけが含まれます。名前 indxobj_type を直接、コマンドとして使用することもできます。

indxobj_list

indxobj コマンド内で indxobj_type に使用する、既知のタイプのインデックスオブジェクトのリストを書き込みます。

indxobj_define indxobj_type index_exp

新しいタイプのインデックスオブジェクトを、index_exp で指定されたオブジェクトへのパケットのマッピングを使用して定義します。この式の構文は、下記の「式の文法」で説明されています。indxobj_type がすでに定義されてはいけません。また、どの既存のコマンド、どのメモリーオブジェクトタイプ (上記を参照) にも一致していてはいけません。その名前は大文字と小文字が区別されません。また、すべてが英数字または「_」文字で構成され、かつ英字で始まっている必要があります。index_exp は、構文的に正しくなければいけません。そうでない場合は、エラーが返され、定義は無視されます。index_exp に空白文字が含まれる場合は、二重引用符 (") で囲む必要があります。

OpenMP インデックスオブジェクトのコマンド

OMP_preg

実験で実行された OpenMP 並列領域のリストを、そのメトリックとともに出力します。このコマンドは、OpenMP 3.0 または 3.1 のパフォーマンスデータを使用した実験でのみ使用できます。

OMP_task

実験で実行された OpenMP タスクのリストを、そのメトリックとともに出力します。このコマンドは、OpenMP 3.0 または 3.1 のパフォーマンスデータを使用した実験でのみ使用できます。

スレッドアナライザのレポートを制御するコマンド

races

実験で検出されたデータ競合のグループに関するレポートを書き込みます。データ競合レポートは、データ競合検出データを使用した実験でのみ利用できます。

rdetail [ race_id ]

指定されたデータ競合に関する詳細情報を書き込みます。race_idall として指定されている場合は、すべてのデータ競合に関する詳細情報を書き込みます。データ競合レポートは、データ競合検出データを使用した実験でのみ利用できます。

rsummary [ race_id ]

rdetail と同じです。

deadlocks

実験で検出されたデッドロックに関するレポートを書き込みます。デッドロックレポートは、デッドロック検出データを使用した実験でのみ利用できます。

ddetail [ deadlock_id ]

指定されたデッドロックに関する詳細情報を書き込みます。deadlock_idall として指定されている場合は、すべてのデータ競合に関する詳細情報を書き込みます。デッドロックレポートは、デッドロック検出データを使用した実験でのみ利用できます。

dsummary [ deadlock_id ]

ddetail と同じです。

実験、標本、スレッド、LWP をリスト表示するコマンド

experiment_list

ロードされている実験のリストを表示します。各実験は、標本、スレッド、または LWP を選択する際に使用されるインデックス、および拡張フィルタリングに使用できる PID とともに一覧表示されます。

sample_list

実験中に処理された標本のリストを表示します。

lwp_list

実験中に処理された LWP のリストを表示します。

thread_list

実験中に処理されたスレッドのリストを表示します。

cpu_list

実験中に使用された CPU のリストを表示します。

実験データのフィルタリングを制御するコマンド

実験データのフィルタリングを指定する方法には、次の 2 つがあります。つまり、各データレコードを含めるかどうかを判定するためにそのレコードに関して評価されるフィルタ式を指定するか、またはフィルタリング用の実験、標本、スレッド、CPU、および LWP を選択するための古いコマンドを使用します。

式によるフィルタリングは、次のコマンドによって制御されます。

filters filter_exp

filter_exp は、含めるデータレコードについては true として評価し、含めないレコードについては false として評価する式です。

filters コマンド内の式の文法は、下記の「式の文法」で説明されています。この式に空白が含まれている場合は、それを二重引用符 (") で囲む必要があります。

describe

フィルタ式を構築するために使用できるトークンのリストを出力します。

次の古いスタイルのコマンドは、フィルタリングのためのデータが表示される実験、標本、スレッド、CPU、および LWP を選択します。

sample_select sample_spec

sample_spec は標本リストです (下記を参照)。

lwp_select lwp_spec

lwp_spec は LWP リストです (下記を参照)。

thread_select thread_spec

thread_spec はスレッドリストです (下記を参照)。

cpu_select cpu_spec

cpu_spec は CPU リストです (下記を参照)。

上記の各リストには、1 つの数値、数値の範囲 (n-m)、数値と範囲のコンマ区切りリスト、または明示的な文字列「all」を指定できます。各リストの前には、オプションで、コロン (:) によってこのリストから分離された、同様の形式を持つ実験リストを指定できます。複数のリストをプラス記号で区切って連結できます。リストにスペースが含まれていてはいけません。実験リストが含まれていない場合、このリストはすべての実験に適用されます。

いずれかの選択コマンドの実験の選択を、4 つの選択のターゲット (スレッド、LWP、CPU、および標本) のすべてに適用します。スレッド、LWP、CPU、または標本の選択が存在する場合は、実験リスト内の各実験を保持します。ユーザーによって実験が指定されていない場合は、すべての実験を選択します。実験リストに含まれていない実験の選択を無効にします。

例:

thread_select 1

すべての実験のスレッド 1 を選択します。

thread_select all:1

すべての実験のスレッド 1 を選択します。

thread_select all:1,3,5

すべての実験のスレッド 1、3、および 5 を選択します。

thread_select 1,2:all

exp_list で示されているように、実験 1 と 2 のすべてのスレッドを選択します。

thread_select 1:1+2:2

実験 1 のスレッド 1 および実験 2 のスレッド 2 を選択します。

ロードオブジェクト関数の展開/縮小を制御するコマンド

object_show object1,object2,...

すべての名前付きロードオブジェクトを、それらのすべての関数が表示されるように設定します。オブジェクトの名前は、フルパス名またはベース名のどちらでもかまいません。名前にコンマ文字が含まれている場合は、その名前を二重引用符で囲む必要があります。文字列 all を使用してロードオブジェクトを指定した場合は、すべてのロードオブジェクトの関数が表示されます。

object_hide object1,object2,...

すべての名前付きロードオブジェクトを、それらのすべての関数が表示されないように設定します。オブジェクトの名前は、フルパス名またはベース名のどちらでもかまいません。名前にコンマ文字が含まれている場合は、その名前を二重引用符で囲む必要があります。文字列 all を使用してロードオブジェクトを指定した場合は、すべてのロードオブジェクトの関数が表示されます。

object_api object1,object2,...

すべての名前付きロードオブジェクトを、ライブラリへのエントリポイントを表す関数のみがすべて表示されるように設定します。オブジェクトの名前は、フルパス名またはベース名のどちらでもかまいません。名前にコンマ文字が含まれている場合は、その名前を二重引用符で囲む必要があります。文字列 all を使用してロードオブジェクトを指定した場合は、すべてのロードオブジェクトのエントリポイント関数のみが表示されます。

objects_default

すべてのロードオブジェクトを .er.rc ファイルの処理からの初期デフォルト値に従って設定します。

object_list

すべてのロードオブジェクトのステータスと名前を示す 2 列のリストを表示します。最初の列に表示/非表示/API のステータスを、2 番目の列に名前を表示します。ロードオブジェクトの関数が関数リスト内に表示されている (展開されている) 場合は show、ロードオブジェクトへのエントリポイントを表す関数のみが表示されている場合は API-only、ロードオブジェクトの関数が関数リスト内に表示されていない (縮小されている) 場合は hide のステータスを表示します。縮小されているロードオブジェクトのすべての関数がロードオブジェクト全体を表す関数リスト内の 1 つのエントリにマップされるか、またはロードオブジェクトへのエントリポイントを表す関数のみが表示されている場合は API-only にマップされます。

object_showobject_hideobject_api の各コマンドは検出された順序で処理され、以降のすべてのコマンドは、そのロードオブジェクト (またはすべてのロードオブジェクト) の以前のすべてのコマンドをオーバーライドします。

object_select object1,object2,...

アクティブなロードオブジェクトのリストを設定します。指定されたすべてのロードオブジェクトの関数が表示されます。ほかのすべてのロードオブジェクトの関数は非表示になります。オブジェクトの名前は、フルパス名またはベース名のどちらでもかまいません。名前にコンマ文字が含まれている場合は、その名前を二重引用符で囲む必要があります。

ロードオブジェクトの関数が表示される場合、ゼロではないメトリックを保持するすべての関数が関数リストに表示されます。ロードオブジェクトの関数が非表示になっている場合、その関数は縮小され、個々の関数の代わりにロードオブジェクト全体のメトリックを含む 1 行のみが表示されます。

デフォルトでは、<Unknown> オブジェクトを除く、すべてのロードオブジェクトの関数を表示します。

メトリックを一覧するコマンド

metric_list

現在選択されている関数リストメトリック、およびそれらのメトリックを sort などのほかのコマンドで参照するために使用できるメトリックとキーワード名のリストを表示します。メトリックキーワードの形式は、metrics で説明されています。使用可能なメトリックは、収集されるデータによって異なります。 collect (1) のマニュアルページを参照してください。

cmetric_list

現在選択されている呼び出し元-呼び出し先メトリック、および呼び出し元-呼び出し先レポートのメトリックとキーワード名のリストを表示します。metric_list の出力と同じ方法でリストを表示しますが、さらに属性メトリックも含めます。

data_metric_list

現在選択されているデータ派生メトリック、およびすべてのデータ派生レポートのメトリックとキーワード名のリストを表示します。metric_list の出力と同じ方法でリストを表示しますが、データ派生フレーバーを持つメトリックと静的メトリックだけを含めます。

indx_metric_list

現在選択されているインデックスオブジェクトメトリック、およびすべてのインデックスオブジェクトレポートのメトリックとキーワード名のリストを表示します。metric_list の出力と同じ方法でリストを表示しますが、排他的フレーバーを持つメトリックと静的メトリックだけを含めます。

出力を制御するコマンド

outfile filename

開いている出力ファイルをすべて閉じ、以降の出力のために filename を開きます。filename を開くときに、既存のコンテンツをクリアします。filename がマイナス記号 (-) である場合は、出力を stdout に書き込みます。filename がマイナス記号のペア (--) である場合は、出力を stderr に書き込みます。

appendfile filename

開いている出力ファイルを閉じ、filename を開きます。その際、既存のコンテンツがあれば残し、後続の出力がファイルの末尾に付加されるようにします。filename が存在しない場合、appendfile の機能は outfile の場合と同じです。

limit n

すべての出力をレポートの最初の n 個のエントリに制限します。n は符号なしの整数です。n がゼロの場合、すべての制限を削除します。n が省略されている場合は、現在の制限を出力します。

name { long | short | mangled } [:{soname | nosoname }]

C++ 関数名の long または short 形式を使用します。soname が指定されている場合は、関数名のあとに共有オブジェクト名を付加します。

viewmode { user | expert | machine }

表示モードを userexpert、または machine に設定します。

Java 実験の場合は、ユーザーモードでは Java スレッドの Java 呼び出しスタックが表示され、ハウスキーピングスレッドは表示されません。関数リストには、Java 以外のスレッドから集約された時間を表す関数 <JVM-System> が含まれています。JVM ソフトウェアによって Java 呼び出しスタックが報告されない場合、時間は関数 <Java 呼び出しスタックが記録されていません> に対して報告されます。上級モードでは、Java コードが実行されている場合は Java スレッドの Java 呼び出しスタックが、また JVM コードが実行されている場合や、JVM ソフトウェアによって Java 呼び出しスタックが報告されない場合はマシン呼び出しスタックが表示されます。非ユーザー Java (ハウスキーピング) スレッドのマシン呼び出しスタックが表示されます。マシンモードでは、すべてのスレッドのマシン呼び出しスタックが表示されます。

OpenMP 実験の場合は、ユーザーモードでは、プログラムが OpenMP を使用せずにコンパイルされたときに取得されるのと同様の、再構築された呼び出しスタックが表示されます。

上級モードでは、ユーザーモードでユーザー関数を使用して集約される並列化されたループやタスクなどを表す、コンパイラによって生成された関数が公開されます。どちらのモードでも、OpenMP ランタイムが特定の操作を実行しているときは、<OMP-*> という形式の名前を持つ特殊関数が表示されます。OpenMP 実行時コード (libmtsk.so) の関数は抑制されます。

マシンモードでは、取得された実際のネイティブスタックが表示されます。

それ以外のすべての実験では、3 つのモードのすべてで同じデータが表示されます。

compare [on|off|delta|ratio]

比較モードを、オフ (compare off、デフォルト)、オン (compare on)、デルタ (compare delta)、または比率 (compare ratio) に設定します。比較モードがオフである場合は、複数の実験が読み取られると、それらのデータは集約されます。比較が有効になっている場合は、複数の実験がロードされたときに、各実験のデータに関するメトリックの個別の列が表示されます。比較モードがデルタである場合、ベース実験には絶対メトリックが表示されますが、比較実験にはベースとの間の差分が表示されます。比較モードが比率である場合、比較実験にはベースとの間の比率が表示されます。

比較モードでは、それぞれの実験または実験グループを別の比較グループとして扱います。最初の実験または実験グループ引数が、ベースグループです。複数の実験を比較グループに含める場合は、実験グループファイルを作成して、er_print への単一の引数として使用する必要があります。

printmode string

string から出力モードを設定します。stringtext である場合、出力は以前のバージョン (表形式) と同様に実行されます。string が 1 文字である場合、出力は、その 1 文字を区切り文字として区切られたリストとして実行されます。stringhtml である場合、出力は HTML 表の形式になります。その他の string はすべて無効であり、そのコマンドは無視されます。

printmode 設定は、表を生成するコマンド (functionsmemobjindxobjetc.) でのみ使用されます。その他の出力コマンドでは、この設定は無視されます。

その他の情報を出力するコマンド

header [ exp_id ]

指定された実験に関する説明情報を書き込みます。exp_id は、experiment_list コマンドで指定されている実験の数値識別子です。exp_idall であるか、または省略されている場合は、すべての実験のヘッダーを書き込みます。各ヘッダーのあとに、エラーまたは警告があれば出力します。各実験のヘッダーをダッシュの行で区切ります。

実験ディレクトリに notes という名前のファイルがある場合は、このファイルの内容がヘッダー情報の先頭に付加されます。

objects

パフォーマンス解析の目的でロードオブジェクトを使用した結果として生じるエラーメッセージや警告メッセージのないロードオブジェクトを一覧表示します。

overview

すべての実験にわたって集計されたすべてのデータの概要を書き込みます。ホットメトリックに値を強調表示するアスタリスクが付いている間は、関数リストメトリックに [X] が付いて示されます。

sample_detail [ exp_id ]

指定された実験に関する詳細な標本情報を書き込みます。exp_id は、experiment_list コマンドで指定されている実験の数値識別子です。exp_id が省略されているか、または all である場合は、すべての実験内のすべての標本の合計と統計情報を書き込みます。

sample_detail によって生成されるようになったレポートは以前、overview コマンドで出力されていました。

statistics [ exp_id ]

現在の標本セット全体にわたってデータを集約した、指定された実験に関する実行統計データを書き込みます。exp_id は、experiment_list コマンドで指定されている実験の数値識別子です。exp_id が省略されている場合は、その標本で選択されているすべての実験にわたる合計を書き込みます。exp_idall である場合は、各実験内の選択された標本の合計と統計情報を書き込みます。

ifreq

命令実行のサマリーを書き込みます。命令頻度のレポートは、カウントデータを使用した実験からのみ取得できます。

実験のためのコマンド

これらのコマンドは、スクリプトと対話型モードでのみ使用されます。コマンド行では許可されていません。

add_exp exp_name

指定された実験または実験グループを現在のセッションに追加します。

drop_exp exp_name

現在のセッションから指定された実験を削除します。

open_exp exp_name

ロードされているすべての実験をセッションから削除したあと、指定された実験または実験グループをロードします。

デフォルト設定のコマンド

er_print ユーティリティーと er_src ユーティリティーでの多くのレポートのデフォルト値やアナライザでの表示は、.er.rc という名前のリソースファイルで設定できます。er_print ユーティリティーとパフォーマンスアナライザはどちらも、最初にシステム全体の .er.rc ファイルを処理し、次にユーザーのホームディレクトリ内の .er.rc ファイル (存在する場合)、次に現在のディレクトリ内の .er.rc ファイル (存在する場合) を処理します。各ファイルから読み取られた指令が、以前に読み取られた指令より優先されます。

注: アナライザ、er_print ユーティリティー、および er_src ユーティリティーのデフォルト値はすべて、共通の .er.rc ファイルによって設定されるため、er_print ユーティリティーの出力は、アナライザの「データ表示方法を設定」ダイアログボックスで変更を保存するか、またはいずれかのエディタを使用して .er.rc ファイルを変更することによって影響を受けます。

アナライザは、処理したユーザー .er.rc ファイルを指定するメッセージをそのエラー/警告ログ領域に書き込みます。er_print ユーティリティーと er_src ユーティリティーは、これらのファイルを指定するメッセージを stderr に出力します。

前述のように、これらのファイルには、sccsthreshdccdthreshaddpathpathmapnamemobj_defineindxobj_defineobject_showobject_hideobject_apicompareprintmodemachinemodel、および viewmode コマンドを含めることができます。また、コマンド行やスクリプトでは使用できない、次のコマンドも含めることができます。

dmetrics metric_spec

メトリックのデフォルトの順序と表示形式を指定します。どの er.rc ファイルでも dmetrics コマンドを複数指定することができ、それらのコマンドは連結されます。さまざまなファイルの dmetrics 設定は、現在のディレクトリ、ユーザーのホームディレクトリ、システムの順序で連結されます。

metric_spec は、上記の metrics コマンドで説明されていますが、次の追加点があります。

<visibility> には、メトリックのどのバージョンも表示されないことを示す「!」を指定できます。これにより、デフォルトではメトリックを表示せずに、メトリックの順序を指定できます。

2 つの汎用のメトリック名を指定できます。つまり、「hwc」はすべてのハードウェアカウンタメトリックを示し、「any」はまったく任意のメトリックを示します。

ロードされている実験から計算されたすべてのメトリックについて、すべての dmetrics の連結されたリストをスキャンして一致が調べられます。最初に一致したエントリによって、関数リストと呼び出し元-呼び出し先リスト内のメトリックの表示形式と順序の両方が決定されます。

dsort metric_spec

関数リストのソートのためにデフォルトで使用されるメトリックを指定します。dsort の指定にあるメトリックのうち、実験内のいずれかのメトリックに一致する最初のメトリックは、次の条件に従って、ソートメトリックを決定するために使用されます。dsort metric_spec 内のエントリに「!」の <visibility> が含まれている場合は、表示されているかどうかにかかわらず、名前が一致する最初のメトリックが使用されます。<visibility> のその他のいずれかの設定が使用されている場合は、名前が一致する最初に表示されたメトリックが使用されます。dmetrics と同様に、さまざまな .er.rc ファイルの dsort 指定は、現在のディレクトリ、ユーザーのホームディレクトリ、システムの順序で連結されます。

en_desc option

option に従って、派生実験を読み取るためのモードを設定します。option に使用できる値は次のとおりです。

on

子孫プロセス上のすべての実験を表示します (デフォルト)。

off

子孫プロセス上のどの実験も表示しません。

=<regex>

子孫プロセス上の実験のうち、系統または実行可能ファイル名が正規表現に一致する実験を表示します。

ロードされるいずれかの実験に、en_desc 設定の結果としてロードされない子孫が含まれている場合は、er_print からメッセージが出力され、パフォーマンスアナライザからポップアップが送信されます。

その他のコマンド

procstats

処理データから蓄積された統計を出力します。

script script

指定されたスクリプトからコマンドを処理します。

version

er_print の現在のリリースバージョンを出力します。

quit

対話型モードを終了します。スクリプトで使用された場合、そのスクリプトのコマンドはもう処理されません。

exit

quit の別名。

help

ヘルプ情報を出力します。

# ...

コメント行。スクリプトまたは .er.rc ファイルで使用されます。

式の文法

式の文法

フィルタを定義する式と、メモリーオブジェクトインデックスを計算するために使用される式には、共通の文法が使用されます。

この文法では、式を演算子とオペランドの組み合わせとして指定します。フィルタの場合は、式が真と評価されるとパケットが包含され、式が偽と評価されるとパケットが除外されます。メモリーオブジェクトの場合、式は、パケット内で参照される特定のメモリーオブジェクトを定義するインデックスに評価されます。

式のオペランドは定数か、または describe コマンドで一覧表示されるデータレコード内のフィールドのどちらかです。オペランドには、THRID、LWPID、CPUID、USTACK、XSTACK、MSTACK、LEAF、VIRTPC、PHYSPC、VADDR、PADDR、DOBJ、TSTAMP、SAMPLE、EXPID、PID、またはメモリーオブジェクトの名前が含まれます。オペランドの名前は大文字と小文字が区別されません。

USTACK、XSTACK、MSTACK は、それぞれユーザー表示、上級表示、マシン表示内の関数呼び出しスタックを表します。

VIRTPC、PHYSPC、VADDR、および PADDR が 0 以外になるのは、ハードウェアカウンタプロファイリングまたはクロックプロファイリングのために「+」が指定されている場合だけです。さらに、VADDRは、実際の仮想アドレスが決定できなかった場合、256 未満になります。VADDRを決定できなかった場合、または、仮想アドレスを物理アドレスにマップできなかった場合、PADDRはゼロになります。同様に、バックトラッキングが失敗した場合、または要求されなかった場合、VIRTPCはゼロになり、VIRTPCがゼロか、VIRTPCが物理アドレスにマップできなかった場合、PHYSPCはゼロになります。

演算子には、C の優先順位規則に従った C の表記法での通常の論理演算子および算術 (シフトを含む) 演算子と、要素が集合に含まれるかどうか (IN)、あるいは要素の集合の一部またはすべてが集合に含まれるかどうか (それぞれ、SOME IN または IN) を判定するための演算子が含まれます。追加の演算子ORDERED INは、左側のオペランドの全要素が、右側のオペランドに同じ順序で現れているかどうかを判断するためのものです。IN 演算子では、左側のオペランドのすべての要素を右側のオペランドに指定する必要がありますが、順序は強制されないことに注意してください。If-then-else 構造は、C のように?演算子と:演算子で指定されます。すべての式が正しく構文解析されるように、括弧を使用するようにしてください。er_print コマンド行では、複数の行にまたがって式を分割することはできません。スクリプトまたはコマンド行で、式に空白が含まれている場合は、その式を二重引用符で囲む必要があります。

フィルタ式は、そのパケットを含める場合はブール値 true に、含めない場合は false に評価します。スレッド、TWP、CPU、実験 ID、プロセス PID、および標本のフィルタリングは、適切なキーワードと整数の間の関係式、または IN 演算子と整数のコンマ区切りリストを使用した関係式に基づいています。

時間フィルタリングを使用するには、TSTAMPと時間を結び付ける 1 つ以上の関係式を指定し、時間は、現在パケットが処理されている実験の開始以降のナノ秒数 (整数) で指定します。標本の時間は、sample_detail コマンドから取得できます。sample_detail コマンドでの時間は秒単位で指定されるため、時間フィルタリングのためにナノ秒に変換する必要があります。時間はまた、アナライザの「タイムライン」表示から取得することもできます。

関数フィルタリングは、リーフ関数に基づいて行うか、スタック内の任意の関数に基づいて行うことができます。リーフ関数によるフィルタリングは、LEAF キーワードと整数の関数 ID の間の関係式、または IN 演算子と構造 FNAME("<regex>") を使用した関係式で指定されます。ここで、<regex> は regex(5) のマニュアルページで指定されている正規表現です。name の現在の設定で指定されている関数の名前全体が一致する必要があります。

呼び出しスタック内のいずれかの関数に基づいたフィルタリングは、構造 FNAME("<regex>") 内のいずれかの関数が、キーワード USTACK によって表される関数の配列内に存在するかどうかを判定することによって指定されます。

(FNAME("myfunc") SOME IN USTACK)

データオブジェクトのフィルタリングは、スタック関数のフィルタリングと同様に、括弧で囲まれた DOBJ キーワードと構造 DNAME("<regex>") を使用します。

メモリーオブジェクトのフィルタリングは、メモリーオブジェクトの名前 (mobj_list コマンドで示されています) と、オブジェクトの整数インデックスまたは一連のオブジェクトのインデックスを使用することによって指定されます。(<Unknown> メモリーオブジェクトのインデックスは -1 です)。

データオブジェクトのフィルタリングとメモリーオブジェクトのフィルタリングは、メモリー領域およびデータ領域データを含むハードウェアカウンタパケットでのみ意味があります。このようなフィルタリングでは、その他のパケットはすべて除外されます。

仮想アドレスまたは物理アドレスの直接フィルタリングは、VADDR または PADDR とアドレスの間の関係式で指定されます。

メモリーオブジェクトの定義 (mobj_define コマンド) では、VADDR キーワードまたは PADDR キーワードのどちらかを使用して整数インデックスに評価する式を使用します。これらの定義は、メモリーカウンタとメモリー領域およびデータ領域データに関するハードウェアカウンタパケットにのみ適用できます。この式は整数か、または <Unknown> メモリーオブジェクトの場合は -1 を返すべきです。

フィルタ式の例

CPU 2 上でのみ実行したスレッド 1 からのイベントを表示するには、次のようにします。

THRID == 1 && CPUID == 2

インデックスオブジェクト THRCPU が「CPUID<<16|THRID」として定義されている場合、次のフィルタは上記のフィルタと同等です。

THRCPU == 0x10002

5 秒と 9 秒の間に発生した実験 2 のイベントをフィルタリングするには、次のようにします。

EXPID==2 && TSTAMP >= 5000000000 && TSTAMP < 9000000000

スタック内の特定の Java クラスのメソッドを持つイベントをフィルタリングするには、次のようにします。(ユーザー表示モードの場合)

FNAME("myClass.*") SOME IN USTACK

関数 ID が既知である場合 (アナライザ GUI などの場合)、マシン呼び出しスタック内に特定の呼び出しシーケンスを含むイベントをフィルタリングするには、次のように指定します。

(314,272) ORDERED IN MSTACK

describe コマンドにより、クロックプロファイリング実験の次のプロパティーが一覧表示された場合は、

MSTATE    UINT32  Thread state
NTICK     UINT32  Duration

イベントを特定の状態に保持するためのフィルタを指定できます。

MSTATE == 1

イベントを期間でフィルタリングする場合は、次のように指定します。

MSTATE == 1 && NTICK > 1

比較モード

比較モード

er_print は、複数の実験または実験グループで呼び出された場合はデータを集約します。compare コマンドを使用して比較を有効にした場合は、データを比較できるように、関数リストには実験またはグループごとにメトリックの個別の列が表示されます。

互換性

互換性

er_print は、現在のバージョンのツールで記録された実験でのみ機能します。その他のバージョンで記録された実験の場合は、エラーが報告されます。その実験が記録されたリリースの er_print のバージョンを使用するようにしてください。

関連項目

analyzer (1) , collect (1) , collector (1) , dbx (1) , er_archive (1) , er_cp (1) , er_export (1) , er_mv (1) , er_rm (1) , er_src (1) , tha (1) , libcollector (3) , regex (5)

パフォーマンスアナライザマニュアル