プログラムのパフォーマンス解析 ホーム目次前ページへ次ページへ索引


第 5 章

er_print リファレンス

この章では、er_print ユーティリティの使い方について、以下の項目を説明します。

er_print は、標本アナライザのサポートするさまざまな表示をテキスト形式で出力する Sun WorkShop のユーティリティです。情報は、ファイルまたはプリンタに出力先を変更しない限り、標準出力に出力されます。er_print の引数として、標本コレクタが生成した実験レコードファイルの名前を指定する必要があります。標本コレクタが実験レコードファイルにデータを保存していれば、呼び出し元と呼び出し先の関数のパフォーマンス測定結果 (メトリック)、ソースコードと逆アセンブリのリスト、サンプリング情報、アドレス空間データ、実行統計情報を表示することができます。

er_print は、Sun WorkShop の C、C++、Fortran 77、Fortran 95 用コンパイラおよびアセンブラで使用することができます。

er_print の構文

er_print のコマンド行構文を以下に示します。

er_print [-script script | -command | -] exper_1 exper_2...exper_n 

オプション

er_print では、以下のオプションを指定することができます。

- 端末で入力した er_print コマンドを読み込みます。
-script script script で指定したファイルからコマンドを読み込みます。このファイルでは、1 行に 1 つずつ er_print コマンドを記述します (「er_print コマンド」を参照)。-script オプションが指定されていない場合は、er_print はコマンドを端末またはコマンド行から読み込みます。
-command 指定したコマンドを処理します。

er_print のコマンド行では、複数のオプションを指定することができます。オプションは、指定した順に処理されます。スクリプト、"-" 引数、コマンド名は、任意の順序で組み合わせて指定することができます。コマンドやスクリプトの引数を指定しない場合は、er_print は "-" 引数を指定した場合と同様に対話型モードで処理され、キーボードで入力したコマンドが読み込まれます。

er_print コマンド

er_print で指定可能なコマンドを以下に示します。コマンド名は、他のコマンドと区別できる程度に省略することができます。

関数リストコマンド

以下のコマンドは、関数の情報の表示を設定します。

functions

選択している測定結果 (メトリック) と関数を出力します。
デフォルトでは、排他的および包含的ユーザー CPU 時間、秒数およびプログラム全体に占める割合が出力されます。metrics コマンドを使って、表示する内容を変更することができます。

fsummary

関数ごとに、測定結果の要約を出力します。
関数の測定結果の要約については、「関数またはロードオブジェクトの測定結果の要約表示」を参照してください。

metrics metric_spec

関数リストの測定結果を新しく指定します。
metric_spec には、以下のように測定結果のキーワードのリストをコロンで区切って指定します。

metrics i.user:i%user:e.user:e%user 

このコマンドは、er_print で以下を表示するように指定します。
metrics コマンドの実行が終了すると、新しく選択された測定結果を示す以下のようなメッセージが表示されます。

現在: i.user:i%user:e.user:e%user:names

選択している測定結果のリストを表示するには、functions コマンドを使います。


注 - 使用可能な er_print の測定結果のキーワードのリストは、表 5-1 を参照してください。実験で使用可能なキーワードのリストを生成するには、metric_list または cmetric_list コマンドを使います。

objects

選択している測定結果のリストを使って、ロードオブジェクトを出力します。
デフォルトでは、排他的および包含的ユーザー CPU 時間が、秒数およびプログラム全体の測定結果に占める割合が出力されます。metrics コマンドを使って、表示する測定結果を変更することができます。

osummary

ロードオブジェクトリストのロードオブジェクトごとに、測定結果の要約を出力します。
ロードオブジェクトの測定結果の要約については、「関数またはロードオブジェクトの測定結果の要約表示」を参照してください。

sort metric_keyword

指定した測定結果で関数リストをソートします。metric_keyword には、表 5-1に示す測定結果のいずれかを以下のように指定します。

sort i.user 

このコマンドは、包含的ユーザー CPU 時間で関数リストをソートします。

呼び出し元と呼び出し先の表示コマンド

以下のコマンドは、呼び出し側と呼び出し先の情報の表示を設定します。

callers-callees

関数ごとの「呼び出し元-呼び出し先」に、ソートして出力します。対象とされる (中央の) 関数は、以下のようにアスタリスクで示されます。

Excl. User  Incl. User  Attr. User   Name  
CPU sec.    CPU sec.    CPU sec.      
0.          0.010       0.010       _doprnt 
0.          0.          0.          _xflsbuf 
0.          0.010       0.         *_realbufend 
0.          0.620       0.          _rw_rdlock 
0.          0.010       0.010       rw_unlock 

この例では、_realbufend が対象の関数です。この関数は、_doprnt および _xflsbuf によって呼び出され、_rw_rdlock および _rw_unlock を呼び出します。

cmetrics metric_spec

呼び出し元と呼び出し先の測定結果を新しく指定します。
metric_spec には、以下のように測定結果のキーワードのリストをコロンで区切って指定します。

cmetrics i.user:i%user:a.user:a%user 

このコマンドは、er_print で以下を表示するように指定します。
選択している測定結果のリストを表示するには、「callers-callees」コマンドを使います。


注 - 使用可能な er_print の測定結果のキーワードのリストは、表 5-1を参照してください。実験で使用可能なキーワードのリストを生成するには、metric_list または cmetric_list コマンドを使います。

csort metric_keyword

指定した測定結果で呼び出し元と呼び出し先のリストをソートします。metric_keyword には、表 5-1 に示す測定結果のから以下のように指定します。

csort a.user 

このコマンドは、属性ユーザー CPU 時間で呼び出し元と呼び出し先のリストをソートします。

ソースおよび逆アセンブリのリストコマンド

以下のコマンドは、注釈付きソースおよび逆アセンブリコードの表示を設定します。

disasm { file | function } [N]

指定したファイルまたは指定した関数を含むファイルの注釈付き逆アセンブリコードを出力します。いずれの場合も、指定したパスのディレクトリにファイルが存在する必要があります。
省略可能なパラメータ N (1 以上の整数) は、ファイルまたは関数名があいまいな場合にだけ指定します。あいまいな場合は、N 番目に該当するファイルまたは関数が使われます。N を指定しないであいまいな名前を指定すると、er_print はオブジェクトファイル名の候補を表示します。指定した名前が関数の場合は、関数名がオブジェクトファイル名に付けられ、N の値が示すそのオブジェクトファイルの 番号も出力されます。

source | src { file | function } [N]

指定したファイルまたは指定した関数を含むファイルの注釈付きソースコードを出力します。いずれの場合も、指定したパスのディレクトリにファイルが存在する必要があります。
省略可能なパラメータ N (1 以上の整数) は、ファイルまたは関数名があいまいな場合にだけ指定します。あいまいな場合は、N 番目に該当するファイルまたは関数が使われます。N を指定しないであいまいな名前を指定すると、er_print はオブジェクトファイル名の候補を表示します。指定した名前が関数の場合は、関数名がオブジェクトファイル名に付けられ、N の値が示すそのオブジェクトファイルの 番号も出力されます。

標本、スレッド、LWP、ロードオブジェクトの選択コマンド

以下のコマンドは、表示する標本、スレッド、LWP を選択します。

lwp_list

解析対象として選択している LWP のリストを表示します。以下に例を示します。

lwp_list 
現在: 1,3-9,17,20-38,40, 全体: 1-42

lwp_select lwp_spec

情報を表示する LWP を選択します。lwp_spec には、all (すべての LWP を選択します)、LWP の ID 番号のリスト、ID 番号の範囲 (n-m) を組み合わせて、コンマで区切って指定します (空白文字は指定できません)。以下に例を示します。

lwp_select 2,4,9-11,23-32,38,40 

object_list

解析対象として選択しているロードオブジェクトのリストを表示します。以下に例を示します。

object_list 
+ /home/user/a.out
+ /usr/lib/libthread.so.1
+ /usr/lib/libc.so.1
+ /usr/lib/libdl.so.1

object_select object_spec

情報を表示するロードオブジェクトを選択します。object_spec には、ロードオブジェクトのリストをコンマで区切って指定します (空白文字は指定できません)。オブジェクト名そのものにコンマが含まれている場合は、コンマを二重引用符で囲む必要があります。
オブジェクト名には、完全パス名またはベース名を指定します。

sample_list

解析対象として選択している標本のリストを表示します。以下に例を示します。

sample_list 
現在: 1,3-5,10,20-78, 全体: 1-78

sample_select sample_spec

情報を表示するサンプルを選択します。sample_spec には、all (すべてのサンプルを選択します)、サンプルの ID 番号のリスト、ID 番号の範囲 (n-m) を組み合わせて、コンマで区切って指定します (空白文字は指定できません)。以下に例を示します。

sample_select 1,3-5,10,20-78 

thread_list

解析対象として選択しているスレッドのリストを表示します。以下に例を示します。

thread_list 
現在: 1-41, 全体: 1-41

thread_select thread_spec

情報を表示するスレッドを選択します。thread_spec には、all (すべてのスレッドを選択します)、スレッドの ID 番号のリスト、ID 番号の範囲 (n-m) を組み合わせて、コンマで区切って指定します (空白文字は指定できません)。以下に例を示します。

thread_select all 

測定結果のコマンド

以下のコマンドは、測定結果 (メトリック) の仕様キーワードのリストを表示します。

metric_list

測定結果のキーワードのリストを表示します。これらのキーワードは、他のコマンド (metricssort など) で指定して、関数リストのさまざまな種類の測定結果を参照することができます。
sizeaddressname 以外のキーワードは、e (排他的)、i (包含的)、a (属性付き) のいずれかの文字と、絶対値を示すピリオド (.) またはプログラムの測定結果全体での割合を示すパーセント記号 (%) のいずれかと、測定結果を説明する文字列で構成されます。
属性付き (寄与) 測定結果は、cmetrics コマンドのみで指定でき、metrics コマンドでは指定できません。また、callers-callees コマンドのみで表示でき、functions コマンドでは表示できません。

表 5-1 に、使用可能な er_print の測定結果のキーワードを示します。

表 5-1   測定結果の仕様キーワード 
絶対値 割合 説明
e.user e%user 排他的ユーザー CPU 時間
i.user i%user 包含的ユーザー CPU 時間
a.user a%user 属性ユーザー CPU 時間
e.wall e%wall 排他的待ち時間
i.wall i%wall 包含的待ち時間
a.wall a%wall 属性付待ち時間
e.total e%total 排他的合計 LWP 時間
i.total i%total 包含的合計 LWP時間
a.total a%total 属性合計 LWP 時間
e.system e%system 排他的システム CPU 時間
i.system i%system 包含的システム CPU 時間
a.system a%system 属性システム CPU 時間
e.wait e%wait 排他的システム待ち時間
i.wait i%wait 包含的システム待ち時間
a.wait a%wait 属性システム待ち時間
e.text e%text 排他的テキストページフォルト時間
i.text i%text 包含的テキストページフォルト時間
a.text a%text 属性テキストページフォルト時間
e.data e%data 排他的データページフォルト時間
i.data i%data 包含的データページフォルト時間
a.data a%data 属性データページフォルト時間
e.sync e%sync 排他的スレッド同期待ち時間
i.sync i%sync 包含的スレッド同期待ち時間
a.sync a%sync 属性スレッド同期待ち時間
e.syncn e%syncn 排他的スレッド同期待ち回数
i.syncn i%syncn 包含的スレッド同期待ち回数
a.syncn a%syncn 属性スレッド同期待ち回数
size 関数のサイズ (バイト単位)
address メモリー上の関数のアドレス
name 関数名


cmetric_list

測定結果のキーワードのリストを表示します。これらのキーワードは、他のコマンド (metricssort など) で指定して、呼び出し元と呼び出し先のリストのさまざまな種類の測定結果を参照することができます。
sizeaddressname 以外のキーワードは、e (排他的)、i (包含的)、a (属性付き) のいずれかの文字と、絶対値を示すピリオド (.) またはプログラム全体に占める割合を示すパーセント記号 (%) のいずれかと、測定結果を説明する文字列で構成されます。


注 - 属性付き測定結果は、cmetrics コマンドのみで指定でき、metrics コマンドでは指定できません。また、callers-callees コマンドのみで表示でき、functions コマンドでは表示できません。

表 5-1 に、使用可能な er_print の測定結果のキーワードを示します。

出力コマンド

以下のコマンドは、er_print の出力を設定します。

limit n

レポートの最初の n 個のエントリだけに出力するように指定します。n には、1 以上の符号無し整数を指定します。

name { long | short }

短い関数名と長い関数名のどちらを使うかを指定します (C++ だけで指定できます)。

outfile { filename | - }

開いている出力ファイルを閉じて、それ以降の出力先として filename で指定したファイルを開きます。
ファイル名の代わりにダッシュ (-) を指定した場合は、出力先は標準出力になります。

その他のコマンド

address_space

現在の実験のアドレス空間データを出力します。

header

現在の実験に関する詳細な情報を出力します。

help

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

mapfile load-object { mapfilename | - }

指定したロードオブジェクトのマップファイルを mapfilename で指定したファイルに出力します。ファイル名の代わりにダッシュ (-) を指定した場合は、出力先は標準出力になります。

overview

選択している各標本の概要データを出力します。

quit

er_print を終了します。

script script

script で指定したスクリプトのコマンドを実行します。

statistics

現在の標本セットで収集した実行統計情報を出力します。
{ Version | version }
er_print のリリース番号を出力します。


サン・マイクロシステムズ株式会社
Copyright information. All rights reserved.
ホーム   |   目次   |   前ページへ   |   次ページへ   |   索引