ftrace-based events(tracepoint-based / kprobe-based, uprobe-based / perf events)
这句之前理解还是有点问题,根据Linux kernel中有关events的头文件分类trace_events.h,perf_event.h,利用ftrace的events叫做trace event,分为静态的racepoint-based events,动态的kprobe-based / uprobe-based events。而perf events,其采集的数据用于performance measurement,最早利用的是硬件,所以原名perf counter,后来又有了软件实现的counter。
perf events参考:Linux wiki:perf tutorial
更新总结:
- kprobe、uprobe能够hook函数代码中的任意位置,一个用于kernel,一个用于application
- tracepoint是埋在代码中的静态hook点
- ftrace是框架,使用dynamic tracepoint,利用tracer处理数据,使用tracefs输出数据
- trace events是一种输出捕获得到的数据的模板,使用tracefs输出数据,根据数据的获取方式分为tracepoint-based events、kprobe-based events、uprobe-based events三类
- perf events采集到的数据用于衡量性能,亦发展称为一种框架
- USDT是用来trace ELF binary application的,用来trace解释型语言的是dynamic USDT