Oracle® Solaris Studio 12.4: パフォーマンスアナライザ

印刷ビューの終了

更新: 2015 年 1 月
 
 

カーネルのハードウェアカウンタオーバーフローのプロファイリング

er_kernel ユーティリティーは、DTrace の cpc プロバイダを使ってカーネルのハードウェアカウンタオーバーフロープロファイルを収集できますが、このプロバイダは、Oracle Solaris 11 を実行しているシステム上でのみ使用できます。

カーネルのハードウェアカウンタオーバーフロープロファイリングを実行するには、collect コマンドの場合と同様に、–h オプションを er_kernel コマンドで使用します。

collect コマンドと同様に、明示的な -p off 引数が指定されていない場合は、クロックベースのプロファイリングがデフォルトで有効になります。そのチップについてのデフォルトカウンタセットを高頻度または低頻度で要求する -h high または -h low が指定された場合、デフォルトのクロックプロファイリングも high または low に設定され、明示的な -p 引数が推奨されます。

er_kernel -h コマンドは、DTrace cpc プロバイダを使用して、ハードウェアカウンタオーバーフロープロファイルを収集します。ハードウェアカウンタプロファイリングは、Oracle Solaris 11 より前のシステム上では使用できません。チップ上のオーバーフローのメカニズムにより、どのカウンタがオーバーフローしたかをカーネルが認識できる場合は、チップによって提供される数のカウンタを使用できます。それ以外の場合、指定できるカウンタは 1 つだけです。

データ領域プロファイリングは、DTrace バージョン 1.8 以降を実行している SPARC システム上で、精密カウンタについてのみサポートされます。サポートされていないシステム上でリクエストされた場合は、データ領域のフラグが無視されますが、実験は引き続き実行されます。

システムのハードウェアカウンタメカニズムは、ユーザープロファイリングのために複数のプロセスで使用できますが、いずれかのユーザープロセス、cputrack、または別の er_kernel がこのメカニズムを使用している場合、カーネルプロファイリングには使用できません。その場合、er_kernel は「HW カウンタは一時的に使用できません。システムプロファイリングに使用されている可能性があります。」と報告します。

ハードウェアカウンタオーバーフローのプロファイリングをサポートするプロセッサを備えたマシンでハードウェアカウンタを表示するには、er_kernel —h コマンドをほかの引数なしで実行します。

チップ上のオーバーフローのメカニズムにより、どのカウンタがオーバーフローしたかをカーネルが知ることができる場合には、チップが提供するすべてのカウンタのプロファイリングを行えますが、それ以外の場合、指定できるカウンタは 1 つだけです。er_kernel -h の出力には、複数のカウンタを使用できるかどうかを示すために、「最大 4 つの HW カウンタを使用する HW カウンタプロファイリングを指定できます」といったメッセージが表示されます。

ハードウェアカウンタプロファイリングの詳細は、ハードウェアカウンタプロファイリングデータおよびcollect -h を使用したハードウェアカウンタプロファイリングを参照してください。

ハードウェアカウンタオーバーフローのプロファイリングの詳細については、er_print のマニュアルページも参照してください。