修正日: 07/10/24
Shark
Performance Tools入門 その4
5. Configurationの選択とカスタマイズ
2項で紹介したサンプリングの他にも、Sharkでは様々なスタイルのサンプリングを行うことができます。サンプリング方法の選択はSharkウィンドウのポップアップメニューから行います(図11)。MallocDebugのように各関数ごとにどれだけのメモリを割り当てているかを調べたり(MallocTrace)、Samplerのように特定の関数の呼び出しを監視したり(Function Trace)することができます。各スタイルの詳細については、以下に説明するConfigurationエディタで設定状態を確認するか、もしくはヘルプを参照してください。【図11】サンプリングの種類を選択する
デフォルトのスタイルを選択する以外に、自分でサンプリングの設定を作成することもできます(図11の「My Config」)。ここではサンプリングの設定方法について簡単に説明します。
設定を変更したり新たに作成するには「Config」メニューの「Edit...」を選択し、Configuration Editorを開きます。(図12)
【図12】Configuration Editor
新しい設定を作成したい場合は適当な設定を選択して「Duplicate」で複製を作り、それを適当に変更します。完全に新しいものを作成することはできません。また「Rename」で名前の変更、「Delete」で削除します。
設定を作成したら次に左下のPlugInsから適当な機能を選択します。Java用、Samplerスタイル、MallocDebugスタイルなどさまざまな種類がありますが、ここではSharkの基本的な機能である「CHUDDataSource」(図13)について説明します。簡単にいえば、どういうタイミングでサンプリングを行うかをここで設定します。
【図13】CHUDDataSourceの設定
(1)Sample Trigger
サンプリングを行うタイミング(トリガー)を指定します。「Time」では指定した時間ごとに、「PMC Events」ではPMCイベント(6項参照)が発生するごとに、「chudRecordUserSample」ではコード内で関数chudRecordUserSample()が呼ばれるたびに、コールスタックを保存し、ブラウザやチャートなどで解析します。
(2)Fuzz
サンプリングするタイミングをランダムにずらすかどうかを指定します。時間ベースのサンプリングの場合、時間の経過と処理が同期して、偏った結果になる可能性もあります。そういう偏りを防ぐ必要がある場合、この項目を設定します。
(3)Start Delay
スタートボタンを押してから実際にサンプリングが始まるまでの遅れを指定します。
(4)Time Limit
サンプリングをスタートしてから、自動的にサンプリングを終了するまでの時間を指定します。
(5)Sample Limit
自動的にサンプリングを終了するサンプル数を指定します。1万であれば1万回サンプリングをしたら自動的に終了します。
(6)Record Callstacks
サンプリング時のコールスタックを記録しておくかどうかを指定します。
(7)Record Final Sample
わかりません。マニュアルにも記載が無いようです。