$ vmstat 5

重点参数含义:
cs(context switch)是每秒上下文切换的次数。
in(interrupt)则是每秒中断的次数。
r(Running or Runnable)是就绪队列的长度,也就是正在运行和等待 CPU 的进程数。
b(Blocked)则是处于不可中断睡眠状态的进程数。
可以看到,这个例子中的上下文切换次数 cs 是 9892 次,而系统中断次数 in 则是 124 次,而就绪队列长度 r 和不可中断状态进程数 b 都是 0。
vmstat 只给出了系统总体的上下文切换情况,要想查看每个进程的详细情况,就需要使用我们前面提到过的 pidstat 了。给它加上 -w 选项,你就可以查看每个进程上下文切换的情况了。
$ pidstat -w 5

这个结果中有两列内容是我们的重点关注对象。一个是 cswch ,表示每秒自愿上下文切换(voluntary context switches)的次数,另一个则是 nvcswch ,表示每秒非自愿上下文切换(non voluntary context switches)的次数。
这两个概念你一定要牢牢记住,因为它们意味着不同的性能问题:
1.自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、

本文探讨Linux系统中上下文切换的概念,包括cs(上下文切换次数)和in(中断次数)参数。通过vmstat和pidstat工具,分析自愿上下文切换和非自愿上下文切换对系统性能的影响,以及如何排查CPU使用率高和IO使用率高的问题。
最低0.47元/天 解锁文章
3140

被折叠的 条评论
为什么被折叠?



