BLOG

Record, summarize, and improve.

linux kernel性能工具

http://www.brendangregg.com/blog/2015-07-08/choosing-a-linux-tracer.html

Image in a image block

linux kernel性能工具分类

跟踪tracing(嗅探snoop、事件记录event):

ftrace

将事件数据(tracepoint、kprobe)从内核态拷贝到用户态后进行处理,不够快

弱势是不可编程

systemtap

systemtap是将用户态的脚本语言翻译成C语言,之后将C代码编译成ko文件,以模块的形式插入到内核中,在内核态处理数据,缺点是模块权限过大,模块的bug可能导致kernel挂掉

弱势是需要内核调试信息

ebpf

ebpf是在内核中实现了一个虚拟机,由验证器、解释器、即时编译器JIT(Clang+LLVM)组成,验证器负责安全检查,之后脚本语言会被翻译成中间形式,通过即时编译器编译成机器码,相比systemtap更安全,只能使用定义好的一些kernel接口

LTTng

ktap

采样profile:开销相对跟踪来说小一点

perf

perf在ftrace的基础上新增了perf event事件和hardware事件,在software event中加入了采样法,比ftrace多了数据处理部分

优势是CPU 分析,弱势是使完整的堆栈和符号正常工作,不可编程