什么是系统上下文切换
系统上下文切换是指操作系统在不同进程或线程之间切换执行的过程。在多任务操作系统中,这是一项至关重要的任务,因为它允许多个程序共享处理器时间,以便它们似乎同时运行。系统上下文切换涉及保存当前进程的状态,切换到另一个进程,并将其状态还原,以便它可以继续执行。这是操作系统内核的关键职责之一,以确保公平的资源分配和系统的高效性。
vmstat
在Linux系统中,vmstat是一个非常有用的工具,用于监视系统性能,并且可以提供关于上下文切换的有用信息。您可以使用以下命令来运行vmstat并显示上下文切换统计信息:
vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b 交换 空闲 缓冲 缓存 si so bi bo in cs us sy id wa st
1 0 0 1956380 62880 877460 0 0 3692 312 572 1251 28 50 21 1 0
0 0 0 1956380 62880 877568 0 0 68 0 160 248 2 0 97 0 0
0 0 0 1956380 62880 877568 0 0 0 0 168 265 2 1 97 0 0
1 0 0 1956380 62880 877564 0 0 0 0 271 523 4 2 94 0 0
1 0 0 1956380 62880 877552 0 0 0 4 225 356 3 1 96 0 0
举个栗子
运行pidstat -w 3 //每隔3秒输出一次关于进程上下文切换的统计信息
12时04分17秒 UID PID cswch/s nvcswch/s Command
12时04分20秒 0 14 1.33 0.00 ksoftirqd/0
12时04分20秒 0 15 29.33 0.00 rcu_preempt
12时04分20秒 0 16 0.33 0.00 migration/0
12时04分20秒 0 22 0.33 0.00 migration/1
12时04分20秒 0 23 3.00 0.00 ksoftirqd/1
12时04分20秒 0 35 2.00 0.00 kcompactd0
12时04分20秒 0 48 2.33 0.00 kworker/1:1H-kblockd
12时04分20秒 0 247 707.33 0.00 kworker/u256:29-flush-8:0
12时04分20秒 0 254 0.33 0.00 kworker/0:2H-kblockd
12时04分20秒 0 278 5.00 1.33 jbd2/sda3-8
12时04分20秒 0 380 3.33 0.00 irq/16-vmwgfx
12时04分20秒 127 613 4.00 0.00 systemd-oomd
12时04分20秒 0 642 12.67 0.67 vmtoolsd
12时04分20秒 130 921 0.33 0.00 vnstatd
12时04分20秒 0 1383 1.00 0.00 vmtoolsd
12时04分20秒 998 1576 1.00 0.00 pmproxy
12时04分20秒 0 4294 9.33 9.33 gnome-shell
12时04分20秒 0 4431 2.00 0.00 ibus-daemon
12时04分20秒 0 4506 10.33 0.33 vmtoolsd
12时04分20秒 0 4550 1.00 0.00 ibus-extension-
12时04分20秒 0 4615 1.00 0.00 ibus-engine-lib
12时04分20秒 0 4835 8.33 13.33 gnome-terminal-
12时04分20秒 0 5411 6.67 0.00 kworker/0:2-events
12时04分20秒 0 5796 42.33 0.00 kworker/u256:1-writeback
12时04分20秒 0 7105 8.00 0.00 kworker/1:3-events
12时04分20秒 0 7224 1.00 1.00 vmstat
12时04分20秒 0 7475 6.33 6.33 stress-ng
12时04分20秒 0 7476 6.33 7.00 stress-ng
12时04分20秒 0 7477 5.00 6.00 stress-ng
12时04分20秒 0 7478 5.33 5.00 stress-ng
12时04分20秒 0 7479 5.33 8.00 stress-ng
12时04分20秒 0 7480 5.67 5.67 stress-ng
12时04分20秒 0 7481 5.33 5.67 stress-ng
12时04分20秒 0 7482 4.33 4.67 stress-ng
12时04分20秒 0 7483 5.33 5.33 stress-ng
12时04分20秒 0 7484 5.33 4.67 stress-ng
12时04分20秒 0 7485 4.67 6.00 stress-ng
12时04分20秒 0 7486 4.67 7.00 stress-ng
12时04分20秒 0 7487 4.33 5.00 stress-ng
12时04分20秒 0 7488 4.67 5.33 stress-ng
12时04分20秒 0 7489 5.00 5.00 stress-ng
12时04分20秒 0 7490 4.00 6.33 stress-ng
12时04分20秒 0 7491 5.00 7.00 stress-ng
12时04分20秒 0 7492 5.67 7.00 stress-ng
12时04分20秒 0 7493 5.67 5.00 stress-ng
12时04分20秒 0 7494 5.67 6.33 stress-ng
12时04分20秒 0 7495 5.67 3.67 stress-ng
12时04分20秒 0 7496 5.00 6.00 stress-ng
12时04分20秒 0 7497 5.00 8.33 stress-ng
........后面还有很多stress-ng的进程
非自愿与自愿切换
总结
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!