对于 ftrace 、tracepoint 、kprobe 等名词,简单地划分三个层次:
4+1 类:kprobe / uprobe / tracepoint / USDT / <基于硬件实现的计数器>
3 类机制:ftrace / perf_event_open() / eBPF
其中ftrace
又有tracer
,ftrace-based events
(tracepoint-based / kprobe-based, uprobe-based / perf events)
基于上述数据获取方式、传递手段实现的 systemtap,perf,bcc 等
自己写的 blog 原文:Linux 动态追踪工具一览
特别推荐的参考资料:
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
更新总结: