如何从 perf stat 的输出中解析指令数和经过时间
How to parse number of instructions and elapsed time from output of perf stat
TL;DR
有什么方法可以在提供 -x
时使 perf stat
输出时间过去?
背景
我执行了perf stat -e instructions:u make run
,输出结果贴在下面
Performance counter stats for 'make run':
53,781,961,288 instructions:u
2.802749955 seconds time elapsed
21.453244000 seconds user
0.249223000 seconds sys
我想解析指令数和经过的时间,所以我添加了-x
选项使输出以逗号分隔,相应的输出粘贴在下面。
53781782267,,instructions:u,20694056846,100.00,,
我注意到没有显示所有时间测量值,所以我检查了 perf help stat
的输出。在CSV FORMAT
部分,我发现run time of counter
、optional metric value
和optional unit of metric
可能与我的需求有关,但我想不通。
如果 (config->ru_display)
为真,"time elapsed" 从 tools/perf/util/stat-display.c
file 的 print_footer
函数打印出来。
但是当存在设置 csv_output.
的“-x ,
”选项时,print_footer
不会从 perf_evlist__print_counters
调用
if (!interval && !config->csv_output)
print_footer(config);
"user" / "sys" 次在 config->ru_data.ru_utime
和 ru_data.ru_stime
中 "seconds time elapsed" 是 config->walltime_nsecs_stats
.
的平均值
stat-display.c
中没有其他代码显示ru_data.ru_utime
、ru_data.ru_stime
或walltime_nsecs_stats
,所以在Linux内核版本4.20是不可能的以 CSV 模式从 perf stat 输出时间。
您可以修补 stat-display.c
文件以输出您需要的任何内容并编译 perf
(cd tools/perf; make
)。来自其他内核版本的 perf 工具将适用于任何 linux 内核。
TL;DR
有什么方法可以在提供 -x
时使 perf stat
输出时间过去?
背景
我执行了perf stat -e instructions:u make run
,输出结果贴在下面
Performance counter stats for 'make run':
53,781,961,288 instructions:u
2.802749955 seconds time elapsed
21.453244000 seconds user
0.249223000 seconds sys
我想解析指令数和经过的时间,所以我添加了-x
选项使输出以逗号分隔,相应的输出粘贴在下面。
53781782267,,instructions:u,20694056846,100.00,,
我注意到没有显示所有时间测量值,所以我检查了 perf help stat
的输出。在CSV FORMAT
部分,我发现run time of counter
、optional metric value
和optional unit of metric
可能与我的需求有关,但我想不通。
(config->ru_display)
为真,"time elapsed" 从 tools/perf/util/stat-display.c
file 的 print_footer
函数打印出来。
但是当存在设置 csv_output.
的“-x ,
”选项时,print_footer
不会从 perf_evlist__print_counters
调用
if (!interval && !config->csv_output)
print_footer(config);
"user" / "sys" 次在 config->ru_data.ru_utime
和 ru_data.ru_stime
中 "seconds time elapsed" 是 config->walltime_nsecs_stats
.
stat-display.c
中没有其他代码显示ru_data.ru_utime
、ru_data.ru_stime
或walltime_nsecs_stats
,所以在Linux内核版本4.20是不可能的以 CSV 模式从 perf stat 输出时间。
您可以修补 stat-display.c
文件以输出您需要的任何内容并编译 perf
(cd tools/perf; make
)。来自其他内核版本的 perf 工具将适用于任何 linux 内核。