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

印刷ビューの終了

更新: 2014 年 12 月
 
 

ハードウェアカウンタ CPU サイクルプロファイリングのメトリックの理解

チュートリアルのこのパートでは、cycles カウンタからデータが得られた実験が必要です。このカウンタをサポートしないシステムで行われた実験は、このセクションで使用できません。次のセクションである キャッシュ競合メトリックとキャッシュプロファイリングメトリックの理解に進んでください。

  1. 「概要」ページを選択し、派生メトリック「命令当たりのサイクル数」と、「一般ハードウェアカウンタ」メトリックの「CPU サイクル」を有効にします。

    「包括的 CPU 合計」および「命令の実行」は選択したままにします。

    image:「CPU サイクル」および「命令当たりのサイクル数」のチェックボックス
  2. computeB() の「ソース」ビューに戻ります。

    image:関数 computeB のパフォーマンスアナライザの「ソース」ビュー

    包括的 CPU サイクルの時間と「包括的 CPU 合計」の時間はそれぞれの compute*() 関数でほぼ同じです。これは、クロックプロファイリングと「CPU サイクル」ハードウェアカウンタプロファイリングで同様のデータが得られていることを示します。

    スクリーンショットでは、包括的 CPU サイクルおよび「包括的 CPU 合計」の時間は、computeB() を除いたそれぞれの compute*() 関数でおよそ 12 秒です。また実験では、包括的命令当たりのサイクル数 (CPI) が、computeB() に関してほかの compute*() 関数よりもずっと高くなります。これが示すように、computeB() は同数の命令を実行するために必要な CPU サイクルが多いことになり、ほかの関数よりも非効率です。

ここまでに観察したデータは、computeB() 関数とほかの関数の違いを示していますが、関数間で相違が生じる理由は示していません。このチュートリアルの次のパートでは、computeB() が異なっている理由を調査します。