JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.2: パフォーマンスアナライザ
search filter icon
search icon

ドキュメントの情報

はじめに

1.  パフォーマンスアナライザの概要

2.  パフォーマンスデータ

3.  パフォーマンスデータの収集

4.  パフォーマンスアナライザツール

5.   er_print コマンド行パフォーマンス解析ツール

6.  パフォーマンスアナライザとそのデータについて

7.  注釈付きソースと逆アセンブリデータについて

8.  実験の操作

9.  カーネルプロファイリング

カーネル実験

カーネルプロファイリング用のシステムの設定

er_kernel ユーティリティーの実行

カーネルのプロファイリング

負荷の下でのプロファイリング

カーネルと負荷の両方のプロファイリング

特定のプロセスまたはカーネルスレッドのプロファイリング

カーネルプロファイルの分析

索引

er_kernel ユーティリティーの実行

er_kernel ユーティリティーを実行すると、カーネルのみ、またはカーネルと実行中の負荷の両方をプロファイリングできます。er_kernel コマンドの詳細な説明については er_kernel (1) のマニュアルページを参照してください。

カーネルのプロファイリング

  1. 次のように入力し、実験を収集します。
    % er_kernel -p on
  2. 任意の負荷を別のシェルで実行します。
  3. 負荷が完了したら、Ctrl-C キーを押して er_kernel ユーティリティーを終了します。
  4. デフォルトでは ktest.1.erという名前の結果の実験を、パフォーマンスアナライザまたは er_print ユーティリティーに読み込みます。

    カーネルの時間プロファイルによって、「KCPU サイクル」というラベルの付いたパフォーマンスメトリックが 1 つ生成されます。パフォーマンスアナライザでは、「関数」タブのカーネル関数について示され、「呼び出し元 - 呼び出し先」タブでは呼び出し先と呼び出し元について示され、「逆アセンブリ」タブでは命令について示されます。「ソース」タブにはデータは表示されません。カーネルモジュールは、通常、出荷時点ではファイルおよび行シンボルテーブル情報 (スタブ) を含んでいないからです。

    er_kernel ユーティリティーへの -p on 引数を、高分解能プロファイルの場合は < -p high に、低分解能プロファイルの場合は -p low に置き換えることができます。 負荷の実行に 2 ~ 20 分を要すると思われる場合は、デフォルトの時間プロファイルが適切です。実行に要する時間が 2 分未満と思われる場合は -p high を使用し、20 分を超えると思われる場合は -p low を使用します。

    -t 所要時間引数を追加でき、これを追加すると er_kernel ユーティリティーは 所要時間で指定された時間に従って自動的に終了します。

    -t 所要時間は、m (分) または s (秒) のサフィックスを付けた単数で指定できます。これは、実験を強制終了するまでの時間 (分または秒) を示します。 デフォルトでは、所要時間は秒です。所要時間はハイフンで区切られた 2 つの数で指定することもできます。これは、1 つ目の時間が経過するまでデータ収集を停止し、そして、データ収集を始める時間を示しています。2 つ目の時間が経過すると、データ収集が終了されます。2 つ目の時間がゼロの場合、初めてプログラムが停止したあと、そのプログラムの実行の終わりまで、データの収集が実行されます。実験が終了しても、ターゲットプロセスは最後まで実行できます。

    期間または間隔が指定されていない場合、er_kernel は停止するまで実行されます。停止させるには、Ctrl-C (SIGINT) を押します。あるいは、kill コマンドを使用し、SIGINTSIGQUITSIGTERMer_kernel プロセスに送信しても停止させることもできます。er_kernel プロセスは、これらの信号のいずれかを受け取ると、実験を終了し (-A off が指定されていない限り)、er_archive を実行します。er_archive ユーティリティーは、実験で参照されている共有オブジェクトのリストを読み取り、それぞれについてアーカイブファイルを構築します。

    -v引数を追加すると、実行に関するより多くの情報を画面に出力できます。 -n 引数を使用すると、実際には何も記録せずに、記録される実験のプレビューを表示できます。

    デフォルトでは、er_kernel ユーティリティーによって生成される実験の名前は ktest.1.er で、続けて実験が生成されると番号が順に増えていきます。

負荷の下でのプロファイリング

プログラムでもスクリプトでも、負荷として使用する単一のコマンドがある場合、次のようにします。

  1. 次のように入力し、実験を収集します。
    % er_kernel -p on load
  2. 次のように入力し、実験を解析します。
    % analyzer ktest.1.er

    er_kernelユーティリティーは子プロセスをフォークし、休眠期間だけ一時停止したあと、子プロセスが指定された負荷を実行します。負荷が終了すると、er_kernel ユーティリティーは再び休眠期間だけ一時停止し、そのあと終了します。実験は、負荷の実行中、およびその前後の休眠期間での Solaris OS の動作を示します。休眠期間の長さは、er_kernel コマンドへの -q 引数によって秒単位で指定できます。

カーネルと負荷の両方のプロファイリング

負荷として使用する単一のプログラムがあり、そのプロファイルをカーネルプロファイルと一緒に表示することに関心がある場合は、次のようにします。

  1. er_kernel コマンドと collectコマンドの両方を次のように入力することにより、カーネルプロファイルとユーザープロファイルの両方を収集します。
    % er_kernel collect load
  2. 2 つのプロファイルを一緒に解析するには、次のように入力します。
    % analyzer ktest.1.er test.1.er

    ktest.1.erアナライザによって表示されるデータは、test.1.er からのカーネルプロファイルと <literal>test.1.er</literal> からのユーザープロファイルの両方を示します。 タイムラインを使用すると、2 つの実験間の相関関係がわかります。


    注 - スクリプトを負荷として使用し、そのさまざまな部分のプロファイリングを行うには、スクリプト内の各種コマンドの前にcollectコマンドと適切な引数を付加します。


特定のプロセスまたはカーネルスレッドのプロファイリング

er_kernel ユーティリティーを 1 つ以上の -T 引数を使用して起動すると、次のように特定のプロセスまたはスレッドのプロファイリングを指定できます。

ターゲットのスレッドは、それらのスレッドについて er_kernel ユーティリティーを起動する前に作成されている必要があります。

1 つ以上の -T 引数を指定した場合は、Kthr 時間というラベルの付いた追加メトリックが生成されます。データは、CPU 上で実行されているかどうかに関わらず、プロファイリングされたすべてのスレッドについて取得されます。プロセスが中断されている (関数 <SLEEPING>) か CPU を待っている (関数 <STALLED>) かを示すために、特殊な単一フレームの呼び出しスタックが使用されます。

Kthr 時間 メトリックスが高く、KCPU サイクルメトリックスが低い関数は、プロファイリングされたスレッドが何か別のイベントを待って大量の時間を消費している関数です。