[现象]
最近有台服务器晚上 CPU 告警, 系统抓取的故障期间的 snapshot 显示 CPU %sys 较高, 同时 context switch 在 300K 以上.
是否过高的 context switch 引起的 %sys 消耗呢, 做了下面的测试, 来验证 context switch 与 CPU %sys 之间有没有直接的关系.
[测试]
用 mysqlslap 并发 100 个线程执行 select 1 语句, 可以看到 QPS 压到 15W
context switch 已经达到 300K 左右, 但 CPU 的 %sys 在 3% 左右, 并没有导致过高的消耗
通过 systemtap 写的工具统计 context switch 的进程验证, 是 mysqld 进程在频繁的 context switch.
[结论]
大量的 context switch 并不会直接引起的 %sys 消耗. 定位类似的问题还需要借助 perf 工具来分析. 可以看我前面的两篇分析 CPU %sys 消耗的文章.
MySQL CPU %sys 高的案例分析 (一)
MySQL CPU %sys 高的案例分析 (二)
来源: https://www.cnblogs.com/wangdong/p/10002127.html