cpustat 本身只是一个 CPU 使用率统计工具,它不会主动“占满 CPU”。
如果你在 CentOS 上看到 cpustat 相关进程 CPU 占用很高,通常是下面几种原因之一。
cpustat 默认或人为设置了 极短的采样间隔,导致它频繁采集系统数据,看起来像“占满 CPU”。
例如:
cpustat -i 0.01
或脚本里循环调用:
while true; do cpustat; done
✅ 解决:
cpustat -i 1
cpustat -n 10
常见场景:
while true 调用检查:
ps -ef | grep cpustat
crontab -l
✅ 解决:
sleepcpustat 会读取:
/proc/stat/proc/[0-9]*/stat如果系统:
那么 读取 proc 的开销会被算在 cpustat 上。
✅ 检查:
top
htop
ps -ef | wc -l
如果你是这样用的:
cpustat --perf
或
perf top
那 CPU 高 不是 cpustat 本身,而是:
perf✅ 解决:
有时 top 里看到:
%sy (system) 很高
你就以为是 cpustat,其实是:
✅ 验证:
top
# 看是否是 sy 高,而不是 cpustat 进程
top -p $(pgrep cpustat)
ps -ef | grep cpustat
strace -p <pid>
vmstat 1
iostat 1
cpustat 本身不会占满 CPU,通常是采样太频繁、被脚本反复调用、或系统本身负载高导致的“看起来像 cpustat 占满”。
如果你愿意,可以把下面信息贴出来,我可以帮你精准定位:
top / htop 截图cpustat 的启动命令我可以直接帮你判断是 正常还是异常。