Skip to content

Yuki-Nagori/my-flamegraph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

火焰图性能分析工具

本目录包含用于生成火焰图的自动化工具,支持同时记录CPU和内存分配。

文件说明

  1. generic_profiler.py - 基于配置文件的通用分析器
  2. projects.yaml - 项目配置文件
  3. flamegraph_analyzer.py - 整合的火焰图数据分析器
  4. run_analysis.sh - 交互式火焰图分析自动化脚本(支持菜单选择)

快速开始

1. 安装依赖

  • dtrace (macOS系统自带)
  • FlameGraph工具集 (推荐clone在 ~/git/FlameGraph)
  • Python 3.6+

2. 使用通用分析器

# 进入目录
cd ~/git/my-flamegraph

# 分析所有项目(默认30秒采样)
python3 generic_profiler.py

# 分析特定项目
python3 generic_profiler.py --project liii
python3 generic_profiler.py --project mogan

# 自定义采样时间
python3 generic_profiler.py --time 60

# 仅构建不分析
python3 generic_profiler.py --build-only

# 不构建,仅分析
python3 generic_profiler.py --no-build

# 禁用内存分析
python3 generic_profiler.py --no-memory

3. 使用交互式分析脚本

# 进入目录
cd ~/git/my-flamegraph

# 交互式模式(菜单选择)
./run_analysis.sh

# 命令行模式:分析liii项目(默认CPU+内存)
./run_analysis.sh liii

# 仅分析CPU
./run_analysis.sh liii --cpu-only

# 分析已有火焰图文件
./run_analysis.sh liii/cpu.folded

# 指定输出目录
./run_analysis.sh liii --output my_results/

项目配置

配置文件 projects.yaml 定义了要分析的项目。可以轻松添加新项目:

# 添加新项目
myproject:
  path: "/path/to/your/project"
  output_dir: "/path/to/output"
  build_cmds:
    - "./configure"
    - "make"
  executable: "myapp"  # 可执行文件名称
  target: ""           # 构建目标(如适用)
  args: []             # 启动参数
  env: {}              # 环境变量
  startup_delay: 3     # 启动后等待时间(秒)

输出文件

分析完成后,输出目录将包含:

  • cpu.svg - CPU火焰图
  • memory.svg - 内存分配火焰图(如果启用)
  • cpu.stacks, memory.stacks - 原始堆栈数据
  • cpu.folded, memory.folded - 折叠后的堆栈数据
  • profiling.log - 分析日志

火焰图查看

在浏览器中打开SVG文件查看火焰图:

  • 点击任何部分可以放大
  • 使用Ctrl+F搜索函数名
  • 使用右上角的控件调整显示

注意事项

  1. 需要sudo权限运行dtrace
  2. 分析过程中会启动目标程序并附加dtrace
  3. 分析完成后会自动终止目标程序
  4. 如果程序需要用户交互,可能影响分析结果

故障排除

  1. 找不到可执行文件:检查executable配置项,确保项目已构建
  2. dtrace权限问题:需要sudo权限,可能会提示输入密码
  3. 程序过早退出:调整startup_delay参数
  4. 火焰图生成失败:检查FlameGraph目录路径是否正确

添加新项目

  1. 编辑projects.yaml文件,添加新项目配置
  2. 运行python3 generic_profiler.py --project 项目名进行测试
  3. 根据需要调整配置参数

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors