tools perf 工具

perf 工具概述

tools perf 工具用于快速生成指定可执行文件的火焰图输出。

perf 工具基础使用教程

tools perf 基础使用方式与 gdb 类似, 需要输入一个可执行文件及其该可执行文件的参数, 该工具将在当前目录下生成一个 perf.svg 文件(即火焰图, 可在浏览器中查看)

svg 文件生成指令如下:

# 在当前目录下生成 perf.svg 文件
tools perf RainaSynth -f demo.tcl

传输 svg 文件到 vdi 中进行查看

# 在 vdi(windows 系统) 的 cmd 中使用如下指令传输 svg 文件, 注意将 user@192.168.15.xx 替换为用户自己的 user@host
scp user@192.168.15.85:~/git/thor_core/Example/perf.svg C:\Users\vdiuser\Desktop

perf 工具基础使用示例

示例如下(以 echo 指令为例)

[root@edacoder85 Example]$ tools perf echo
2025-07-21 15:35:13.465 | INFO     | autotest.scripts.tools_scripts.perf:perf:27 - run perf: perf record --call-graph=dwarf --freq 100 -o perf.data echo.

[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.004 MB perf.data ]
2025-07-21 15:35:13.582 | INFO     | autotest.scripts.tools_scripts.perf:perf:29 - generate perf file.
2025-07-21 15:35:13.603 | INFO     | autotest.backend.perf:run_perf_script:98 - run perf script finish.
2025-07-21 15:35:13.604 | INFO     | autotest.scripts.tools_scripts.perf:perf:31 - generate svg file.
2025-07-21 15:35:13.604 | DEBUG    | autotest.backend.perf:run_FlameGraph:108 - run perf cmd: /share1/software/FlameGraph/stackcollapse-perf.pl perf.perf
2025-07-21 15:35:13.623 | DEBUG    | autotest.backend.perf:run_FlameGraph:127 - run perf cmd: /share1/software/FlameGraph/flamegraph.pl perf.folded

同样的, tools perf 可用于监测 RainaSynth 工具的性能并输出火焰图

# 在 thor_core/Example 目录下执行 tools perf 工具
[root@edacoder85 Example]$ tools perf ../bin/RainaSynth -f demo.tcl

# 输出较多, 不予展示
...

[ perf record: Woken up 18 times to write data ]
[ perf record: Captured and wrote 4.541 MB perf.data (555 samples) ]
2025-07-21 15:10:14.667 | INFO     | autotest.backend.perf:run_perf_script:98 - run perf script finish.
2025-07-21 15:10:14.668 | DEBUG    | autotest.backend.perf:run_FlameGraph:108 - run perf cmd: /share1/software/FlameGraph/stackcollapse-perf.pl perf.perf
2025-07-21 15:10:14.727 | DEBUG    | autotest.backend.perf:run_FlameGraph:127 - run perf cmd: /share1/software/FlameGraph/flamegraph.pl perf.folded
2025-07-21 15:10:14.830 | INFO     | autotest.backend.perf:run_FlameGraph:139 - run FlameGraph finish.

# 生成一个 svg 文件, 可使用 scp 将其传输到 vdi 中, 在浏览器上进行查看
[root@edacoder85 Example]$ ll perf.svg
-rw-rw-r-- 1 tanlinfeng tanlinfeng 579 Jul 21 15:35 perf.svg

tools perf 工具的 help 文档

[root@edacoder85 test]$ tools perf --help
Usage: tools perf [OPTIONS] EXECUTION [ARGS]...

run execution perf

Options:
--help  Show this message and exit.

--EXECUTION 参数

用于指定生成火焰图的可执行文件, 如 ls / echo / RainaSynth 等, 一般建议使用带调试信息的可执行文件(如 debug 版本的 RainaSynth)

# eg: 生成 echo 指令的火焰图
tools perf echo "xxx"

# eg: 生成 ls 指令的火焰图
tools perf ls

# eg: 生成 RainaSynth 工具的火焰图
tools perf RainaSynth -f test.tcl

--ARGS 参数

用于 EXECUTION 的参数, 如 RainaSynth 的 -f xxx.tcl 参数, python 要执行的脚本名等.

# eg: 生成 RainaSynth 工具的火焰图
tools perf RainaSynth -f test.tcl

# eg: 生成 python 执行脚本 script.py 的火焰图
tools perf python3 script.py