当前位置: 首页 > news >正文

r 看排队,cs 看风暴,nvcswch 看锁,wa 看磁盘,in 看网络 - 小镇

r 看排队,cs 看风暴,nvcswch 看锁,wa 看磁盘,in 看网络

下面给你一版**“锁竞争确认(无 pidstat 版本)完整对照表”**,把你前面所有判断方式统一收敛成一张生产可用的速查表。


✔ ✔ 锁竞争确认(生产级汇总表)

✔ 一、现象层(vmstat / top)

观测工具指标正常异常(锁/调度风暴)
vmstat r ≤ CPU核数 >> CPU核数(排队)
vmstat cs <10k/s >100k/s(⚠️风暴)
vmstat b 0 0(锁问题通常不影响b)
vmstat wa <5% 仍可能为0(锁不是IO)
top -H 线程数 <100~500 >1000(线程风暴风险)
top -H CPU分布 少数热点 多线程均摊1~5%

✔ 二、锁竞争核心识别表(关键)

✔ ① cswch / nvcswch 模式(最重要)

来源工具指标正常锁竞争特征
pidstat cswch/s 中等 偏高
pidstat nvcswch/s 🔥 极高
关系 nvcswch vs cswch nv ≤ cs nv >> cs(锁铁证)

✔ ✔ 锁竞争铁证条件(必须记住)

nvcswch/s >> cswch/s
+ cs 极高
+ CPU 未100%

👉 满足 = 锁竞争成立(>90%)


✔ 三、perf 层证据(最终确认)

工具关键输出含义
perf top futex_wait_queue_me 用户态锁
perf top pthread_mutex_lock mutex竞争
perf top __lll_lock_wait glibc锁
perf lock report spin_lock 内核锁

✔ perf 锁竞争结论表

perf结果结论
futex_wait_queue_me 高 Java / pthread锁
spin_lock 高 内核锁竞争
schedule 高 调度问题
ep_poll 高 IO/事件循环压力

✔ 四、vmstat 快速归因表(你当前最关键)

现象组合结论
r↑ + cs↑ + CPU未100% 🔥 锁竞争
r↑ + CPU100% CPU热点
b↑ + wa↑ IO问题
cs↑ + in↑ 中断/网络问题
r↑ + cs↑ + in↑ 混合风暴(你当前)

✔ 五、三大根因速查表(最终版)

类型vmstat特征top特征perf特征
CPU热点 CPU100% 少数线程占满 函数热点
锁竞争 cs↑ + r↑ 多线程均摊CPU futex / mutex
线程风暴 cs↑↑↑ 线程数爆炸 schedule / wakeup
IO问题 wa↑ + b↑ D状态进程 block / ext4
中断风暴 in↑ + cs↑ CPU sys高 softirq

✔ 六、一句话决策规则(生产最实用)

✔ 看到 vmstat 直接这样判断:

① r 高 → CPU排队
② cs 高 → 调度/锁问题
③ wa 高 → IO问题
④ in 高 → 中断问题

✔ 锁竞争最终一句话判断:

✔ cs 很高 + nvcswch 很高 + CPU未满
= 99% 锁竞争 / futex问题


✔ 七、你当前case定位(结合你数据)

你之前 vmstat:

  • r = 70~130

  • cs = 400k+

  • CPU ≈ 90%

  • wa = 0

  • in = 400k+


✔ 最终归类:

类型判断
CPU热点 ❌ 不完全匹配
IO问题 ❌ 排除
锁竞争 ✔✔✔ 高概率
线程风暴 ✔✔✔ 高概率
中断放大 ✔ 叠加因素

✔ ✔ 最终总结(生产口诀)

r 看排队,cs 看风暴,nvcswch 看锁,wa 看磁盘,in 看网络


如果你下一步想继续,我可以帮你再升级一层:

👉 “一张图:vmstat → pidstat → perf 自动归因决策树(可贴到值班手册)”