perf profiling

2018-05-31  本文已影响197人  沉思故事

此文专门研究这篇文章
http://www.brendangregg.com/perf.html
它就是个perf大杂烩,信息量太大,慢慢看吧,以下是目录

image.png

要点

perf用三种方式进行instrument:

事件源

可用perf list来查看所有支持的事件

image.png

例子

cpu统计

image.png

IPC(instructions per cycle),高代表指令吞吐量大,低代表stalled cycle多;
要了解以上术语,需要学习cpu microarchitecture,文档可参考《Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3B: System Programming Guide, Part 2 》和《BIOS and Kernel Developer's Guide (BKDG) For AMD Family 10h Processors》;
硬件事件大多依赖于处理器模型,在虚拟机环境下很多事件不适用

关于raw counter,是需要自己通过查看intel/amd手册来自行指定

stat命令的有些选项如--repeat, --sync, --pre, and --post非常适合用于自动化测试和微benchmark

Timed profiling(sampling)

比如以下命令就是以频率99 Hertz (-F 99), 对整个系统CPU (-a, for all CPUs), 带上栈桢 (-g, for call graphs), 持续10s


image.png

99hz是为了避免和系统中一些周期性任务相冲突,可以选用更大的频率值如997以采集短暂的burst,但是开销也会大;

如果使用perf report --stdio,可以将perf record结果(下面这个结果是来自上面那个perf record命令,包括java程序,所以会complain在/tmp下找不到perf.map)显示在终端:

image.png

默认,左边的百分数是相对值,比如62.76%是相对于9.61%的,如果要用绝对比例,可以用-g(report的-g)

event profiling

这是由硬件触发的事件的profiling; 收集所有事件会造成太大开销,所以往往用-c来限制每多少次采集一次;
由于在硬件中断的读IP寄存器之间存储延迟,会导致采集出现偏差,用:p modifier可解决

静态kernel tracing

image.png

上述结果显示,有11次open调用,各有一次write,read调用

strace -c也可达到相当效果,但开销比perf大:

image.png

比如用
perf record -e sched:sched_process_exec -a可跟踪调用exec()的调用
sched:sched_process_fork可trace fork()
perf record -e syscalls:sys_enter_connect -a可分析connect()
perf record -e 'skb:consume_skb' -ag可trace socket buffer

dynamic tracing

是mysqld占了tcp_sendmsg的大块部分

另外,很显然指不指定行号,变量列表是不一样的,


image.png

scheduler 分析

perf sched 支持多种子命令record, map, latency, replay, script

eBPF

从linux 4.4开始支持BPF,它使得perf tracing可以编程化
目前最方便使用的方式是bcc python接口(http://www.brendangregg.com/ebpf.html)

flame graph(学习另作分享)

文章地址:http://www.brendangregg.com/flamegraphs.html
github tools:https://github.com/brendangregg/FlameGraph
cpu flame graph: http://www.brendangregg.com/FlameGraphs/cpuflamegraphs

java in flames

heat maps(学习另作分享)

https://cacm.acm.org/magazines/2010/7/95062-visualizing-system-latency/fulltext
http://www.brendangregg.com/blog/2014-07-01/perf-heat-maps.html

上一篇下一篇

猜你喜欢

热点阅读