プログラムのパフォーマンス解析 | ![]() ![]() ![]() ![]() ![]() |
第 4 章
標本アナライザリファレンス
この章では、標本アナライザおよびその使い方について、以下の項目を説明します。
- 標本アナライザの起動および実験の読み込み
- 標本アナライザウィンドウ
- 関数およびロードオブジェクトの測定結果の検査
- 関数の呼び出し元と呼び出し先の測定結果の検査
- 注釈付きソースコードおよび逆アセンブリコードの調査
- フィルタ情報
- マップファイルの作成および使用
- データオプションリストで他のデータを表示
- 標本アナライザに実験を追加
- 標本アナライザから実験を解除
- 表示の印刷
標本アナライザは、標本コレクタの収集したプログラムのパフォーマンスデータを解析します。標本アナライザを使用すると、コレクタの収集した実験レコードファイルを読み込んで実験データの検査および操作を行い、プログラム実行時の障害を特定してパフォーマンスを向上させることができます。
標本アナライザを使ったアプリケーションの調整例は、第 2 章を参照してください。
標本アナライザでのプログラムの実行および動作の説明は、第 6 章を参照してください。
標本アナライザの起動および実験の読み込み
注 - 実験を読み込むと、標本アナライザで以前に読み込んだデータがすべて破棄されます。ただし、記録された実験には影響しません。
標本アナライザを使うには、「標本アナライザ」ウィンドウを起動して実験レコードを読み込む必要があります。コマンド行から以下の手順を実行します。
- 以下のように入力します。ここで、experiment_name には、読み込む実験レコードファイルの名前を指定します。
%analyzer
experiment_name
- 実験名は、通常は
test.
n.er
という形式です。または、Sun WorkShop のメインウィンドウまたは 「標本コレクタ」ウィンドウから 標本アナライザを起動し、実験を読み込みます。
1. Sun WorkShop のメインウィンドウまたは 「標本コレクタ」ウィンドウの「解析」ボタンをクリックします。![]()
2. 「実験ファイルの読み込み」は、実験を指定しないで標本アナライザを起動した場合に自動的に表示されます。このダイアログで、読み込む実験レコードファイルを指定します。標本アナライザの実行中に、「実験ファイルの読み込み」ダイアログを使って実験を読み込むこともできます。
- 標本アナライザのメインメニューバーの「実験ファイル」メニューから「読み込み」を選択し、「実験ファイルの読み込み」ダイアログを表示します。
標本アナライザのコマンド行オプション
標本アナライザをコマンド行から起動する場合は、表 4-1 に示す 2 つのオプションを指定することができます。
標本アナライザの終了
- 標本アナライザのメインメニューバーの「実験ファイル」メニューから「終了」を選択します。
標本アナライザウィンドウ
「アナライザ」ウィンドウは、標本アナライザの起動時に表示されるメインの表示です。このウィンドウには、メインメニューバー、上部および下部のツールバー、実験データの表示される中央の表示区画があります。
![]()
図 4-1 標本アナライザウィンドウ関数およびロードオブジェクトの測定結果の検査
標本アナライザの起動時には、デフォルトで関数リストが表示され、関数およびロードオブジェクト固有の測定結果 (メトリック) が表示されます。関数リストは、2 つの区画で構成されています。
- 左の区画には、ソート済みの測定結果データのヒストグラムが表示されます。
- 右の区画には、関数またはロードオブジェクトの測定結果の表が表示されます。データの行に該当する関数またはロードオブジェクトの名前は、各行の右側に表示されます。
関数リストでは、表示された関数またはロードオブジェクトの測定結果ごとに、秒数または回数の絶対値と、プログラムの測定結果全体での割合が表示されます。
関数およびロードオブジェクトの測定結果の表示
デフォルトでは、関数リストには関数の測定結果が表示されます。
ロードオブジェクトの測定結果に切り替えるには、以下の操作を行います。
- 上部のツールバーの「単位」で「ロードオブジェクト」を選択します。
- 上部のツールバーの「単位」で「関数」を選択します。
表示される測定結果について
関数リストでは、以下の種類の関数およびロードオブジェクトの測定結果 (メトリック) を表示することができます。
各測定結果の詳細は、「標本コレクタが収集するデータ」を参照してください。
デフォルトでは、サポートデータが収集されていれば、関数リストに以下の測定結果が表示されます。
- 排他的ユーザー CPU 時間
- 包含的ユーザー CPU 時間
- 排他的スレッド同期待ち時間 (記録されている場合)
- 包含的スレッド同期待ち回数 (記録されている場合)
- 排他的ハードウェアカウンタのオーバーフロープロファイル回数 (記録されている場合)
- 包含的ハードウェアカウンタのオーバーフロープロファイル回数 (記録されている場合)
測定結果は、排他的 CPU 時間が記録されていれば、それを基準にしてソートされます。
「メトリックの選択」ダイアログでは、他のデータを選択して表示する、および異なるソート順を指定することができます。手順は、「関数およびロードオブジェクトの測定値とソート順の選択」を参照してください。
時間ベースのプロファイル
時間ベースのプロファイルは、時計時間が基準になります。このプロファイルは、プログラムで各関数およびロードオブジェクトに消費された排他的時間と包含的時間を示します。このプロファイルを利用することで、プログラムの障害の発生場所を特定しやすくなります (排他的および包含的測定結果の詳細は、「排他メトリック、包含メトリック、寄与メトリック」を参照してください)。
時間ベースのプロファイルデータは、プログラムの関数ごとに、以下の排他的時間のメトリックを示します。
- ユーザー CPU 時間 - アプリケーションが CPU 上で動作している時間
- 総 LWP 時間 - 全 LWP (軽量プロセス) の実行時間の合計
- 時計時間 - スレッド 1 で経過した LWP 時間
- システム CPU 時間 - オペレーティングシステムが費やした総 CPU 時間 (LWP がトラップ状態にある総 CPU 時間)
- システム待ち時間 - CPU、ロックまたはカーネルページ待ちで経過した LWP 時間 (休眠や停止に費やされた時間)
- テキストページフォルト時間 - テキストページ待ちで経過した LWP 時間
- データページフォルト時間 - データページ待ちで経過した LWP 時間
これらの値は、秒数またはプログラムの合計測定結果での割合として表示します。時計時間を除き、測定結果はすべての LWP での合計になります。
スレッド同期待ちの監視
マルチスレッドのプログラムでは、スレッド同期待ちの監視によって、スレッドライブラリのスレッド同期ルーチンを呼び出すときの待ち時間が記録されます。実時間の遅延がユーザー定義しきい値を超える場合は、その呼び出しに対応するイベントが記録され、待ち時間が秒数で記録されます。
同期待ちの監視は、関数またはロードオブジェクトごとに、記録されたイベント数と、スレッド同期ルーチン呼び出し時の待ち時間でしきい値を超えたものの合計秒数のデータをサポートします。このデータから、関数またはロードオブジェクトが頻繁に待ち状態になっているかどうか、あるいは同期ルーチンを呼び出すときの待ち時間が異常に長くなっているかどうかを確認することができます。
長い同期待ち時間は、スレッド間に競合が発生していることを示します。競合は、アルゴリズムの変更、特にスレッドごとにロックの必要のあるデータだけがロックされるように、ロックを再構築することで、競合を削減することができます。
ハードウェアカウンタのオーバーフロープロファイル
ハードウェアカウンタのオーバーフロープロファイルは、LWP の実行されている CPU のハードウェアカウンタでオーバーフローが発生したときに、各 LWP の呼び出しスタックを記録します。時刻、スレッド ID、LWP が記録されます。
通常は、ハードウェアカウンタのオーバーフロープロファイルは、命令キャッシュの消失、データキャッシュの消失、サイクル、発生または実行された命令のデータを記録します。
キャッシュ消失数が多い場合は、再構築によって局所性を向上して、再利用を増加させることで、プログラムのパフォーマンスが向上します。
サイクル数が多い場合は、通常は時間ベースのプロファイルも高くなります。ただし、サイクル実験によって、時間との相関が小さくなります。
関数およびロードオブジェクトの測定値とソート順の選択
プログラムのパフォーマンスが特定の障害によって低下していると推測される場合は、その障害を示す測定結果だけを関数リストで表示することができます。
関数リストで表示するデータの種類およびソート順を変更するには、以下の手順で行います。
1. 関数リストの上部ツールバーにある「メトリック」ボタンをクリックします。![]()
図 4-2 「メトリックの選択」ダイアログ「メトリックの選択」ダイアログで表示されるデータの種類は、標本コレクタで収集したデータによって異なります。コレクタの実行時にすべての種類のデータを収集した場合は、以下の (排他的と包含的の) 測定結果がダイアログに表示されます。
- ユーザー CPU 時間
- 総 LWP 時間
- 時計時間 (スレッド 1 での LWP 時間)
- システム CPU 時間
- システム待ち時間
- テキストページフォルト時間
- データページフォルト時間
- 同期待ち回数 (記録されている場合)
- 同期待ち時間 (記録されている場合)
- ハードウェアカウンタのオーバーフロープロファイル回数 (記録されている場合)
これらのデータは、絶対値 (秒数または回数) およびプログラムの測定結果全体での割合で表示されます。
また、関数またはロードオブジェクトに関して以下のデータを表示することもできます。
2. 特定の種類の測定結果を表示するには、「メトリックの選択」ダイアログの「値」または「%」の列にあるチェックボックスを選択します。3. ソート順を指定するには、「メトリックの選択」ダイアログの「ソート」列にあるボタンで選択します。4. 選択した測定結果を関数リストで表示するには、「了解」をクリックして「メトリックの選択」ダイアログを閉じるか、「適用」をクリックしてダイアログを表示したままで選択を有効にします。
注 - 「メトリックの選択」ダイアログで測定結果のグループを変更するには、測定結果名の横にあるアイコンをクリックし、表示する場所までドラッグします。
関数またはロードオブジェクトの測定結果の要約表示
「概要メトリック」ウィンドウを使って、選択した関数またはオブジェクトの測定結果の合計およびその他の情報を、関数リストの一部としてではなく表形式で表示することができます。
関数またはロードオブジェクトの測定結果の要約を表示するには、以下の操作を行います。
1. 「単位」のラジオボタンで、「関数」と「ロードオブジェクト」のどちらを表示するかを選択します。2. 関数リストの右側の区画で、関数またはロードオブジェクトをクリックして選択します。3. 「表示」「概要メトリックを表示」を選択して、「概要メトリック」ウィンドウを表示します。
![]()
図 4-3 「概要メトリック」ウィンドウ「概要メトリック」ウィンドウには、選択した関数またはオブジェクトに関して、以下のような排他的および包含的情報のうち 標本コレクタで収集されたものが表示されます。
- メモリーアドレス
- 関数サイズ (バイト単位)
- ユーザー CPU 時間
- 総 LWP 時間
- 時計時間 (スレッド 1 での LWP 時間)
- システム CPU 時間
- システム待ち時間
- テキストページフォルト時間
- データページフォルト時間
- 同期待ち時間 (記録されている場合)
- 同期待ち回数 (記録されている場合)
- ハードウェアカウンタのオーバーフロープロファイル回数 (記録されている場合)
注 - 「概要メトリック」ウィンドウのすべてのデータは、クリップボードにコピーし、任意のテキストエディタでペーストすることができます。
また、関数に対しては、関数のコードが含まれるソースファイル、オブジェクトファイル、ロードオブジェクトも表示されます。
注 - 測定結果は、関数リストに表示していなくても、「概要メトリック」ウィンドウで表示することができます。「メトリックの選択」ダイアログを使って関数リストを変更しなくても、「概要メトリック」ウィンドウで表示可能なすべての関数データを表示することができます。
関数またはロードオブジェクトの検索
標本アナライザには、関数リストで関数またはロードオブジェクトの指定に使う検索ツールがあります。
特定の関数またはロードオブジェクトを検索するには、以下の手順を行います。
1. 「表示」メニューから「検索」を選択して、「検索」ダイアログを表示します。![]()
図 4-4 「検索」ダイアログ2. 「検索文字列」フィールドに検索文字列を入力します。3. 「方向」ラジオボタンを使って、検索方向を指定することができます。デフォルトでは「前方」が選択されています。4. 「適用」をクリックします。
- 検索に成功すると、検索した関数のデータの行が関数リストで強調表示されます。
5. 検索文字列に一致する他の関数名を検索するには、再度「適用」をクリックします。6. 最後に成功した検索の検索文字列を「検索文字列」フィールドに再度入力するには、「リセット」をクリックします。
注 - 標本アナライザの検索機能は、UNIX の正規表現を使います。したがって、c*
という検索文字列は、c
の後に任意の個数の文字が続く文字列ではなく、任意の個数のc
を示します。UNIX の正規表現の詳細は、regexp
(5) のマニュアルページを参照してください。
関数の呼び出し元と呼び出し先の測定結果の検査
標本アナライザの「呼び出し元-呼び出し先」ウィンドウで選択した関数の、呼び出し元と呼び出し先の測定結果を検査することができます。「呼び出し元-呼び出し先」ウィンドウを表示するには、次の操作を行います。
- 下部のツールバーにある「呼び出し元-呼び出し先」ボタンをクリックします。
![]()
図 4-5 「呼び出し元-呼び出し先」ウィンドウ「呼び出し元-呼び出し先」ウィンドウでは、選択した関数の情報が中央の区画に、関数の呼び出し元の情報が上の区画に、関数の呼び出し先の情報が下の区画にそれぞれ表示されます。
「呼び出し元-呼び出し先」ウィンドウでは、選択した関数、その関数を呼び出す関数、その関数が呼び出す関数に関する以下の情報のうち、標本コレクタで収集されたものが表示されます。
- ユーザー CPU 時間
- 総 LWP 時間
- 時計時間 (スレッド 1 での LWP 時間)
- システム CPU 時間
- システム待ち時間
- テキストページフォルト時間
- データページフォルト時間
- 同期待ち回数 (記録されている場合)
- 同期待ち時間 (記録されている場合)
- ハードウェアカウンタのオーバーフロープロファイル回数 (記録されている場合)
これらのデータは、絶対値 (秒数または回数) およびプログラムの測定結果全体での割合で表示されます。
デフォルトでは、「呼び出し元-呼び出し先」ウィンドウには以下の測定結果が表示されます。
- 属性 (寄与)、排他的、包含的の各ユーザー CPU 時間
- 属性および包含的の同期待ち回数
- 属性および包含的の同期待ち時間 (記録されている場合)
- 属性ハードウェアカウンタのオーバーフロー回数 (記録されている場合)
測定結果は、属性ユーザー CPU 時間を基準にしてソートされます。
呼び出し元区画または呼び出し先区画で関数をクリックして、プログラム構造を調べることができます。関数をクリックすると、その関数が中央に表示されます。排他的、包含的、属性時間を確認することで、実行時間が長い関数を特定することができます。
「呼び出し元-呼び出し先」ウィンドウでの測定結果およびソート順の選択
「呼び出し元-呼び出し先メトリックの選択」ダイアログで、「呼び出し元-呼び出し先」ウィンドウに表示するデータおよびソート順を指定することができます。
「呼び出し元-呼び出し先メトリックの選択」ダイアログを表示するには、次の操作を行います。
- 「呼び出し元-呼び出し先」ウィンドウで、「メトリック」ボタンをクリックします。
![]()
図 4-6 「呼び出し元-呼び出し先メトリックの選択」ダイアログ「呼び出し元-呼び出し先メトリックの選択」ダイアログの操作は、「メトリックの選択」ダイアログと同様です。ただし、属性、排他的、包含的データの測定結果では、属性データを基準にしてのみソートすることができます (「関数およびロードオブジェクトの測定値とソート順の選択」を参照してください)。
注 - 「呼び出し元-呼び出し先メトリックの選択」ダイアログで測定結果のグループを変更するには、測定結果名の横にあるアイコンをクリックし、表示する場所までドラッグします。
注釈付きソースコードおよび逆アセンブリコードの調査
プログラムの実行速度低下の原因である関数を特定したら、その問題となる個所のソースコードまたは逆アセンブリをパフォーマンス測定結果の注釈付きで表示し、障害の原因になっている実際の行または命令を特定することができます。
関数の注釈付きソースコードを表示するには、以下の操作を行います。
1. 関数リストの右の区画で、関数をクリックして選択します。2. 「アナライザ」ウィンドウの下部にあるツールバーの「ソース」をクリックします。
- テキストエディタが起動し、選択した関数のソースコードが表示されます。ソースコードの各行のパフォーマンス測定結果が、コードの左側に表示されます。
表 4-2 に、注釈付きソースコードの行で表示可能な 4 種類の測定結果を示します。
関数の注釈付き逆アセンブリコードを生成するには、以下の操作を行います。
1. 関数リストの右の区画で、関数をクリックして選択します。2. 「アナライザ」ウィンドウの下部にある「逆アセンブル」をクリックします。
- テキストエディタが起動し、選択した関数のコードが表示されます。ソースコードの各行のパフォーマンス測定結果が、コードの左側に表示されます。
注 - プログラムのソースが存在する場合に、「逆アセンブル」をクリックして注釈付き逆アセンブリコードを生成すると、ソースコードに逆アセンブリコードが挿入されて表示されます。ソースコードが存在しない場合でも、逆アセンブリコードを調べることができます。
注釈での測定結果の種類は、ソースコードまたは逆アセンブリコードを呼び出したときに関数リストで表示されるものと同じです。測定結果を変更するには、「メトリックの選択」ダイアログで関数リストの測定結果を変更してから、注釈付きソースコードまたは逆アセンブリコードを表示します。
テキストエディタの選択
注釈付きソースコードおよび逆アセンブリコードは、テキストエディタで表示されます。そのため、コードを編集して問題を修正することができます。テキストエディタは、使用したいものを選択できます。
1. 関数リストで「オプション」メニューから「テキストエディタオプション」を選択して、「テキストエディタのオプション」ダイアログを表示します。2. 「使用するエディタ」リストボックスで、テキストエディタを選択します。
- NEdit、Vi、GNU Emacs、XEmacs、gvim のいずれかを選択することができます。
注 - テキストエディタによっては、一部のロケールに対応していません。
フィルタ情報
プログラム中で障害の原因となっている可能性が高い場所の情報だけを表示できれば、より効率的に情報を処理することができます。標本アナライザでは、複数の方法で実験情報にフィルタを適用することができます。
ロードオブジェクトの選択
パフォーマンス解析では、多くの場合は、プログラムのすべてのロードオブジェクトに関する情報を表示する必要はありません。たとえば、プログラムファイルの測定結果だけが必要であり、システムライブラリの測定結果は不要な場合です。標本アナライザでは、「関数リスト」および「概要」で測定結果を表示するロードオブジェクトを指定することができます。
情報を表示するロードオブジェクトを選択するには、以下の操作を行います。
1. 「表示」メニューの「条件付きロードオブジェクトの選択」を選択して、「次の条件を含んだロードオブジェクトを選択」ダイアログを表示します。2. リストボックスで、表示しないファイルをクリックして選択を解除します。
- 表示するファイルが選択されていない場合は、クリックして選択します。リストのすべてのロードオブジェクトを選択または選択解除するには、「すべてを選択」および「すべてを選択解除」ボタンをクリックします。
3. 「了解」をクリックして選択を有効にし、「次の条件を含んだロードオブジェクトを選択」ダイアログを閉じます。標本、スレッド、LWP の選択
測定結果を表示する標本、スレッド、LWP だけを指定することで、表示する情報を限定することができます。「関数リスト」および「概要」では、指定した標本、スレッド、LWP の測定結果だけが表示されます。
注 - 標本を選択すると、「概要」の右の区画でその標本に影が表示されます。「概要」の使い方については、「標本の概要の検査」を参照してください。
標本、スレッド、LWP は、個別、範囲、グループ単位で、任意の順序で選択することができます。
- 下部のツールバーの「フィルタの選択」ボタンをクリックします。
「フィルタを選択」ダイアログが表示されます。このダイアログには、以下のフィールドがあります。
![]()
図 4-7 「フィルタを選択」ダイアログこれらのフィールドに、データを表示する標本、スレッド、LWP を指定します。標本、スレッド、LWP は、任意の番号および組み合わせで指定することができます。
標本、スレッド、LWP を 1 つ選択するには、次の操作を行います。
- 該当するフィールドに、標本、スレッド、LWP のいずれかの ID 番号を入力し、Enter を押します。
標本、スレッド、LWP を範囲を指定して選択するには、次の操作を行います。
- 該当するフィールドに、範囲の最初と最後の ID 番号をハイフンで区切って (
5-12
など) 入力し、Enter を押します。連続していない複数の標本、スレッド、LWP を選択するには、次の操作を行います。
- 該当するフィールドに、複数の ID をコンマで区切って (
3,7,15,21
など) 入力し、Enter を押します。実験レコードのすべての標本、スレッド、LWP を選択するには、次の操作を行います。
- 標本、スレッド、LWPs の「全て」ボタンをクリックします。
マップファイルの作成および使用
標本アナライザでは、実験レコードのデータを使ってマップファイルを作成することができます。このマップファイルを静的リンカーで使用して、作成する実行可能ファイルのワーキングセットの縮小や命令キャッシュの動作の効率化を図ることができます。
1.-xF
オプションを指定してプログラムをコンパイルします。このオプションは、独立して再配置可能な関数を生成するように指定します。以下に例を示します。
- C アプリケーションの場合は、以下のように入力します。
%cc -xF -c a.c b.c
%cc -o
application_namea.o b.o
- C++ アプリケーションの場合は、以下のように入力します。
%CC -xF -c a.cc b.cc
%CC -o
application_namea.o b.o
- Fortran アプリケーションの場合は、以下のように入力します。
%f95 -xF -c a.f b.f
%f95 -o
application_namea.o b.o
- 以下の警告メッセージが表示された場合は、非共有のオブジェクトやライブラリファイルなどの静的にリンクされたファイルを調べ、これらのファイルが
-xF
オプションを指定してコンパイルされているかどうかを確認します。
ld: warning: mapfile: text: .text% function_name: object_file_name:Entrance criteria not met named_file, function_name, has not been compiled with the -xF option.2. アプリケーションをデバッグするため、Sun WorkShop に読み込み、標本コレクタを使ってパフォーマンスデータを収集します (「Sun WorkShopでのパフォーマンスデータの収集」を参照)。アドレス空間データの収集が有効であることを確認します。3. 生成した実験を 標本アナライザに読み込みます (「標本アナライザの起動および実験の読み込み」を参照)。4. 「実験ファイル」メニューの「マップファイル作成」を選択します。「マップファイル作成」ダイアログが表示されます。![]()
図 4-8 「マップファイル作成」ダイアログ5. 必要に応じて、「マップファイル作成」ダイアログの「ディレクトリ」区画で、マップファイルの保存先ディレクトリを指定します。6. 「名前」フィールドでは、以下の操作が可能です。7. 「ロードオブジェクトの選択」リストボックスで、マップファイルを作成するロードオブジェクト (通常はプログラムセグメント) を選択します。8. 「了解」をクリックします。マップファイルを使ってプログラム内の順序を変更するには、以下のように入力します。
- 通常の手順で、マップファイルを使ってオブジェクトファイルをリンクします。以下に例を示します。
データオプションリストで他のデータを表示
標本アナライザウィンドウを表示して実験を読み込むと、デフォルトでは関数およびロードオブジェクトの情報を示す関数リストが表示されます。関数リストの詳細は、「関数およびロードオブジェクトの測定結果の検査」を参照してください。
上部のツールバーの「データ」リストボックスで、表示区画の内容を変更し、他の種類のデータを表示することができます。
- 「概要」 - 高レベルの標本情報です。詳細は、「標本の概要の検査」を参照してください。
- 「アドレス空間」 - プログラムの使うメモリーに関する情報です。詳細は、「アドレス空間情報の検査」を参照してください。
- 「実行統計」 - プログラムの実行結果に関する全般的な情報です。詳細は、「実行の統計情報の検査」を参照してください。
データオプションリストで「関数リスト」を選択すると、他の表示から関数リストに戻ることができます。
注 - 標本アナライザで情報を調べるには、先に標本コレクタで情報を収集して実験レコードに保存する必要があります。標本コレクタで収集して実験レコードに保存するデータの指定方法については、「Sun WorkShopでのパフォーマンスデータの収集」を参照してください。
標本の概要の検査
- 「データ」リストボックスで「概要」を選択します。
![]()
図 4-9 概要表示概要では、プログラムの実行の一部または全体のプロセス時間に関する情報が表示されます。概要は、2 つの区画で構成されています。
- 左の区画には、選択した標本 (1 つまたは複数) のさまざまなプロセス状態で消費された時間の平均を示すグラフが表示されます。
- 右の区画には、選択した標本のさまざまなプロセス状態で消費された時間を示すグラフが連続して表示されます。各グラフは、1 回のサンプリング間隔で標本コレクタが収集した標本情報を示します。標本の上に、標本の識別番号が表示されます。
可変幅と固定幅での表示
デフォルトでは、概要は標本は固定幅で表示されます。つまり、標本のグラフは、サンプリング間隔が同じかどうかに関係なく、すべて同一幅で表示されます。標本は、サンプリング間隔に応じて可変幅で表示することもできます。
- 「オプション」メニューの「概要のカラムサイズを指定」の「比例」を選択します。
- 「オプション」メニューの「概要のカラムサイズを指定」の「固定」を選択します。
標本の詳細情報の表示
標本の詳細情報を表示するには、先に標本を選択する必要があります。選択する手順は、「標本、スレッド、LWP の選択」を参照してください。
概要の左の区画には、選択したすべての標本に関して、さまざまなプロセス状態で消費された時間の平均と、各状態の示すサンプリング時間の割合が表示されます。たとえば、ある標本のセットの実行時間のうち、ユーザーコードの実行が 23%、システム待ち時間が 50%、値が小さいためにグラフでは個々に表示されない他の状態が 27% というように表示されます。
標本グラフでは値が小さすぎて表示されないプロセス状態の測定結果など、標本情報のより詳細な分析を表示するには、以下の操作を行います。
- 標本アナライザで、「表示」メニューの「標本の詳細を表示」を選択します。
![]()
図 4-10 「標本の詳細」ウィンドウ
- 以下の測定結果を示す「標本の詳細」ウィンドウが表示されます。
- 標本の ID
- 選択した標本の割合
- サンプリングの開始時間、終了時間、長さ (秒単位)
- プロセス状態と各状態で消費された時間 (秒数と、選択した標本の測定結果の合計の割合) のリスト
- 標本コレクタが実験レコードファイルに記録したデータの種類を示すパラメータのリスト
アドレス空間情報の検査
注 - アドレス空間情報は、標本コレクタで実験レコードを生成するときにアドレス空間データを選択していた場合にだけ、標本アナライザで表示されます。選択していなかった場合は、アドレス空間は表示されません。
- 「データ」リストボックスで「アドレス空間」を選択します。
![]()
図 4-11 アドレス空間表示デフォルトでは、ページ単位で表示されます (「単位」ラジオボタンの「ページ」を選択しても、この表示になります)。各マス目は、アドレス空間のページを示します。マス目の模様は、プログラムがページをどのように処理しているかを示します。
アドレス空間のセグメントを表示するには、以下の操作を行います。
- 上部のツールバーの「単位」ラジオボタンで、「セグメント」をクリックします。
右の区画に、プログラムで使われているメモリーブロックが処理の区別なしで表示されます。
ページおよびセグメントの詳細を表示する
ページまたはセグメントの詳細を表示するには、以下の操作を行います。
1. 「単位」ラジオボタンで、「ページ」または「セグメント」を選択します。2. アドレス空間の右の区画で、ページまたはセグメントをクリックして選択します。
- アドレス空間の右の区画でページまたはセグメントを選択すると、ページまたはセグメントに影が表示されます。
3. 標本アナライザで、「表示」メニューの「ページ属性を表示」または「セグメント属性を表示」を選択します。![]()
図 4-12 「ページ属性」ウィンドウ以下の情報を示す「ページ属性」ウィンドウまたは「セグメント属性」ウィンドウが表示されます。
実行の統計情報の検査
- 「データ」リストボックスで「実行統計」を選択します。
実行統計には、選択した標本のさまざまなシステム統計情報の合計が表示されます (標本の選択およびグループ化の方法については、「標本、スレッド、LWP の選択」を参照)。
![]()
図 4-13 実行統計表示
注 - 「実行統計」ウィンドウのすべてのデータは、クリップボードにコピーし、任意のテキストエディタにペーストすることができます。
標本アナライザに実験を追加
標本アナライザでは、複数の実験レコードファイルを読み込むことができます。ただし、複数の実験レコードを読み込んだ場合は、以下の制限があります。
- すべての実験の時間ベースのプロファイル、スレッド同期待ちの監視、ハードウェアカウンタのオーバーフロープロファイルの結合データは、関数リストで結合して表示されます。すべての実験レコードのすべての標本データが表示されます。
- 標本、スレッド、LWP を基準にしたフィルタは無効になります。
- 関数リストだけを使用することができます。
標本アナライザに読み込み済みのレコードに実験レコードを追加するには、以下の操作を行います。
1. 標本アナライザのメニューバーの「実験ファイル」メニューから「追加」を選択して、「実験ファイルの追加」ダイアログを表示します。2. 追加する実験レコードファイルをリストボックスでダブルクリックするか、「名前」フィールドに実験レコードファイル名を入力します。3. 「了解」をクリックします。
注 - 「実験ファイル」メニューの「追加」コマンドは、関数リストでのみ使用可能です。
標本アナライザから実験を解除
注 - 実験を解除すると、標本アナライザから削除されますが、実験レコードファイルには影響しません。標本アナライザで実験レコードファイルを直接削除することはできません。
標本アナライザから実験レコードを解除するには、以下の操作を行います。
1. 「実験ファイル」メニューの「解除」を選択して、「実験ファイルの解除」ダイアログを表示します。2. 標本アナライザから解除する実験ファイルをリストボックスでクリックします。3. ダイアログを表示したまま実験ファイルを解除するには、「適用」をクリックします。実験レコードを解除してダイアログを閉じるには、「了解」をクリックします。
注 - 複数の実験ファイルが読み込まれている場合のみ、標本アナライザから実験を解除することができます。読み込まれている実験が 1 つだけの場合は、「解除」コマンドは使用できません。
表示の印刷
標本アナライザの表示をテキスト形式で印刷するには、以下の操作を行います。
1. 標本アナライザのメニューバーの「実験ファイル」メニューから「印刷」を選択して、「印刷」ダイアログを表示します。2. 「出力先」ラジオボタンで、「プリンタ」または「ファイル」を選択します。
- プリンタに出力する場合は、「プリンタ」フィールドのデフォルト名をそのまま使用するか、他のプリンタ名を入力します。
- ファイルに出力する場合は、「ファイル」フィールドにファイル名を入力するか、「ブラウズ」ボタンをクリックして「印刷形式でファイルに保存」ダイアログを表示し、ディレクトリまたはファイルを指定します。
3. 「印刷」ボタンをクリックします。
注 - 概要の場合は、グラフィック表示をテキスト形式に変換したものではなく、実験の各標本の統計情報のリストが出力されます。
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |