问题描述
如何排查由于上下文切换导致CPU利用率升高的问题
问题分析
可以使用vmstat、pidstat工具跟来分析上下文切换和中断问题。
解决方案
1、先使用top查看机器整体性能状况,如下: 我们可以发现CPU0跟CPU1使用率都很高,CPU0的sys高达89.7%,CPU1的sys高达88.7%。 且可以看到进程sysbench的CPU使用率为197%,CPU0跟CPU1使用率之和。 2、然后使用vmstat来观察上下文切换的情况,如下: 我们可以发现,处于r状态的就绪队列远大于CPU数量,说明有多个进程等待运行,且cs表示的上下文切换次数明显升高,已升高至150万左右。 3、然后我们使用pidstat来查看上下文切换过多的进程或者线程,pidstat 默认显示进程的指标数据,加上 -t 参数后,才会输出线程的指标,如下: 我们可以发现,sysbench的子线程发生了过多的上下文切换,我们已经找到上下文切换次数增多的线程。 综合上述指标,我们可以判断,系统正在运行和等待 CPU 的进程数过多,导致了大量的上下文切换,而上下文切换又导致了系统 CPU 的占用率升高。 如果您有其他问题,欢迎您联系火山引擎技术支持服务