Oamc

性能分析:CPU、内存、IO · 修改记录

这是 linux/性能分析:CPU、内存、IO.md 的改动记录。后台每次保存都会留一份快照, 这里显示的是快照之间的差异,不会混入其他文章的改动。

还没有后台修改记录。

Git 提交记录

下面是 Git 里的提交,可能包含其他文章的改动(因为一次提交会带上工作区所有变化)。

#1 2026-10-25 +0 −0 refactor: 全部文章文件名中文化 0aa8fe6

这次没有正文改动。

#2 2026-10-18 +75 −0 docs: 网络进阶(MSTP/ACL/NAT/PBR)、Linux 进阶(模块/性能/bonding)、Windows 进阶(DFS/DHCP/AD CS) 42afade
 @@ -0,0 +1,75 @@
+---
+tags: [性能, sar, perf, Linux]
+order: 105
+---
+
+# 性能分析:CPU、内存、IO
+
+## 场景
+
+服务器变慢,但不知道卡在 CPU、内存还是磁盘。
+
+## 前置条件
+
+- 有 root 或 sudo
+- 装了 `sysstat`(sar/iostat)、`procps`(top/vmstat)
+- 知道业务高峰时段
+
+## 配置
+
+```bash
+dnf install -y sysstat perf
+
+# 实时总览
+top          # 按 1 看每核,按 c 看完整命令行
+vmstat 1 10
+
+# CPU
+pidstat -u 1 5
+perf top
+
+# 内存
+free -h
+vmstat -s
+
+# 磁盘 IO
+iostat -xz 1 5
+iotop -o
+
+# 历史数据
+sar -u 1 5
+sar -r 1 5
+sar -d 1 5
+sar -n DEV 1 5
+```
+
+判断方向:
+
+| 现象 | 可能原因 |
+| --- | --- |
+| `us` 高 | 应用计算密集,看 `perf top` 的热点函数 |
+| `sy` 高 | 系统调用多,看是不是网络/文件操作太碎 |
+| `wa` 高 | 磁盘成瓶颈,看 `iostat -x` 的 `%util` 和 `await` |
+| 内存不足 | `swap` 使用增长、频繁 `si/so` |
+| `load` 高但 CPU 不高 | IO 等待或 D 状态进程,`ps aux | grep " D "` |
+
+## 验证
+
+```bash
+sar -u -f /var/log/sa/sa今天
+iostat -x 1 3
+pidstat -d 1 5
+```
+
+## 回滚
+
+只读操作,无副作用。`perf` 采集数据会占一点 CPU,跑完 Ctrl+C 即可。
+
+## 坑
+
+- **只看 `top` 的第一行**,不看每核,单核打满会漏掉。
+- `wa` 高不一定是磁盘坏,也可能是文件系统缓存不足。
+- `free` 的 `available` 才是可用内存,别被 `free` 列吓到。
+- `iostat -x` 的 `%util` 接近 100% 才是真饱和,`await` 高说明队列在排。
+- `sar` 默认只保留 7 天,`/etc/sysconfig/sysstat` 里可以调。
+- `perf` 需要 debuginfo 才能看到函数名,否则全是地址。