.. _tools-perf: tools perf 工具 ====================== .. toctree:: :maxdepth: 1 perf 工具概述 :::::::::::::::: tools perf 工具用于快速生成指定可执行文件的火焰图输出。 perf 工具基础使用教程 ::::::::::::::::::::::::: tools perf 基础使用方式与 gdb 类似, 需要输入一个可执行文件及其该可执行文件的参数, 该工具将在当前目录下生成一个 perf.svg 文件(即火焰图, 可在浏览器中查看) svg 文件生成指令如下: .. code:: bash # 在当前目录下生成 perf.svg 文件 tools perf RainaSynth -f demo.tcl 传输 svg 文件到 vdi 中进行查看 .. code:: bash # 在 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 指令为例) .. code:: bash [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 工具的性能并输出火焰图 .. code:: bash # 在 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 文档 ::::::::::::::::::::::::::::::::::: .. code:: bash [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) .. code:: # 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 要执行的脚本名等. .. code:: # eg: 生成 RainaSynth 工具的火焰图 tools perf RainaSynth -f test.tcl # eg: 生成 python 执行脚本 script.py 的火焰图 tools perf python3 script.py