宋宝华:关于Ftrace的一个完整案例

本文通过一个具体的例子,深入探讨了Ftrace在系统性能分析中的应用,详细介绍了如何使用Ftrace进行追踪和分析,揭示了其在理解内核行为上的重要作用。
摘要由CSDN通过智能技术生成

本文目录

Ftrace简介
Ftrace案例
Ftrace结果怎么读?
vim进行Ftrace折叠

Ftrace简介

Ftrace是Linux进行代码级实践分析最有效的工具之一,比如我们进行一个系统调用,出来的时间过长,我们想知道时间花哪里去了,利用Ftrace就可以追踪到一级级的时间分布。

Ftrace案例

写一个proc模块,包含一个proc的读和写的入口。test_proc_show()故意调用了一个kill_time()的函数,而kill_time()的函数,又调用了mdelay(2)和kill_moretime()的函数,该函数体内调用mdelay(2)。

kill_time()的函数和kill_moretime()函数前面都加了noinline以避免被编译器inline优化掉。

#include <linux/module.h>

#include <linux/kernel.h>

#include <linux/init.h>

#include <linux/version.h>

#include <linux/proc_fs.h>

#include <linux/seq_file.h>

#include <linux/delay.h>

#include <linux/uaccess.h>


static unsigned int variable;

static struct proc_dir_entry *test_dir, *test_entry;


  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Linux内核中,ftrace是一种跟踪工具,它允许开发人员在内核中跟踪函数调用和性能问题。在加载使用ftrace的内核模块时,如果出现“Module ftrace not found”的错误提示,通常是因为该模块依赖于ftrace并且ftrace模块未加载。 要解决这个问题,你可以按照以下步骤进行: 1. 确认你的Linux内核版本支持ftrace模块,可以通过以下命令检查: ``` $ cat /proc/config.gz | gunzip | grep CONFIG_DYNAMIC_FTRACE ``` 如果输出结果为“CONFIG_DYNAMIC_FTRACE=y”,则该内核版本支持ftrace模块。 2. 确认ftrace模块是否存在于/lib/modules/$(uname -r)/kernel/目录中,可以通过以下命令检查: ``` $ ls /lib/modules/$(uname -r)/kernel/kernel/trace/ ``` 如果输出结果中包含ftrace.ko文件,则ftrace模块已经存在于该目录中。 3. 如果ftrace模块不存在,你需要手动编译内核并启用ftrace模块。可以按照以下步骤进行: a. 下载相应的内核源代码,可以从内核官网下载,也可以使用命令行下载,例如: ``` $ sudo apt-get install linux-source ``` b. 解压内核源代码,进入源代码目录。 c. 启用ftrace模块,在.config文件中添加以下内容: ``` CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_TRACING=y CONFIG_FTRACE=y CONFIG_MODULES=y ``` d. 编译内核,并安装编译后的内核。 4. 如果以上步骤仍然无法解决问题,你可以尝试在模块加载时手动加载ftrace模块: ``` $ sudo modprobe ftrace ``` 然后再加载你需要的模块,看是否能够正常加载。 希望这些步骤可以帮助你解决问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值