perf使用示例1
perf使用示例1
perf - Performance analysis tools for Linux
Performance counters for Linux are a new kernel-based subsystem that provide a framework for all things performance analysis. It covers hardware level (CPU/PMU, Performance Monitoring Unit) features and software features (software counters, tracepoints) as well.
perf --help
perf help COMMAND 或 perf COMMAND -h
1.命令简要说明
perf list 命令可以列出所有能够触发 perf 采样点的事件
perf stat [-e <EVENT> | --event=EVENT] [-a] <command> or perf stat [-e <EVENT> | --event=EVENT] [-a] — <command> [<options>] 以概括精简的方式提供被调试程序运行的整体情况和汇总数据
perf top [-e <EVENT> | --event=EVENT] [<options>] 用于实时显示当前系统的性能统计信息
perf record [-e <EVENT> | --event=EVENT] [-l] [-a] <command>
perf -g report 显示调用关系
2.示例1
1)perf stat 命令用于统计进程总体的信息。task-clock:CPU 利用率,该值高,说明程序的多数时间花费在 CPU 计算上而非 IO。
2)perf top 命令可查看系统的实时信息,例如系统中最耗时的内核函数或某个用户进程。
3)perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果,以此可以找到热点。
perf record -e cpu-clock -g 给出函数的调用关系,以便于找到次级热点。
[dskong@tecsun perfs]$ cat test.c
//test.c
void longa()
{
int i,j;
for(i = 0; i < 1000000; i++)
j=i; //am I silly or crazy? I feel boring and desperate.
}
void foo2()
{
int i;
for(i=0 ; i < 10; i++)
longa();
}
void foo1()
{
int i;
for(i = 0; i< 100; i++)
longa();
}
int main(void)
{
foo1();
foo2();
}
[dskong@tecsun perfs]$ gcc -g test.c
[dskong@tecsun perfs]$ perf stat ./a.out
[dskong@tecsun perfs]$ perf record ./a.out
[dskong@tecsun perfs]$ perf report
[dskong@tecsun perfs]$ perf annotate
原文
http://whatot.github.io/pub/linux_program/perf%E7%AE%80%E4%BB%8B/
http://blog.chinaunix.net/uid-8350672-id-2984617.html
http://www.dskong.com/archives/223
http://www.pixelbeat.org/programming/profiling/