SuperAPI AI 工具集

rust-profiling

编程与开发

查看项目

更新于 10-16 08:29

技能介绍

用途

rust-profiling 用于对 Rust 二进制进行性能剖析,借助 samply 找出 CPU 瓶颈与内存分配压力;当症状表现为 RSS 增长或碎片化时,再结合操作系统层面的内存证据进行分析。

主要能力

  • 使用 samply 录制 Rust 程序的性能数据,并打开 Firefox Profiler UI 查看。
  • 支持仅保存模式,将剖析结果输出为 profile.json,供命令行分析。
  • 提供 CLI 分析脚本 scripts/analyze_profile.py,用于分析保存的 profile.json 文件。
  • 附带文档:reference.md(Cargo.toml 配置、samply 选项、故障排查)、examples.md(常见剖析场景与分析模式)、optimization.md(剖析后的修复手段:源码模式、release profile 调优、PGO、BOLT,以及哪些做法无效)。

使用方式

快速开始步骤:

  1. 确保 Cargo.toml 中存在 profiling profile(参见 reference.md)。
  2. 带调试符号构建:
cargo build --profile profiling
  1. 进行剖析(会打开 Firefox Profiler UI):
samply record ./target/profiling/<binary> [args...]
  1. 或仅保存以便 CLI 分析:
samply record --save-only -o profile.json ./target/profiling/<binary>
python3 ~/.agents/skills/rust-profiling/scripts/analyze_profile.py profile.json

适用场景

  • 性能比预期慢。
  • 负载下 RSS 或堆使用量意外增长。
  • 优化之前(先测量)。
  • 优化之后(验证改进)。
  • 排查 CPU 密集型操作或分配密集的热点路径。

限制与不适用场景

  • 任务属于 Rust 正确性缺陷、API 设计问题,或没有性能症状的重构。
  • 用户已有明确的基准测试需求,不需要剖析指导。
  • 问题在于构建时间、二进制体积或依赖卫生,而非运行时 CPU、内存或争用。

观察要点

模式 含义 行动
高 self-time 函数本身慢 直接优化目标
高 total-time 被频繁调用或调用的子函数慢 检查调用频率
热点路径中出现 malloc/alloc 分配开销 预分配、复用、池化,或使用有界/共享缓冲区
RSS 增长后趋于平稳,同时剖析显示分配频繁 可能是分配器碎片化,不一定是泄漏 比较分配器,然后减少高频小分配
pthread_mutex/parking_lot 锁争用 缩小锁范围或使用无锁方案

暂未提供

关于该技能的收费、价格、平台支持范围、具体效果指标等信息,资料中暂未提供。