profilinglisted
Install: claude install-skill ryukyagamilight/terminal-skills
# 性能分析
## 概述
CPU/内存分析、火焰图、追踪技能。
## perf 工具
### 基础命令
```bash
# 安装
apt install linux-tools-common linux-tools-$(uname -r)
# CPU 采样
perf record -g -p PID
perf record -g -a -- sleep 30
# 查看报告
perf report
perf report --stdio
# 实时统计
perf top
perf top -p PID
# 统计事件
perf stat command
perf stat -p PID sleep 10
```
### 常用事件
```bash
# CPU 周期
perf record -e cycles -p PID
# 缓存未命中
perf record -e cache-misses -p PID
# 上下文切换
perf record -e context-switches -p PID
# 列出可用事件
perf list
```
### 火焰图
```bash
# 采集数据
perf record -F 99 -g -p PID -- sleep 30
# 生成火焰图
perf script | stackcollapse-perf.pl | flamegraph.pl > flamegraph.svg
# 或使用 FlameGraph 工具
git clone https://github.com/brendangregg/FlameGraph
perf script | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl > out.svg
```
## strace 追踪
### 基础用法
```bash
# 追踪进程
strace -p PID
# 追踪命令
strace command
# 统计系统调用
strace -c command
strace -c -p PID
# 追踪特定调用
strace -e open,read,write command
strace -e trace=network command
strace -e trace=file command
```
### 高级选项
```bash
# 显示时间戳
strace -t command
strace -tt command # 微秒
# 显示耗时
strace -T command
# 跟踪子进程
strace -f command
# 输出到文件
strace -o trace.log command
```
## ltrace 库调用
```bash
# 追踪库调用
ltrace command
ltrace -p PID
# 统计
ltrace -c command
# 特定库
ltrace -l libc.so.6 command
```
## 内存分析
### valgrind
```bash
# 内存泄漏检测
valgrind --leak-check=full ./program
# 内存错误
valgrind --tool=memcheck ./program
# 缓存分析
valgrind --tool=cachegrind ./program
# 调用图
valgrind --to