CPU 使用率升高只是现象。虚拟机被宿主机抢占、网卡软中断堆积和线程频繁切换,都会让延迟上升,但三者的处理方式完全不同。
先拆开 CPU 时间
mpstat -P ALL 1
vmstat 1
pidstat -w -u 1
%steal 持续升高说明虚拟 CPU 没有及时获得物理 CPU,应对照云监控检查宿主机争抢或实例规格。%soft 高通常与网络包、块设备中断有关;cs 很高则要继续确认是正常并发还是锁竞争造成的无效切换。
找到软中断来源
watch -n1 cat /proc/softirqs
cat /proc/interrupts
sar -n DEV 1
若 NET_RX 集中在单个 CPU,检查 RSS/RPS、IRQ affinity 和网卡队列。上下文切换异常时,用 perf top 或应用 profiler 寻找锁、短任务和过量线程。
常见误判
- 只看总体 CPU,忽略某个核心已经跑满
- 在虚拟机内优化代码,却没有先确认
%steal - 看到
cs高就认定异常,不结合请求吞吐比较 - 直接修改中断亲和性,未记录修改前基线
收尾清单
记录 CPU 各状态、单核分布、中断增速和业务吞吐。优化后用同一负载复测,确认延迟改善且没有把热点迁移到其他核心。