perf工具使用

perf介绍 perf 是一个强大的 Linux 性能分析工具,广泛用于分析程序的性能瓶颈,帮助开发者进行调优。perf 工具能够收集并分析多种硬件和软件事件,包括 CPU 的指令执行、缓存命中与失误、上下文切换等。 硬件事件驱:通过访问 CPU 的 PMU(性能监控单元)捕获硬件级事件,如 CPU 周期数、缓存命中/未命中、分支预测失败等。 采样与统计机制:采样模式,周期性记录程序执行状态,生成

function graph tracer原理

概述 Function graph相对function trace的不同点是,在函数入口会trace,在函数出口也会trace。 ksys_read ->vfs_read ->ftrace_caller ->prepare_ftrace_return ->function_graph_enter ->ftrace_push_return_trace(&trac

静态ftrace

上面章节主要描述的是动态ftrace,在早期还有静态ftrace。区别主要如下: - 动态ftrace与静态ftrace在编译参数方面静态编译使用的是参数“-pg”,而动态使用的是fpatchable-function-entry。 - 工具链使能“-pg”参数时,会在每个函数体前面插入_mcount函数。而动态ftrace会在函数入口(函数准备阶段前)插入nop指令。 - 静态ftrace插入的

动态function tracer原理

fpatchable-function-entry选项 编译时指定-fpatchable-function-entry=N,①会在函数入口第一个指令之前插入N个nop,但是会保留M个放到函数入口之前,如果省略M则默认为0;②同时需要一个特殊的-fpatchable-function-entry段来记录所有函数的入口,如下蓝色部分。nop指令保留了额外的空间,可用于在运行时修改nop指令,添

ftrace的使用

tracer irqsoff 当关闭中断时,CPU就无法响应中断了(NMI和SMI除外),无法响应外部事件做出反应。这会阻止定时器触发或鼠标中断触发,导致系统延迟。 irqsoff跟踪器跟踪中断被禁用的时间,当达到新的最大延迟时,跟踪器会保存导致该延迟点的跟踪,一边每次达到新的最大值,旧的保存的跟踪会被丢弃,新的跟踪会被保存。如果要重置最大值,用echo 0写到tracing_max_latenc

ftrace-概述

ftrace是一个内部跟踪器,用于帮助开发人员查找内核正在发生的事情,它可用于调试或分析用户空间之外发生的延迟和性能问题。ftrace从名称上看是function trace,函数跟踪器,但它实际并不限制函数跟踪,而是多个不同跟踪实用程序的框架。延迟跟踪可以检查在禁用和启用中断之间发生的情况,以及抢占和从唤醒任务到实际运行任务的时间。 ftrace最常见的用途之一是用于事件跟踪(event tra