Fork me on GitHub
侧边栏

随笔分类 -  Tracing / ftrace

摘要:# tracer: nop # # entries-in-buffer/entries-written: 30624/30624 #P:4 # # _ > irqs-off # / _ > need-resched # | / _ > hardirq/softirq # || / _ > preem 阅读全文
posted @ 2025-09-29 21:43 yooooooo 阅读(34) 评论(0) 推荐(0)
摘要:要获取 ftrace events(函数跟踪事件),你可以通过以下几种方式来查看和使用它们: ✅ 方法一:查看当前系统支持的 ftrace events 你可以通过以下命令查看系统中所有可用的 ftrace 事件: cat /sys/kernel/debug/tracing/available_ev 阅读全文
posted @ 2025-06-06 11:50 yooooooo 阅读(133) 评论(0) 推荐(0)
摘要:内联函数(inline functions)通常是由编译器在编译时将函数的代码直接插入到每个调用点,而不是通过函数调用的方式执行。这意味着内联函数的代码在编译后不会像普通函数那样有一个单独的入口地址。因此,当使用像ftrace这样的基于函数入口点的跟踪工具时,内联函数就无法被直接跟踪,因为它们没有可 阅读全文
posted @ 2024-10-11 17:49 yooooooo 阅读(63) 评论(0) 推荐(0)
摘要:/sys/kernel/debug/tracing/options/irq_info 是 ftrace 中的一个选项,用于启用或禁用有关中断的详细信息的跟踪。 options/irq_info 的具体作用: 1. 启用 IRQ 信息跟踪: 当启用 irq_info 时,ftrace 将捕获与中断相关 阅读全文
posted @ 2024-09-27 11:28 yooooooo 阅读(98) 评论(0) 推荐(0)
摘要:ftrace 中的 trace_options 选项用于控制追踪数据的收集和显示方式。你可以通过 /sys/kernel/debug/tracing/trace_options 文件来设置这些选项。每个选项代表了不同的追踪行为或输出格式。以下是一些常见的 trace_options 选项及其含义: 阅读全文
posted @ 2024-08-08 21:58 yooooooo 阅读(186) 评论(0) 推荐(0)
摘要:查找Kernel启动阶段的延时原因 1.确保内核配置了如下选项 CONFIG_FTRACE: "Tracers" CONFIG_FUNCTION_TRACER: "Kernel Function Tracer" CONFIG_FUNCTION_GRAPH_TRACER: "Kernel Functi 阅读全文
posted @ 2024-08-02 22:44 yooooooo 阅读(95) 评论(0) 推荐(0)
摘要:1 前言 本文为 Ftrace 系列文章第二篇,描述 Ftrace 进阶用法。上一篇文章中我们接触到了 Ftrace 基本概念,知道了如何 trace 一个函数,知道了如何 enable 一个 trace event。 同时,上一篇文章也遗留了几个问题: 如何跟踪某个进程?如何跟踪一个命令,但是这个 阅读全文
posted @ 2024-08-02 22:35 yooooooo 阅读(293) 评论(0) 推荐(0)
摘要:启动阶段使能event trace 同上,配置commandline: trace_event=sched:*,workqueue:*,irq:*,power:cpu_frequency_limits,power:cpu_frequency,power:cpu_idle,thermal:* trac 阅读全文
posted @ 2024-07-14 10:50 yooooooo 阅读(139) 评论(0) 推荐(0)
摘要:简介 高通 ramdump 可以解析出 ftrace,方便用于追踪 快省稳 问题。 kernelshark 是一个可以查看 trace event 的图形化工具,方便梳理和观察内核微观行为。 trace-cmd 是设置读取 ftrace 的命令行工具,kernelshark既可以记录数据,也可以图形 阅读全文
posted @ 2024-07-14 10:45 yooooooo 阅读(684) 评论(0) 推荐(0)
摘要:之前介绍通过命令行配置和使用ftrace功能,但是实际中,我们也会希望抓C/C++程序中某段代码的调度情况。笔者前不久就遇到这种问题,某个函数调用时延概率超过100ms,是为什么?这时候就需要在他们代码中使能ftrace抓执行此函数时候,任务的调度情况。 观察某段代码执行过程中的情况,ftrace提 阅读全文
posted @ 2023-10-10 10:14 yooooooo 阅读(186) 评论(0) 推荐(0)
摘要:当中断被关闭(俗称关中断)了,CPU就不能响应其他的事件,如果这时有一个鼠标中断,要在下一次开中断时才能响应这个鼠标中断,这段延迟称为中断延迟。向current_tracer 文件写入 irqsoff字符串即可打开irqsoff来跟踪中断延迟。 [root@linux tracing]# pwd / 阅读全文
posted @ 2023-06-05 20:10 yooooooo 阅读(400) 评论(0) 推荐(0)
摘要:一 用途 (1)function 主要用于跟踪内核函数的调用栈(其被调用过程) (2)function_graph 主要用于跟踪内核函数内部调用流程及耗时 这两个对内核性能分析的作用不大,主要用来梳理内核模块的逻辑 二 使用 (1)function 使用 /sys/kernel/debug/trac 阅读全文
posted @ 2023-03-01 12:18 yooooooo 阅读(1405) 评论(0) 推荐(0)
摘要:trace-cmd是设置读取ftrace的命令行工具,kernelshark既可以记录数据,也可以图形化分析结果。 trace-cmd和kernelshark源码都由kernel.org维护在trace-cmd.git。 kernekshark还有自己的帮助网站 kernelshark.org。 1 阅读全文
posted @ 2022-12-29 23:20 yooooooo 阅读(1018) 评论(0) 推荐(0)
摘要:引言 由于android开发的需要与systrace的普及,现在大家在进行性能与功耗分析时候,经常会用到systrace跟pefetto. 而systrace就是基于内核的event tracing来实现的。以如下的一段pefetto为例。可以看到tid=1845的线程,在被唤醒到CPU5上之后,在 阅读全文
posted @ 2022-09-11 16:09 yooooooo 阅读(287) 评论(0) 推荐(0)
摘要:Ftrace设计作为一个内部的tracer提供给系统的开发者和设计者,帮助他们弄清kernel正在发生的行为,它能够调式分析延迟和性能问题。对于前一章节,我们学习了Ftrace发展到现在已经不仅仅是作为一个function tracer了,它实际上成为了一个通用的trace工具的框架 一方面已经从f 阅读全文
posted @ 2022-08-23 10:58 yooooooo 阅读(1007) 评论(0) 推荐(0)
摘要:arm64 栈帧结构 arm64 有31个通用寄存器 r0-r30,用法分别如下: 寄存器 意义 SP Stack Pointer: 栈指针 r30 Link Register: 在调用函数时候,保存下一条要执行指令的地址 r29 Frame Pointer:保存函数栈的基地址 r28...r19 阅读全文
posted @ 2022-08-20 22:03 yooooooo 阅读(796) 评论(0) 推荐(0)
摘要:对于ftrace架构,主要来了解下内核是如何实现的,其主要包括如下内容: ring buffer的原理和代码分析 tracer(function、function_graph、irq_off)原理和代码分析 trace event 1. ring Buffer Ringbuffer是trace32框 阅读全文
posted @ 2022-08-17 21:59 yooooooo 阅读(473) 评论(0) 推荐(0)
摘要:Ftrace简介 Ftrace是Linux进行代码级实践分析最有效的工具之一,比如我们进行一个系统调用,出来的时间过长,我们想知道时间花哪里去了,利用Ftrace就可以追踪到一级级的时间分布。 Ftrace案例 写一个proc模块,包含一个proc的读和写的入口。test_proc_show()故意 阅读全文
posted @ 2018-12-31 17:58 yooooooo 阅读(969) 评论(0) 推荐(0)