Oracle® Solaris Studio 12.4: パフォーマンスアナライザチュートリアル

印刷ビューの終了

更新: 2014 年 12 月
 
 

Java-C++ プロファイリングチュートリアルについて

このチュートリアルでは、Java プロファイリングのための Oracle Solaris Studio パフォーマンスアナライザの機能について説明します。これは、サンプルコードを使用してパフォーマンスアナライザで次を行う方法を示します。

  • 「概要」ページ、「スレッド」ビュー、「関数」ビュー、「タイムライン」ビューを含むさまざまなデータビューでパフォーマンスデータを調べます。

  • Java コードと C++ コードの両方について「ソース」と「逆アセンブリ」を調べます。

  • ユーザーモード、エキスパートモード、およびマシンモードの違いを学習します。

  • プログラムを実行する JVM の動作にドリルダウンして、HotSpot コンパイル済みメソッドのために生成されるネイティブコードを確認します。

  • ユーザーコードによってガベージコレクタを呼び出す方法と、HotSpot コンパイラを呼び出す方法を確認します。

jsynprog は、Java プログラムに特有のサブタスクを多数含んでいる Java プログラムです。また、このプログラムは、C++ 共有オブジェクトをロードして、このオブジェクトからさまざまなルーチンを呼び出して、動的にロードされた C++ ライブラリから、Java コードからネイティブコードにシームレスに移行して再度ネイティブコードから Java コードに戻す方法を示します。

jsynprog.main は、さまざまなクラスから関数を呼び出すメインメソッドです。これは、Java Native Interface (JNI) 呼び出しによって gethrtimegethrvtime を使用して独自の動作の時間を設定し、独自のタイミングでアカウンティングファイルを書き込んで、さらにはメッセージを stdout に書き込みます。

jsynprog.main には多数のメソッドがあります。

  • Routine.memalloc はメモリー割り当てを行い、ガベージコレクションを呼び出します

  • Routine.add_int は整数の加算を行います

  • Routine.add_double は倍精度 (浮動小数点) の加算を行います

  • Sub_Routine.add_int は、Routine.add_int をオーバーライドする派生呼び出しです

  • Routine.has_inner_class は内部クラスを定義してこれを使用します

  • Routine.recurse は直接的な再帰を示します

  • Routine.recursedeep は深い再帰を行なって、切り詰められたスタックをツールで処理する方法を示します

  • Routine.bounce は間接的な再帰を示します。この場合、bounce は、次に bounce への呼び出しを行う bounce_b を呼び出します

  • Routine.array_op は配列の演算を行います

  • Routine.vector_op はベクトル演算を行います

  • Routine.sys_op は、システムクラスのメソッドを使用します

  • jsynprog.jni_JavaJavaC: Java メソッドは、C 関数を呼び出す別の Java メソッドを呼び出します

  • jsynprog.JavaCJava: Java メソッドは、次に Java メソッドを呼び出す C 関数を呼び出します

  • jsynprog.JavaCC: Java は、別の C 関数を呼び出す C 関数を呼び出します

これらのメソッドの一部はほかのメソッドから呼び出されるため、すべてが最上位タスクを表しているわけではありません。

記録する実験で目にするデータは、ここで示されているものとは異なります。チュートリアルのスクリーンショットに使用される実験は、Oracle Solaris 11.2 が実行されている SPARC T5 システムで記録されました。Oracle Solaris または Linux を実行する x86 システムからのデータは異なります。さらに、データ収集には統計的な性質があり、同じシステムおよび OS で実行する場合でも実験ごとに異なります。

パフォーマンスアナライザの実際のウィンドウ構成は、スクリーンショットと厳密に一致しない場合があります。パフォーマンスアナライザでは、ウィンドウのコンポーネント間の区切りバーをドラッグしたり、コンポーネントを縮小したり、ウィンドウのサイズを変更したりできます。パフォーマンスアナライザはその構成を記録し、次回の実行時に同じ構成を使用します。チュートリアルで示しているスクリーンショットの取得過程で、多くの構成を変更しました。