# 安装Go语言环境
sudo yum install -y golang
# 安装cpustat
go get github.com/uber-common/cpustat
查看整体CPU使用情况
sudo cpustat -a
关注指标:%CPU
(总占用)、%usr
(用户态)、%sys
(内核态),若%usr
或%sys
持续>85%,可能存在瓶颈。
监控特定进程
sudo cpustat -p <PID>
替换<PID>
为进程ID,定位高CPU占用的具体进程。
输出详细信息
sudo cpustat -l # 显示进程命令行
sudo cpustat -c # 显示CPU详细统计(用户/内核/空闲时间)
定时监控与记录
sudo cpustat -i 5 -o cpu_log.csv # 每5秒记录一次,保存为CSV
指标 | 健康范围 | 风险阈值 | 含义 |
---|---|---|---|
用户态CPU% | 60%~70% | >85% | 应用程序代码低效(如死循环、复杂算法) |
内核态CPU% | 10%~20% | >30% | 系统调用频繁(如锁竞争、上下文切换) |
上下文切换 | <1万/秒 | >3万/秒 | 线程频繁切换导致CPU资源浪费 |
cs
(上下文切换)和runq-sz
(运行队列),判断CPU是否过载。参考来源: