CPU使用率计算方法:
cpu使用率 = 1 - cpu空闲时间/cpu总时间
cpu平均使用率 = 1 - (空闲时间new-空闲时间old)/(总时间new-总时间old)
查看cpu的相关状态,如运行节拍数,自愿非自愿切换数
cat /proc/stat | grep ^cpu
查看进程状态
cat /proc/[pid]/stat
查看cpu使用率命令
top 每隔3秒刷新一次
pidstat 1 5 每隔一秒输出一组数据,共输出5组
ps aux 进程详细情况
perf top 查找热点函数,需要自行安装此工具
perf record 记录热点函数情况
perf report 查看记录的内容
CPU 使用率是最直观和最常用的系统性能指标,更是我们在排查性能问题时,通常会关注的第一个指标。所以我们更要熟悉它的含义,尤其要弄清楚用户(%user
)、Nice(%nice
)、系统(%system) 、等待 I/O(%iowait
) 、中断(%irq
)以及软中断(%softirq
)这几种不同 CPU 的使用率。比如说:
- 用户 CPU 和 Nice CPU 高,说明用户态进程占用了较多的 CPU,所以应该着重排查进程的性能问题。
- 系统 CPU 高,说明内核态占用了较多的 CPU,所以应该着重排查内核线程或者系统调用的性能问题。
- I/O 等待 CPU 高,说明等待 I/O 的时间比较长,所以应该着重排查系统存储是不是出现了 I/O 问题。
- 软中断和硬中断高,说明软中断或硬中断的处理程序占用了较多的 CPU,所以应该着重排查内核中的中断服务程序。
碰到 CPU 使用率升高的问题,你可以借助 top
、pidstat
等工具,确认引发 CPU 性能问题的来源;再使用 perf
等工具,排查出引起性能问题的具体函数。