过多的上下文切换会把CPU时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,缩短进程真正运行的时间,造成系统性能下降。
我们可以使用vmstat这个工具,来查询系统的上下文切换情况。
vmstat是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析CPU上下文切换和中断的次数,如:
词义
cs(context switch)指每秒上下文切换的次数。
in(interrupt)指每秒中断的次数。
r(running or runable)指就绪队列的长度,也就是正在运行和等待CPU的进程数。
b(blocked)指处于不可中断睡眠状态的进程数。
vmstat只给出系统总体的上下文情况,要查看进程的上下文情况可以使用pidstat -w:
cswch(每秒自愿上下文切换的次数)指进程无法获取许需资源。比如I/O、内存等系统资源不足时,就不会做多余的事情。
nvcswch(每秒非自愿上下文切换)指进程由于时间片已经等到
pidstat- wt 1
小结:
评到上下文切换过多的问题,可以记住vmsat -pidsga、pidstas、/procj