PROF(1) — NEWS-OS Programmer’s Manual
名称
prof − プロファイルデータを分析する
形式
prof [ options ] [ prog_name [ pcsampling_data_file ... ] ]
prof −note comment_string −pixie [ options ] [ prog_name [ bbaddrs_file [ bbcounts_file ... ] ] ]
解説
prof は、RISC NEWS コンパイラの実行−プロファイリングシステムによって 生成された 1 つ以上のファイルを分析し、リストを生成します。 prof はまた、それらのデータファイルを結合したり、オプティマイザがその後の コンパイル中のプログラムのランタイム動作を考慮に入れるようにするフィード バックファイルを生成することもできます。 プロファイリングは 3 段階のプロセスです。 すなわち、まずプログラムをコンパイルし、次にそれを実行し、最後に prof を実行してデータを分析します。
コンパイラシステムは下記の 2 種類のプロファイリングを提供します。
1. pc-sampling はプログラムを定期的に中断し、プログラムカウンタの値を記録します。
2. basic-block counting は、プログラムをラベル、ジャンプ命令、および分岐命令によって範囲を 定められたブロックに分けます。 basic-block counting は各ブロックが実行される回数をカウントします。 これによって pc-sampling より詳しい(行ごとの)情報が提供されます。
pc-sampling の使用
pc-sampling を使用するには、プログラムをオプション −p でコンパイルします(厳密に言えば、プログラムをリンクするときだけこの オプションを使用すれば十分です)。 次にこのプログラムを実行します。 このプログラムは、プロファイルデータを保存するための余分のメモリを 割り当て、(正常に終了するか、あるいは exit(2) のコールによって終了した場合は)実行終了時にデータをファイルに記録します。
環境変数 PROFDIR は、pc-sampling データファイルの名前を決定し、 pc-sampling が実行されるか否かを決定します。 環境変数 PROFDIR が設定されていない場合は、pc-sampling データファイルは mon.out と命名されます。 環境変数 PROFDIR が空の文字列に設定されている場合は、プロファイリングは行なわれません。 空でない文字列に設定されている場合は、pc-sampling データファイルは string/pid.progname, と命名されます。 ここで、 pid は実行プログラムのプロセス id であり、 progname は argv[0] に現れるプログラムの名前です。 サブディレクトリ string がすでに存在していなければなりません。
プログラムを実行した後で、 prof を使用して pc-sampling データファイルを分析してください。
例:
cc −c myprog.c
cc −p −o myprog myprog.o
myprog(mon.out を生成します)
prof myprog mon.out
pc-sampling のために prof を使用した場合は、プログラム名のデフォルトは a.out、 pc-sampling データファイル名のデフォルトは mon.out です。 複数の pc-sampling データファイルを指定した場合は、 prof はデータの合計を報告します。
basic-block counting の使用
basic-block counting を使用する場合は、オプション −p なしでプログラムをコンパイルしてください。 pixie(1) を使用してプログラムをプロファイリングバージョンに変換し、名前が .Addrs で終わる、ブロックアドレスを含むファイルを生成してください。 次に、プロファイリングバージョンを実行します。 これによって、(正常に終了するか、あるいは exit(2) のコールによって終了した場合は)名前が .Counts で終わる、ブロックカウントを含むファイルが生成されます。 次に、 −pixie オプションとともに prof を実行し、 bbaddrs_file および bbcounts_file を分析してください。 prof には、プロファイリングバージョンの名前ではなく、 元のプログラムの名前を指定しなければならないことに注意してください。
例:
cc −c myprog.c
cc −o myprog myprog.o
pixie −o myprog.pixie myprog (myprog.Addrs を生成します)
myprog.pixie(myprog.Counts を生成します)
prof −pixie myprog myprog.Addrs myprog.Counts
−pixie オプションとともに prof を実行した場合は、プログラム名のデフォルトは、 a.out、 bbaddrs_file のデフォルトは program_name.Addrs、 bbcounts _file のデフォルトは program_name.Counts になります。複数の bbcounts_file を指定した場合は(複数の bbaddrs_file を指定してはいけません)、 prof はデータの合計を通知します。
prof のオプション
各 prof オプションについて、他のオプションと区別するのに十分なだけの名前を入力 する必要があります(通常は、最初の文字で十分です)。 他に特に注意がない限り、リストの各部分は、 −exclude および −only オプションの組合わせから生じるプロシージャのセットにだけ有効です。
指定されたオプションがリストの作成もファイルの生成も行わない場合、 prof はデフォルトによって −procedures および −heavy を使用します。
−note comment_string
このオプションを使用した場合、 comment_string がリストの先頭近くにコメントとして表示されます。
−pixie
pc-sampling モードに対立するものとして、pixie モードを選択します。
−procedures
プロシージャごとに費やした時間を通知します(pc-sampling または basic-block counting から得たデータ使用で、リストによってどちらかを使用 するかが指定されます)。 basic-block counting の場合、このオプションはプロシージャごとの呼び出し 回数も通知します。
−heavy
最も頻繁に使用される行を、使用頻度の高い順に通知します(basic-block counting が必要です)。
−lines
−heavy と同じですが、行を発生順に通知します。
−invocations
各プロシージャについて、考えられる呼び出し側のそれぞれからその プロシージャが呼び出された回数を通知します(basic-block counting が必要です)。 このリストの場合、 −exclude および −only オプションが呼ばれる側に適用されますが、呼び出し側には適用されません。
−zero
一度も呼び出されなかったプロシージャのリストを表示します (basic-block counting が必要です)。
−testcoverage
一度も実行されなかった行をすべて通知します(basic-block counting が必要です)。
−feedback filename
大域的最適化から最も恩恵を受けるのはプログラムのどの部分か、 およびインラインプロシージャ置換から最も恩恵を受けるのは どの部分かを決定するためにコンパイラシステムが使用することのできる 情報をもつファイルを生成します(basic-block counting が必要です)。 umerge(1) および uopt(1) を参照してください。
−merge filename
pc-sampling データファイル (pixie モードの場合は bbcounts_file) を合計し、指定された名前の新しいファイルにその結果を書き込みます。 −only および −exclude オプションは、マージされたデータには影響を与えません。
−only procedure_name
1 つ以上の −only オプションを使用した場合、プロファイルリストには、 プログラム全体ではなく指定されたプロシージャだけが含まれます。 大文字の O を使用する Only オプションがある場合、 prof は、パーセンテージを計算するベースとして、 プログラム全体ではなく指定されたプロシージャだけを使用します。
−exclude procedure_name
1 つ以上の −exclude オプションを使用した場合、プロファイラは指定されたプロシージャとその子孫 をリストから削除します。 大文字の E を使用する Exclude オプションがある場合、 prof は、パーセンテージを計算するベースからそのプロシージャも削除します。
−clock megahertz
CPU のクロック速度を反映して、リストの適切な部分を変更します。 megahertz を指定しない場合、デフォルトの 8.0 がとられます。
−quit n
−procedures および −heavy のリストの切り捨てを行います。 切り捨ては、 n 行の後、 (n が整数の場合)全体の n パーセントより小さい最初のエントリの後 (n のすぐ後に % がある場合)、あるいは、全体の n パーセントを占めるまで表示されたエントリの後 のすぐ後に cum% がある場合)に行うことができます。たとえば、 −quit 15 はテキストの 15 行の後のリストの各部分を切り捨て、 −quit 15% は全体の 15 パーセントより小さい最初の行の各部分を切り捨て、 −quit 15cum% は 15 パーセントより大きい累積パーセンテージを もたらした行の後の各部分を切り捨てます。
−gprof
gprof に類似した表示を生成する。呼び出されたルーチンの結果は各呼び出し 側のプロファイルに取り入れられます。
ファイル
crt0.o通常の起動コード
mcrt0.opc-sampling 用の起動コード
libprof1.apc-sampling 用のライブラリ
mon.outデフォルトの pc-sampling データファイル
関連事項
monitor(3), profil(2), pixie(2), cc(1), pc(1), f77(1), as(1), RISC NEWS Compiler Languages Programmer’s Guide.
特徴
−pixie を使用しない場合、 prof は、時代遅れとなった −p2 または −p3 オプションを使用する古いバージョンのコンパイラシステムによって 生成された mon.out ファイルを処理します。
バグ
prof は、浮動小数点命令間の相互作用をまだ考慮に入れていません。
NEWS-OSRelease 4.2.1R