ハードウェアカウンタデータの収集目的
ハードウェアカウンタデータからは、選択したプロセッサのイベントの頻度がわかります。 このデータは、データフローや命令遅延の問題の診断などに使用できます。
コレクタによるハードウェアカウンタデータの収集
ハードウェアカウンタは、各軽量プロセス (LWP: Lightweight Process) イベントの数を記録します。 ある LWP のカウンタがオーバーフローを起こすと、シグナルが送信されてカウンタはリセットされます。 その後、再びカウントを再開します。コレクタがこのシグナルを検出すると、その LWP の ID、スレッド ID、およびプロセッサ ID と共に、発信元のカウンタ ID、オーバーフロー値、時刻、および呼び出しスタックが記録されます。 この処理をハードウェアオーバーフロープロファイルといいます。 パフォーマンスアナライザは、そのオーバーフローの記録後、次に実行される命令をオーバーフローの原因として記録します。 したがって収集されたデータの性格は統計的なものとなります。
カウント対象となるハードウェアイベント
カウント対象となるイベントは特定の CPU プロセッサまたはオペレーティング環境によって異なります。 一般的なイベントの一覧を次に示します。
使用できるカウンタを表示するには、次の方法のいずれかを実行してください。
一覧の最初に表示されるカウンタのうち、一般に使用されるいくつかのカウンタには別名がついています。 一覧の表示形式についてはハードウェアカウンタ一覧を参照してください。 次の表に、別名を持つ UltraSPARC[tm] III ハードウェアカウンタとそのメトリック名、およびカウントの対象とするレジスタを示します。
カウンタ名 | 別名 | メトリック | レジスタ |
---|---|---|---|
Cycle_cnt | cycles | CPU サイクル | 0 または 1 |
Instr_cnt | insts | 命令の実行 | 0 または 1 |
IC_miss | icm | I$ 失敗 | 1 |
DC_rd_miss | dcrm | D$ 読み込み失敗 | 1 |
DC_wr_miss | dcwm | D$ 書き込み失敗 | 1 |
DC_rd | dcr | D$ 読み込み参照 | 0 |
DC_wr | dcw | D$ 書き込み参照 (Write Refs) | 0 |
EC_ref | ecref | E$ 参照 | 0 |
ITLB_miss | itlbm | ITLB 失敗 | 1 |
DTLB_miss | dtlbm | DTLB 失敗 | 1 |
EC_misses | ecm | E$ 失敗 | 1 |
EC_rd_miss | ecrm | E$ 読み込み失敗 | 0 |
EC_ic_miss | ecim | E$ Instr. Misses | 1 |
Dispatch0_IC_miss | icstall | I$ 引き延ばしサイクル | 0 |
Re_DC_miss | dcstall | D$ と E$ の引き延ばしサイクル | 1 |
Re_EC_miss | ecstall | E$ 引き延ばしサイクル | 1 |
Rstall_storeQ | sqstall | StoreQ 引き延ばしサイクル | 0 |
FA_pipe_completion | fpadd | FP Adds | 0 |
FM_pipe_completion | fpmul | FP Muls | 1 |
パフォーマンスアナライザに表示されるハードウェアカウンタのメトリック (計測データ)
ハードウェアカウンタのオーバーフロープロファイルデータは、オーバーフロー値を合計してカウントメトリックに変換されます。 周期的にカウントするカウンタでは、カウントメトリックがプログラムが実行されていたマシン上の CPU 全体の平均クロック周波数を使用した時間に変換されます。 メトリック名は cputrack(1) で使用されるカウンタ名です。 カウンタの別名は、メトリック名と対応しています。 UltraSPARC III ハードウェアのメトリック名は前述の表に記述されています。
ハードウェアカウンタのデータ収集に関する制限事項
詳細についてはマニュアル『プログラムのパフォーマンス解析』を参照してください。
関連項目 | |
---|---|
パフォーマンスデータの収集 動作中プロセスのパフォーマンスデータの収集 ハードウェアカウンタを使用するプログラム |