修正日: 07/10/24
Shark
Performance Tools入門 その4
4. 表示内容のカスタマイズ
「View」メニューの「Show Advanced Setting」でドロワーが開きます(図8)。ドロワー上のコントロールで表示内容をカスタマイズできます。設定できる項目は非常に多岐に渡るためいくつか代表的なものだけ紹介します。ただ文章だけでは動作は想像しにくいので、何がどう変化するのか実際に試してみてください。【図8】Advanced Settingタブ
(1)Profile Analysis
「Profile」タブの表示内容をカスタマイズできます。
・Granularity
リストに表示する内容をまとめる単位を指定します。「Address」を選択すると実行コードのアドレスごとに、「Symbol」であれば関数ごとに、「Source File」であればソースファイルごとに、処理の重さを集計します。図9はソースファイルごとの集計です。重い処理のほとんどは「begin.c」ファイルに集中している事が分かります。
【図9】ソースファイルごとに集計
・Stats Display
Sharkも基本的にはSamplerと同様に、一定時間おき(デフォルトでは1msおきに30,000回)にコールスタックをスキャンしてどのコードが実行されているのかをカウントし、それぞれの関数の処理の重さとみなします。「Stats Display」メニューでは実際のカウント数を表示するか(Value)(図10)、%表示するかを選択します。
【図10】カウント数を表示
・Weight By
処理の重さをカウント数(Count)ではかるか、処理時間(Time)ではかるかを選択します。一定時間おきに定期的にサンプリングするデフォルトの「Time Profile」ではCount=Timeですが、後述するPMCを使ったサンプリングなどでは必ずしもCount=Timeとはならないためです。
(2)Callstack Data Mining
プロファイルの表示内容を絞り込むことができます。
・Apply Callstack Data Mining
以下の絞り込み設定を有効にするかどうかを設定します。
・Charge System Libraries to Callers
システムのライブラリに関わるコールスタックを表示から外し、その中で費やした時間も計算から除外します。自分の手の及ぶ範囲のコードのみを表示し、集中することができます。
・Charge Code without Debug Info to Callers
デバッグ情報の無いコードを表示から外します。
・Hide Weight <
表示するシンボルのカウント数のしきい値を設定します。例えば「10」に設定するとカウント数が10未満の行は表示されなくなります。
・Flatten Recursion
再帰処理で繰り返し呼ばれる関数を全て一つの関数とみなしてまとめます。
・Flatten System Libraries
エントリポイント以外のライブラリのコールスタックを除外します。
・Remove Supervisor Callstacks
カーネルやドライバなどスーパーバイザーコードからの呼び出しを除外します。
(3)Code Browser
ソースコード表示タブ(図5)の表示内容をカスタマイズできます。主に見た目の変更です。
・CPU Model
最適化するターゲットのCPUを選択します。「!」ボタンおよび「Comment」コラムで最適化のヒントが表示されますが(ここはAltiVecを使って最適化しなさい、このコードはループの外に出しなさい、など)、CPUを選択する事で、そのCPUに最も適したヒントが表示されます。
(4)Source Browser
Cなどのソースコードの表示内容をカスタマイズできます。
(5)ASM Browser
ソースコード表示タブ右上のボタンでアセンブラ表示に切り替えることができます。「ASM Browser」ボックスではアセンブラ表示の内容をカスタマイズできます。
(6)Callstack Chart
Chartタブ(図7)の表示内容を設定します。グラフの描画スタイルを設定したり(Type)、グラフをクリックした時の選択処理の方式(Coalesce Samples)を変更したりできます。