http://www.brendangregg.com/blog/2015-07-08/choosing-a-linux-tracer.html
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 分析,弱势是使完整的堆栈和符号正常工作,不可编程