インテル® VTune™ プロファイラーは、スタック収集が有効にされたユーザーモードのサンプリングとトレース収集、またはハードウェア・イベントベース・サンプリング収集中にコールスタック情報を収集します。callstacks レポートを使用して、ホットな関数がどのように呼び出されているか理解します。このレポートタイプは、大部分の CPU 時間を占有する関数からはじまる呼び出しシーケンスに注目しています。
-column オプションを使用して、コールスタックをフィルター処理し、特定のメトリックに焦点を当てることができます。次のように使用します。
vtune -report -callstacks -r r001ah -column="CPI Rate"
コールスタック・レポートに使用できるカラムリストを表示するには、次のように入力します。vtune -report callstacks -r <result_dir> column=?
例 1: 項目を限定したコールスタック・レポート
次の例では、最新の解析結果から関数と関数スタックの数を 5 つに制限した、callstacks レポートを生成します。
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
const&) const
tbb::interface6::internal 0s tachyon_analyze_locks tbb::interface6::internal
execute