Linux 3:上下文切换(2)

本文介绍了如何使用vmstat和pidstat工具来查看Linux系统的CPU上下文切换情况。vmstat提供了系统整体的上下文切换和中断次数,而pidstat则可以详细展示每个进程的上下文切换状况。关注cs和in字段以了解系统性能,同时区分自愿和非自愿上下文切换对系统性能的影响。
摘要由CSDN通过智能技术生成

如何查看CPU的上下文切换情况

vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数。
vmstat示例:

[logs@NCMUATAP01 ~]$ vmstat 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache    si   so   bi    bo   in   cs us sy id wa st
 2  0 1154224 230192 181600 2660408  0    0   108    21    1    1  2  0 97  0  0
 0  0 1154224 230148 181604 2660920  0    0     0     8 1475 1495  4  1 95  0  0

其中主要有以下信息需要注意:

  • cs(context switch)是每秒上下文切换的次数
  • in(interrupt)则是每秒中断的次数
  • r(Running or Runnable)是就绪队列的长度,也就是正在运行和等待 CPU 的进程数
  • b(Blocked)则是处于不可中断睡眠状态的进程数

vmstat 只给出了系统总体的上下文切换情况,而pidstat加上 -w 选项,就可以查看每个进程上下文切换的情况

[root@DMSXNAP01 ~]# pidstat -w 5
Linux 3.10.0-693.50.3.el7.x86_64 (DMSXNAP01) 	02/07/2021 	_x86_64_	(8 CPU)

10:44:15 AM   UID       PID   cswch/s nvcswch/s  Command
10:44:20 AM     0         3      0.20      0.00  ksoftirqd/0
10:44:20 AM     0         7      0.20      0.00  migration/0
10:44:20 AM     0         9     40.52      0.00  rcu_sched
10:44:20 AM     0        10      0.40      0.00  watchdog/0
10:44:20 AM     0        27      0.20      0.00  migration/4

输出中有两个需要关注的点:

  • cswch ,表示每秒自愿上下文切换(voluntary context switches)的次数
  • nvcswch ,表示每秒非自愿上下文切换(non voluntary context switches)的次数

这两个概念意味着不同的性能问题:

  • 自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换
  • 非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值