コールスタック・レポート

インテル® VTune™ プロファイラーは、スタック収集が有効にされたユーザーモードのサンプリングとトレース収集、またはハードウェア・イベントベース・サンプリング収集中にコールスタック情報を収集します。callstacks レポートを使用して、ホットな関数がどのように呼び出されているか理解します。このレポートタイプは、大部分の CPU 時間を占有する関数からはじまる呼び出しシーケンスに注目しています。

-column オプションを使用して、コールスタックをフィルター処理し、特定のメトリックに焦点を当てることができます。次のように使用します。

vtune -report -callstacks -r r001ah -column="CPI Rate"

特定のレポートで利用可能なカラムのリストを表示するには、次のように入力します:vtune -report callstacks -r <result_dir> column=?

例 1: 項目を限定したコールスタック・レポート

次の例では、最新の解析結果から関数と関数スタックの数を 5 つに制限した、コールスタック・レポートを生成します。

vtune -report callstacks -limit 5

Windows*:

Function Function Stack CPU Time Module Function (Full) Source File Start Address -------------- ----------------- -------- ----------------- ------------------------------- ----------------- ------------- grid_intersect 5.436s analyze_locks.exe grid_intersect grid.cpp 0x40d340 intersect_objects 1.918s analyze_locks.exe intersect_objects(struct ray *) intersect.cpp 0x402840 shader 0s analyze_locks.exe shader(struct ray *) shade.cpp 0x404730 trace 0s analyze_locks.exe trace(struct ray *) trace_rest.cpp 0x402370 render_one_pixel 0s analyze_locks.exe render_one_pixel analyze_locks.cpp 0x401db0 ...

Linux*:

Function Function Stack CPU Time Module Function (Full) Source File Start Address -------------------- ----------------- -------- --------------------- ------------------------ ----------------- ------------- initialize_2D_buffer 22.746s tachyon_find_hotspots initialize_2D_buffer find_hotspots.cpp 0x4018f0 render_one_pixel 22.746s tachyon_find_hotspots render_one_pixel find_hotspots.cpp 0x401950 draw_trace 0s tachyon_find_hotspots draw_trace(void) find_hotspots.cpp 0x401d70 thread_trace 0s tachyon_find_hotspots thread_trace(thr_parms*) find_hotspots.cpp 0x401ef0 trace_shm 0s tachyon_find_hotspots trace_shm trace_rest.cpp 0x410a20 trace_region 0s tachyon_find_hotspots trace_region trace_rest.cpp 0x410aa0 rt_renderscene 0s tachyon_find_hotspots rt_renderscene(void*) api.cpp 0x402360 tachyon_video 0s tachyon_find_hotspots tachyon_video video.cpp 0x402240 main 0s tachyon_find_hotspots main video.cpp 0x4013e0 __libc_start_main 0s libc.so.6 __libc_start_main libc-start.c 0x21dd0 _start 0s tachyon_find_hotspots _start [Unknown] 0x40149c grid_intersect 7.282s tachyon_find_hotspots grid_intersect grid.cpp 0x408930 intersect_objects 2.756s tachyon_find_hotspots intersect_objects(ray*) intersect.cpp 0x40a400 shader 0s tachyon_find_hotspots shader(ray*) shade.cpp 0x40eae0 ...

例 2: コールスタック・グループによるコールスタック・レポート

この例では、関数呼び出しのスタックごとにグループ化された r001tr 結果の callstacks レポートを生成します。

vtune -report callstacks -r r001tr -group-by callstack

Windows*:

Function/Function Stack Wait Time Module Function (Full) ----------------------------------------- --------- ----------------- ----------------------------------------- tbb::internal::acquire_binsem_using_event 20.005s tbb.dll tbb::internal::acquire_binsem_using_event func@0x10003350 13.857s gdiplus.dll func@0x10003350 func@0x1000c1f0 0s gdiplus.dll func@0x1000c1f0 BaseThreadInitThunk 0s KERNEL32.DLL BaseThreadInitThunk func@0x6b2dacf0 0s ntdll.dll func@0x6b2dacf0 func@0x6b2daccf 0s ntdll.dll func@0x6b2daccf video::main_loop 10.111s analyze_locks.exe video::main_loop(void) main 0s analyze_locks.exe main WinMain 0s analyze_locks.exe WinMain _tmainCRTStartup 0s analyze_locks.exe _tmainCRTStartup [Unknown stack frame(s)] 0s [Unknown] [Unknown stack frame(s)] BaseThreadInitThunk 0s KERNEL32.DLL BaseThreadInitThunk func@0x6b2dacf0 0s ntdll.dll func@0x6b2dacf0 ...

Linux*:

Function/Function Stack Wait Time Module Function (Full) ------------------------------- --------- --------------------- ----------------------------------------------------------- draw_task::operator() 98.698s tachyon_analyze_locks draw_task::operator()(tbb::blocked_range<int> const&) const tbb::interface6::internal 0s tachyon_analyze_locks tbb::interface6::internal execute<tbb::interface6::internal 0s tachyon_analyze_locks execute::interface6::internal [TBB parallel_for on draw_task] 0s tachyon_analyze_locks tbb::interface6::internal::execute(void) [TBB Dispatch Loop] 0s libtbb.so.2 tbb::internal::local_wait_for_all(tbb::task&, tbb::task*) ...

関連情報