pidstat看上下文切换时候的注意要点

# 每隔5秒输出1组数据 $ vmstat 5

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 

其中:
 

  • cs(context switch)是每秒上下文切换的次数。

  • in(interrupt)则是每秒中断的次数。

  • r(Running or Runnable)是就绪队列的长度,也就是正在运行和等待CPU的进程数。

  • b(Blocked)则是处于不可中断睡眠状态的进程数。

 

pidstat -w 5  每隔5秒输出进程的中断数:

08:18:26 UID PID cswch/s nvcswch/s Command

。。。。。。。。。。。。。。。。。。。。。。。。

其中:
   

一个是 cswch ,表示每秒自愿上下文切换(voluntary context switches)的次数,另一个则是 nvcswch ,表示每秒非自愿上下文切换(non voluntary context switches)的次数。

这两个概念你一定要牢牢记住,因为它们意味着不同的性能问题:

  • 所谓自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换。

  • 非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换

要注意的是,pidstat -wt  中,加上参数t后,表示看出线程的上下文切换了。
查看什么类型的中断切换数高,可以用:

# -d 参数表示高亮显示变化的区域

$ watch -d cat /proc/interrupts


 

你可能感兴趣的:(pidstat看上下文切换时候的注意要点)