ftrace、perf、bcc、bpftrace、ply、simple_perf如何灵活运用?
摘要:目录参考Ftrace经典用法function_graphtrace_event时间延迟标志histtrace_optionperf-toolstrace-cmd参考事件列举函数图示跟踪函数跟踪事件跟踪远程kernelsharkkprobeu
目录参考Ftrace经典用法function_graphtrace_event时间延迟标志histtrace_optionperf-toolstrace-cmd参考事件列举函数图示跟踪函数跟踪事件跟踪远程kernelsharkkprobeuprobeeBPFbpftraceplyBCCsimpleperfperf参考perf_event_open学习火焰图perf statperf kvmperf traceperf ftraceperf probe的使用perf sched使用getdelayssurftraceSystemtapstapbpfDtraceuftraceutraceSystrace/PerfettoLTTngTrace CompassB站某UP主写的profile工具,可以学习一下
参考
https://www.brendangregg.com
Linux Performance
https://github.com/iovisor/bcc/blob/master/docs/tutorial.md
https://github.com/iovisor/bpftrace/blob/master/docs/reference_guide.md
采用了eBPF技术的项目
Linux Performance框图
影响程序性能的几个关键因素
https://blog.csdn.net/rikeyone/category_10317059.html
linux内核调试追踪技术20讲
Dive into BPF: a list of reading material
perf性能分析工具使用分享
深入字节版atop: 线上系统的性能监控实践
Linux tracing/profiling 基础:符号表、调用栈、perf/bpftrace 示例等(2022)
Linux tracing systems & how they fit together
https://jvns.ca/#linux-debugging---tracing-tools
trace专栏
boot time tracing 和 bootconfig
Ftrace
参考
https://www.kernel.org/doc/html/latest/trace/ftrace.html#ftrace-function-tracer
https://www.kernel.org/doc/html/latest/trace/ftrace.html
Linux内核 eBPF基础:ftrace源码分析:过滤函数和开启追踪
Linux内核 eBPF基础:ftrace基础-ftrace_init初始化
Linux启动时追踪
Debugging the kernel using Ftrace - part 1
Debugging the kernel using Ftrace - part 2
Secrets of the Ftrace function tracer
openEuler kernel技术分享-第13期-ftrace框架及指令修改机制
ftrace源码实现 —— 跟踪器的实现
经典用法
function_graph
获取某个进程调用sys_open的调用栈
运行要trace的程序,然后在调用open之前挺住,接着执行下面的命令,最后接着执行程序
echo function_graph > /sys/kernel/debug/tracing/current_tracer
echo *sys_open > /sys/kernel/debug/tracing/set_graph_function
#echo 1 > /sys/kernel/debug/tracing/options/funcgraph-tail
echo <pid> > /sys/kernel/debug/tracing/set_ftrace_pid
echo 0 > /sys/kernel/debug/tracing/tracing_on
echo > /sys/kernel/debug/tracing/trace
echo 3 > /proc/sys/vm/drop_caches
echo 1 > /sys/kernel/debug/tracing/tracing_on
然后执行下面的命令导出trace:
echo 0 > /sys/kernel/debug/tracing/tracing_on
cat /sys/kernel/debug/tracing/trace > trace.l
