ftrace工具学习笔记

ftrace是一个功能强大的Linux内核跟踪工具,可用于分析内核的行为和性能问题。它可以用来收集各种内核跟踪数据,如函数调用、内存分配、中断处理等。以下是ftrace的一些主要特点和用法:

ftrace是内核自带的跟踪工具,因此无需安装。要启用ftrace,需要在内核编译时启用CONFIG_FUNCTION_TRACER配置选项。可以使用以下命令检查内核是否支持ftrace:

cat /boot/config-$(uname -r) | grep CONFIG_FUNCTION_TRACE

如果输出结果包含"=y"或"=m",则表示内核支持ftrace。

在这里插入图片描述

在/sys/kernel/debug/tracing目录下提供了各种跟踪器和事件:

在这里插入图片描述

在这里插入图片描述

可用的ftrace跟踪器:

在这里插入图片描述

在这里插入图片描述

使用方法:

cd /sys/kernel/debug/tracing
/* 关闭function-trace可用减少一些延迟:echo 0 > options/function-trace
   可以设置要跟踪的进程:
   	 cat set_ftrace_pid					查看当前指定跟踪的进程
   	 echo 进程的PID > set_ftrace_pid	  指定要跟踪的进程
   	 cat set_ftrace_pid					查看是否指定成功
*/
echo 跟踪器 > current_tracer
echo 1 > tracing_on
// ...等待一会
echo 0 > tracing_on
cat trace

动态ftrace:

若在配置内核时打开了CONFIG_DYNAMIC_FTRACE选项,就可以使用动态ftrace功能

set_ftrace_filter:设置要跟踪的 函数

set_ftrace_notrace:指定不要跟踪的函数

available_filter_functions 文件可以列出当前系统支持的所有函数

“>”表示覆盖过滤器的内容,“>>”表示把新函数添加到过滤器中,但不会覆盖

eg:通过以下代码可以只关注sys_nanosleep()和hrtimer_interrupt()这两个函数:

cd /sys/kernel/debug/tracing
echo sys_nanosleep hrtimer_interrupt > set_ftrace_filter
echo function > current_tracer
echo 1 > tracing_on
usleep 1
echo 0 > tracing_on
cat trace

事件跟踪:

要在available_events文件中查找该跟踪点是否存在,然后把想要跟踪的事件添加到set_event文件中即可。eg:

cd /sys/kernel/debug/tracing
cat available_events | grep sched_stat_runtime		// 查询系统是否支持跟踪点
echo sched:sched_stat_runtime > set_event			// 跟踪找个事件
echo function > current_tracer
echo 1 > tracing_on
// ...等待一会
echo 0 > tracing_on
cat trace

可以使用类似于C语言的表达式对事件进行过滤,对于数字域支持“==、!=、<、<=、>、>=、&”操作符,对于字符串域支持“==、!=、~”操作符。eg:

cd /sys/kernel/debug/tracing/events/sched/sched_stat_runtime
echo 'comm ~ "sh*"' > filter 		//跟踪以sh开头的所有进程
echo  'pid == 725' > filter			//跟踪进程PID为725的进程
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值