![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
性能分析
文章平均质量分 96
奇小葩
学习,思考,总结
展开
-
深入ftrace uprobe原理和功能介绍
上一章我们学习了,kprobe 可以实现动态内核的注入,基于中断的方法在任意指令中插入追踪代码,并且通过 pre_handler/post_handler去接收回调。另一个 kprobe 的同族是,只不过是针对函数级别的内核监控,根据用户注册时提供的和来分别在函数进入时和返回前进行回调。本章的我们来学习uprobe ,顾名思义,相对于内核函数/地址的监控,主要用于用户态函数/地址的监控。听起来是不是有点神奇,内核怎么监控用户态函数的调用呢?原创 2022-11-24 08:34:19 · 4460 阅读 · 2 评论 -
深入ftrace kprobe原理解析
至此,我们知道Kprobe实现的本质是breakpoint和single-step的结合,这一点和大多数调试工具一样,比如kgdb/gdb。当 kprobe 被注册后,内核会将对应地址的指令进行拷贝并替换为断点指令(比如 X86 中的int 3)随后当内核执行到对应地址时,中断会被触发从而执行流程会被重定向到我们注册的函数当对应地址的原始指令执行完后,内核会再次执行从而实现指令级别的内核动态监控。也就是说,kprobe 不仅可以跟踪任意带有符号的内核函数,也可以跟踪函数中间的任意指令。原创 2022-11-20 22:45:59 · 3330 阅读 · 0 评论 -
深入ftrace function graph原理
我们了解了 ftrace 的两个核心机制 – 动态函数跟踪、动态函数图跟踪,二者分别向用户提供、接口来注册对函数进行跟踪以及对函数入口和返回进行跟踪的跟踪函数。最后我们以一张 ftrace 的架构图来结束本文。原创 2022-11-15 23:10:54 · 1720 阅读 · 2 评论 -
深入ftrace function原理
到此我们已经分析完了ftrace的各个阶段的行为,以及钩子函数的替换过程,基本上包含如下过程:编译阶段。通过编译选项 -pg -mrecord-mcount 在每个支持ftrace的函数中插入bl 0 指令链接阶段。会根据重定位段将bl 0 指令地址重定位为_mcount函数地址。运行阶段(1)ftrace_init:会将可trace函数中的bl _mcount替换为nop指令;原创 2022-11-11 22:13:51 · 1805 阅读 · 1 评论 -
linux性能工具--ftrace使用
Ftrace设计作为一个内部的tracer提供给系统的开发者和设计者,帮助他们弄清kernel正在发生的行为,它能够调式分析延迟和性能问题。对于前一章节,我们学习了Ftrace发展到现在已经不仅仅是作为一个function tracer了,它实际上成为了一个通用的trace工具的框架一方面已经从function tracer扩展到irqsoff tracer、preemptoff tracer另一方面静态的trace event也成为trace的一个重要组成部分通过前面两节的学习,我们知道了什么是原创 2021-08-11 21:38:55 · 8761 阅读 · 2 评论 -
linux性能工具--ftrace框架
对于ftrace架构,主要来了解下内核是如何实现的,其主要包括如下内容:ring buffer的原理和代码分析tracer(function、function_graph、irq_off)原理和代码分析trace event1. ring BufferRingbuffer是trace32框架的一个基础,所有的trace原始数据都是通过Ring Buffer记录的,其主要有以下几个作用:存储在内存中,速度非常快,对系统的性能影响降到最低的水平ring结构,可以循环写,安全而不浪费内存空原创 2021-08-08 22:33:11 · 1359 阅读 · 0 评论 -
linux性能工具--ftrace基础篇
我们做内核开发的时候,我们经常要去跟踪linux内核的函数调用关系,对于我们来说ftrace是一个十分好用的工具,值得我们好好学习。ftrace不只是一个函数跟踪工具,它的跟踪能力之强大,还能调试和分析诸如延迟、意外代码路径、性能问题等一大堆问题。它也是一种很好的学习工具。本章的主要是学习:ftrace是什么ftrace来解决什么问题1 什么是ftrace首先,在学习ftrace之前,我们要知道它是什么?根据linux ftrace的详细介绍,ftrace是一个linux内部的一个trace工原创 2021-08-05 21:01:51 · 3925 阅读 · 1 评论