このマニュアルでは、コレクタとパフォーマンスアナライザについて説明します。これらは、アプリケーションのパフォーマンスデータを収集および解析するために使用する 1 組のツールです。また、このマニュアルでは、収集したパフォーマンスデータをテキスト形式で表示し解析するためのコマンド行ツールである er_print ユーティリティーについても説明します。パフォーマンスアナライザと er_print ユーティリティーは、ほぼ同じデータを表示しますが、ユーザーインタフェースが異なります。
コレクタとパフォーマンスアナライザは、パフォーマンスチューニングが主な担当ではない開発者も含めて、すべてのソフトウェア開発者を対象として設計されています。これらのツールは、一般的に使用されているプロファイリングツールの prof および gprof に比べて柔軟性が高く、詳細で正確な解析が可能になります。また、gprof に見られる時間の因果関係の判定の誤りもありません。
これらのツールは、次のような疑問の解決に役立ちます。
使用可能なリソースのうちのどのぐらいがプログラムによって消費されるのか。
どの関数またはロードオブジェクトが特に多くのリソースを消費するのか。
どのソース行と命令がリソースを消費するのか。
特定の地点に達するまでにプログラムはどのような実行過程を経ているのか。
関数またはロードオブジェクトはどのようなリソースを消費しているのか。
コレクタツールは次のようにパフォーマンスデータを収集します。
クロックトリガーまたはハードウェアパフォーマンスカウンタのオーバーフローに基づく、プロファイリングと呼ばれる統計的な方法を使用する
スレッド同期呼び出し、メモリー割り当ておよび割り当て解除呼び出し、I/O 呼び出し、Message Passing Interface (MPI) 呼び出しをトレースする
システムおよびプロセスに関するサマリーデータとして
Oracle Solaris プラットフォームでは、クロックプロファイリングデータにはマイクロステートアカウンティングデータが含まれます。記録されたすべてのプロファイリングイベントおよびトレースイベントには、呼び出しスタックのほか、スレッドおよび CPU ID が含まれます。
コレクタは C、C++、および Fortran に関するプログラムのあらゆる種類のデータを収集できるとともに、Java プログラミング言語で書かれたアプリケーションに関するプロファイルデータを収集できます。また、動的に生成される関数と派生プロセスに関するデータも収集できます。収集対象のデータについてはパフォーマンスデータを、コレクタの詳細についてはパフォーマンスデータの収集を参照してください。コレクタはパフォーマンスアナライザ、collect コマンド、または dbx collector コマンドでアプリケーションをプロファイルするときに実行されます。
パフォーマンスアナライザは、ユーザーがパフォーマンスデータを評価できるように、コレクタによって記録されたデータを表示します。パフォーマンスアナライザはデータを処理し、プログラム、その関数、ソース行、および命令のレベルでパフォーマンスに関するさまざまなメトリックを表示します。これらのメトリックは、次のグループに分類されます。
クロックプロファイリングメトリック
ハードウェアカウンタプロファイリングメトリック
同期待ちトレースメトリック
I/O トレースメトリック
ヒープトレースメトリック
MPI トレースメトリック
OpenMP メトリック
標本ポイント
パフォーマンスアナライザの「タイムライン」ビューには、raw データが時間の関数としてグラフィカル形式で表示されます。「タイムライン」ビューには、時間の関数として記録されたイベントおよび標本ポイントのチャートが表示されます。データは、水平バーに表示されます。
パフォーマンスアナライザでは、ターゲットプログラムのデータ領域の構造およびメモリーサブシステムの構造的コンポーネントに関するパフォーマンスのメトリックも表示できます。このデータは、ハードウェアカウンタメトリックの拡張です。
サポートされるアーキテクチャー上で記録された実験は、同じアーキテクチャーまたはその他の任意のサポートされるアーキテクチャー上で実行されているパフォーマンスアナライザで表示できます。たとえば、アプリケーションを Oracle Solaris SPARC サーバーで実行しているときにプロファイルし、Linux マシンで実行しているパフォーマンスアナライザで結果の実験を表示できます。
パフォーマンスアナライザのクライアントバージョンはリモートパフォーマンスアナライザと呼ばれ、Java が使用可能な Oracle Solaris、Linux、Windows、または Mac OS システムにインストールできます。このリモートパフォーマンスアナライザを実行して、完全な Oracle Developer Studio 製品がインストールされているサーバーに接続し、リモートから実験を表示できます。詳細は、パフォーマンスアナライザのリモートでの使用を参照してください。
パフォーマンスアナライザは、Oracle Developer Studio 解析スイートのその他のツールで使用されます。
スレッドアナライザは、スレッド解析実験の検査にこれを使用します。個別のコマンド tha は、パフォーマンスアナライザを専用のビューで起動し、特にこのような種類のデータの検査のために生成できる実験でのデータ競合およびデッドロックを表示します。
Oracle Developer Studio 12.5: スレッドアナライザユーザーズガイドでは、スレッドアナライザを使用する方法について説明しています。
uncover コードカバレージユーティリティーでは、パフォーマンスアナライザを使用して、「関数」、「ソース」、「逆アセンブリ」、および「命令頻度」データビューにカバレージデータを表示します。詳細は、Oracle Developer Studio 12.5: Discover および Uncover ユーザーズガイドを参照してください。
ツールの使用についての詳細は、パフォーマンスアナライザツールおよびパフォーマンスアナライザの「ヘルプ」メニューを参照してください。
er_print コマンド行パフォーマンス解析ツールでは、er_print コマンド行インタフェースを使用して、コレクタで収集したデータを解析する方法について説明しています。
パフォーマンスアナライザとそのデータについてでは、パフォーマンスアナライザとそのデータに関連する、データ収集の動作、パフォーマンスメトリックの解釈、呼び出しスタックとプログラムの実行などのトピックについて説明しています。
注釈付きソースと逆アセンブリデータについてでは、注釈付きソースと逆アセンブリについて説明し、パフォーマンスアナライザが表示する各種インデックス行とコンパイラ解説について説明しています。この章では、コンパイラ解説を含むがパフォーマンスデータは含まない注釈付きソースコードのリストおよび逆アセンブリコードのリストの表示に使用できる er_src コマンド行ユーティリティーについても説明します。
実験の操作では、実験のコピー、移動、削除、実験へのラベルの追加、および実験のアーカイブとエクスポートの方法について説明します。
カーネルプロファイリングでは、Oracle Solaris オペレーティングシステムが負荷を実行中に、Oracle Developer Studio のパフォーマンスツールを使用してカーネルをプロファイリングする方法について説明しています。
パフォーマンスアナライザでのサンプルコードの使用方法については、Oracle Developer Studio 12.5: パフォーマンスアナライザチュートリアルを参照してください。
er_print ユーティリティーは、パフォーマンスアナライザにより提示されるすべての情報のうち、タイムライン、MPI タイムライン、および MPI チャートを除く情報を、標準テキストで出力します。これらの表示は本質的にグラフィカルであり、テキスト表示にはできません。