首页 > 解决方案 > 如何解释性能脚本输出

问题描述

我正在尝试创建一个类似于flamegraph的工具,但使用不同的前端。我在理解 perf-script 的输出时遇到了一些问题。

首先,我用 记录perf数据perf record -a -g -o /my/output/file.data,如果我理解正确的perf工作原理,这将每隔一定时间采样一次,然后查看当时 IP 的位置。

然后我用 生成 perf-script 输出(我打算解析的那个)perf script -i /my/input/file.data --fields trace:comm,pid,tid,cpu,time,event,ip,sym,dso,trace,我得到以下输出:

...
swapper     0 [000] 22925.999132:      68882 cycles: 
        ffffffffa9311275 rcu_prepare_for_idle+0x5 ([kernel.kallsyms])
        ffffffffa93131be rcu_irq_exit+0x6e ([kernel.kallsyms])
        ffffffffa9c01d4f call_function_single_interrupt+0xf ([kernel.kallsyms])
        ffffffffa99060d4 cpuidle_enter_state+0xc4 ([kernel.kallsyms])
        ffffffffa99064d9 cpuidle_enter+0x29 ([kernel.kallsyms])
        ffffffffa92c431e do_idle+0x1de ([kernel.kallsyms])
        ffffffffa92c4559 cpu_startup_entry+0x19 ([kernel.kallsyms])
        ffffffffaa91617b start_kernel+0x58c ([kernel.kallsyms])
        ffffffffa92000d4 secondary_startup_64+0xa4 ([kernel.kallsyms])
...

我不明白时间 ( 22925.999132) 是什么意思。

我也不明白循环计数器的含义,一开始我以为是函数执行了多长时间,但如果只是对IP进行采样,那么拥有这些信息是没有意义的。

标签: clinux-kernelperf

解决方案


推荐阅读