北京网站推广seo优化,商城网站建设模板,wordpress菜单扩展,基础建设图片文章目录 ftrace 介绍trace-cmd 介绍trace-cmd 常用跟踪事件ftrace 与 trace-cmd 关系ftrace 编译依赖 ftrace 介绍
ftrace 是 Linux 内核中的一个跟踪工具#xff0c;主要用于帮助开发者分析和调试内核的行为。ftrace 的名字来源于 “function tracer”#xff0c;它最初是… 文章目录 ftrace 介绍trace-cmd 介绍trace-cmd 常用跟踪事件ftrace 与 trace-cmd 关系ftrace 编译依赖 ftrace 介绍
ftrace 是 Linux 内核中的一个跟踪工具主要用于帮助开发者分析和调试内核的行为。ftrace 的名字来源于 “function tracer”它最初是用于跟踪内核函数调用的但现在已经发展成一个功能强大的通用跟踪框架可以跟踪函数调用、调度事件、中断、定时器、内存映射等各种内核事件。
下面是一些使用 ftrace 的基本示例
查看当前可用的跟踪器
$ cat /sys/kernel/debug/tracing/available_tracers启用 function_graph 跟踪器用于跟踪函数调用图
$ echo function_graph /sys/kernel/debug/tracing/current_tracer查看跟踪结果
$ cat /sys/kernel/debug/tracing/trace关闭当前跟踪器
$ echo nop /sys/kernel/debug/tracing/current_tracer注意使用 ftrace 需要相应的权限通常需要 root 权限。
trace-cmd 介绍
trace-cmd 是一个由 Steven Rostedt 维护的用于控制和使用 Ftrace 的工具它是 Linux 中包含的一个低开销的内核跟踪系统。
使用 trace-cmd你可以启动和停止内核跟踪保存和读取跟踪结果以及列出可用的跟踪选项。
以下是一些基本的 trace-cmd 使用示例
开始跟踪
$ trace-cmd start -e sched_switch这条命令开始跟踪调度器切换事件sched_switch。
停止跟踪并保存结果
$ trace-cmd stop
$ trace-cmd extract -o my_trace.dat首先停止跟踪然后将跟踪结果保存到文件 my_trace.dat 中。
读取跟踪结果
$ trace-cmd report my_trace.dat这条命令将读取并打印出跟踪文件 my_trace.dat 中的内容。
以上就是一些基本的 trace-cmd 使用方法。trace-cmd 还有很多其他的功能和选项你可以通过阅读 trace-cmd 的 man 手册或者 trace-cmd --help 来学习更多。
trace-cmd 常用跟踪事件
下面列出了一些常用的跟踪事件
sched_switch这个事件记录了进程切换的信息包括旧进程的 PID、新进程的 PID、以及他们的优先级等
block_rq_issue/block_rq_complete这些事件记录了块设备请求的发出和完成
irq_handler_entry/irq_handler_exit这些事件记录了中断处理程序的入口和退出
softirq_entry/softirq_exit/softirq_raise这些事件记录了软中断的情况 以下是如何使用 trace-cmd 跟踪这些事件的示例
跟踪调度器切换事件
$ trace-cmd record -e sched:sched_switch该命令将开始记录 sched_switch 事件。你可以在此后执行你需要跟踪的操作。然后使用 trace-cmd report 命令查看记录的事件。
跟踪块设备请求
$ trace-cmd record -e block:block_rq_issue -e block:block_rq_complete这个命令将记录块设备请求的发出和完成事件。同样你可以使用 trace-cmd report 命令查看记录的事件。
跟踪中断处理
$ trace-cmd record -e irq:irq_handler_entry -e irq:irq_handler_exit这个命令将记录中断处理程序的入口和退出事件。使用 trace-cmd report 命令来查看记录的事件。
跟踪软中断
$ trace-cmd record -e softirq:softirq_entry -e softirq:softirq_exit -e softirq:softirq_raise这个命令将记录软中断的入口、退出和触发事件。查看记录的事件可以使用 trace-cmd report 命令。
ftrace 与 trace-cmd 关系
ftrace 和 trace-cmd 都是 Linux 内核提供的跟踪工具但是使用方式和便利程度有所不同。
ftrace 是内核中的一个特性它提供了一个文件系统接口位于 /sys/kernel/debug/tracing/可以通过读写这些文件来控制跟踪和查看跟踪结果。虽然 ftrace 功能强大但是直接使用还是有些复杂需要对内核的跟踪机制有一定了解。
trace-cmd 则是一个命令行工具它对 ftrace 的接口进行了封装提供了一种更简单易用的方式来使用 ftrace。使用 trace-cmd你可以更方便地启动和停止跟踪、保存和读取跟踪结果以及查看可用的跟踪选项。
总的来说trace-cmd 提供了一种更用户友好的方式来使用 ftrace。如果你想要使用 ftrace但又不想直接处理底层的文件系统接口那么 trace-cmd 是一个很好的选择。
ftrace 编译依赖
启用和使用 ftrace 功能需要在编译 Linux 内核时开启对应的选项。
具体来说你需要在内核配置.config 文件中开启以下选项
CONFIG_FTRACE这是 ftrace 的基本选项必须开启CONFIG_FUNCTION_TRACER这个选项用于启用函数跟踪器也就是原始的 ftrace 功能。如果你想要跟踪内核函数的执行需要开启这个选项CONFIG_FUNCTION_GRAPH_TRACER这个选项用于启用函数图跟踪器这个跟踪器可以在函数级别跟踪内核的执行流程包括函数的调用和返回CONFIG_DYNAMIC_FTRACE这个选项用于启用动态函数跟踪这个功能可以在运行时动态地开启或关闭特定函数的跟踪 其他 CONFIG_*_EVENTS 选项这些选项用于启用特定类型的事件跟踪比如调度事件、中断事件、内存映射事件等。
在配置好这些选项后你需要重新编译和安装内核。安装新内核后重启系统ftrace 功能应该就可以使用了。