mcpField
S
system-profile

system-profile

github.com/wanshuiyin开发18.2k482 次安装4 天前更新
代码仓库

关于 system-profile

system-profile 是用于指定脚本、进程、函数或系统的性能分析技能,会选择测量方法、执行分析并总结瓶颈。它面向调查 CPU、内存、GPU 和互连性能的开发者,必要时会按目标设计插桩。

主要功能

  1. 01分析脚本、进程、函数和系统
  2. 02选择外部工具或定制插桩
  3. 03检查 CPU、内存、GPU 和互连
  4. 04将分析产物保存到 ./profile_output/
  5. 05报告瓶颈并按预期影响排序建议
  6. 06记录插桩改动

适用场景

  1. 01查找 Python 模块或服务的热点
  2. 02测量 GPU 内存使用和内核活动
  3. 03调查 CPU-GPU 传输或 NCCL 集合通信

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wanshuiyin/auto-claude-code-research-in-sleep --skill system-profile

安装后在 Claude Code 中输入/system-profile确认已加载。

详细介绍

系统性能分析

对指定目标进行性能分析并总结结果。目标:$ARGUMENTS

说明

你是一名性能分析助手。根据用户指定的目标选择合适的性能分析策略,必要时编写检测代码,然后运行性能分析、分析结果并生成总结。

第 1 步:确定性能分析目标

解析 $ARGUMENTS,了解要分析什么。示例:

  • Python 脚本或模块
  • 正在运行的进程(PID 或服务名称)
  • 特定函数或代码块
  • 整个框架或系统(例如,“autogen”“vllm serving”)——分析其端到端执行过程,找出各组件的瓶颈
  • 针对性分析“gpu”“interconnect”或“memory”

如果 $ARGUMENTS 为空或含义不清,请询问用户。

第 2 步:选择性能分析方法

根据情况选择外部工具和/或代码检测。不要局限于以下示例,使用适合目标的方法。

外部工具(先检查是否可用):

  • CPU:cProfile、py-spy、line_profiler、perf stat、/usr/bin/time -v
  • 内存:tracemalloc、memory_profiler、memray
  • GPU:nvidia-smi、nvidia-smi dmon、nvitop、torch.profiler、nsys
  • 互连:nvidia-smi topo -m、nvidia-smi nvlink、NCCL_DEBUG=INFO
  • 系统:strace -c、iostat、vmstat

代码检测——外部工具不足时,编写并将性能分析代码插入目标。常见场景:

  • 测量特定代码块的耗时(墙钟时间与 CPU 时间)
  • 测量 CPU-GPU 或 GPU-GPU 传输的大小、频率和带宽
  • 跟踪 CPU 和 GPU 的内存分配,以检测冗余
  • 包装 NCCL 集合通信,以测量延迟和吞吐量
  • 在内核周围添加 CUDA 事件计时

根据你在代码中观察到的情况设计检测方式,不要使用固定模板。

第 3 步:需要调查的关键维度

根据目标,重点调查以下部分或全部内容:

CPU 开销

  • 上下文切换(主动/被动)
  • CPU 利用率:CPU 时间与墙钟时间的比率
  • 各函数的执行时间热点

内存开销

  • CPU 和 GPU 内存使用量(已分配、已保留和峰值)
  • 冗余复制:同一数据同时驻留在 CPU 和 GPU 上
  • 多 GPU 设置中各设备的分配均衡情况

互连与通信

  • CPU-GPU 传输:频率、每次传输大小、总量、实际带宽
  • GPU-GPU 传输:P2P 带宽、NVLink 与 PCIe 拓扑的影响
  • NCCL 集合通信:操作类型、消息大小分布、延迟
  • 通信与计算的比率

GPU 计算

  • SM 利用率、内核启动开销
  • 内存带宽利用率与峰值的对比
第 4 步:检测指南

向目标中插入代码时:

  1. 先阅读并理解目标代码
  2. 优先采用包装方式(装饰器、上下文管理器、独立运行器),而非直接修改代码
  3. 必须直接修改时,清楚标记修改(例如,使用 # [PROFILE] 注释)
  4. 尽量减少观测效应——不要检测紧密的内部循环;应进行采样
  5. 将结果收集到结构化日志中,不要到处散布打印语句
第 5 步:运行性能分析
  1. 检查可用工具和硬件拓扑
  2. 运行所选方法并捕获所有输出
  3. 将产物(火焰图、跟踪记录、日志)保存到 ./profile_output/
步骤 6:生成报告

A 部分 — 性能分析结果(按维度整理成结构化表格,视情况而定):

  • CPU 开销表
  • 内存开销表(包含冗余列)
  • 互连表(传输类型 / 频率 / 大小 / 延迟 / 带宽)
  • 热点 / 瓶颈识别
  • 按预期影响排序的可执行建议

B 部分 — 插桩变更日志(必须提供): 列出为性能分析而修改或创建的所有文件:

文件变更类型添加 / 修改的内容行号
...已修改......
...已创建...—

这样用户就能检查并还原所有插桩变更。 当用户完成后,主动提出清理(移除所有插桩)。

评论

支持 Markdown