【現象】
最近有台服務器晚上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消耗的文章。