Content #
vmstat 只给出了系统总体的上下文切换情况,要想查看每个进程的详细情况,就需要使用 pidstat 了。给它加上 -w 选项,你就可以查看每个进程上下文切换的情况了。
# 每隔5秒输出1组数据
$ pidstat -w 5
Linux 4.15.0 (ubuntu) 09/23/18 _x86_64_ (2 CPU)
08:18:26 UID PID cswch/s nvcswch/s Command
08:18:31 0 1 0.20 0.00 systemd
08:18:31 0 8 5.40 0.00 rcu_sched
...
- cswch 表示每秒自愿上下文切换(voluntary context switches)的次数。进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换。
- nvcswch 表示每秒非自愿上下文切换(non voluntary context switches)的次数。进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换。
Viewpoints #
From #
04 | 基础篇:经常说的 CPU 上下文切换是什么意思?(下)