各个进程之间是共享 CPU 资源的,在不同的时候进程之间需要切换,让不同的进程可以在 CPU 执行,那么这个一个进程切换到另一个进程运行,称为进程的上下文切换。

进程是由内核管理和调度的,所以进程的切换只能发生在内核态。

所以,进程的上下文切换不仅包含了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源。

大家需要注意,进程的上下文开销是很关键的,我们希望它的开销越小越好,这样可以使得进程可以把更多时间花费在执行程序上,而不是耗费在上下文切换。

发生进程上下文切换有哪些场景?

1. 为了保证所有进程可以得到公平调度,CPU 时间被划分为一段段的时间片,这些时间片再被轮流分配给各个进程。这样,当某个进程的时间片耗尽了,就会被系统挂起,切换到其它正在等待 CPU 的进程运行;

2. 进程在系统资源不足(比如内存不足)时,要等到资源满足后才可以运行,这个时候进程也会被挂起,并由系统调度其他进程运行;

3. 当进程通过睡眠函数 sleep 这样的方法将自己主动挂起时,自然也会重新调度;

4. 当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高优先级进程来运行;

5. 发生硬件中断时,CPU 上的进程会被中断挂起,转而执行内核中的中断服务程序;

下面这个进程是php运行的其中存在sleep函数

查看到的进程切换如下

pidstat -w -p 进程PID 1 10

cswch/s 每秒有10次的主动切换  , 耗费资源比较多

linux 上下文切换监控,[Linux] 查看进程的上下文切换pidstat相关推荐

  1. linux ps内存占用率,linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定...

    背景:有时需要单看某个进程的CPU及占用情况,有时需要看整体进程的一个占用情况. 一. linux ps命令,查看某进程cpu和内存占用率情况 [root@test vhost]# ps aux US ...

  2. linux top命令 动态查看进程详解

    文章目录 linux top命令 动态查看进程详解以及使用方法 top命令的输出,可分为上下两个部分 上面部分:整个系统的资源的使用状态 下面部分:单个进程的资源使用状态 上面部分详解: 第一行:由三 ...

  3. linux查看pid对应的进程,linux系统中快速查看进程pid的方法

    linux系统中快速查看进程pid的方法 一个很简单的'命令,pgrep,可以迅速定位包含某个关键字的进程的pid:使用这个命令,再也不用ps aux 以后去对哪个进程的pid了 用法: pgrep ...

  4. linux脚本监控某一进程,linux监控某个进程的运行shell脚本

    该脚本实现了对指定进程名的进程进行每隔2的扫描监控,一旦发现进程不存在便重新启动. #!/bin/sh a=10; while [[ @a -gt 5 ]]; do if test $(pgrep - ...

  5. linux查看进程自身全路径,在linux环境下如何查看进程的全路径

    一般用过linux的人都知道ps -ef|grep XXX 可是用ps看到的不是全路径, ps -ef|grep http 500       5948 15608  0 18:09 pts/0    ...

  6. Linux系统常用命令查看进程的用法

    使用Linux系统怎么用Linux查看进程呢?良许教程网的小编认为首先必须要了解当前进程的情况,也就是需要查看当前进程,ps命令就是最基本进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态 ...

  7. linux使用ps下查看进程运行的时间 【转】

    文章来源:linux下查看进程运行的时间 可通过ps 来查看,通过参数 -o 来查看 例: ps -eo pid,tty,user,comm,lstart,etime | grep init 参数说明 ...

  8. linux端口进程号pid,Linux根据端口号查看进程PID

    1.命令lsof,以查找占用端口80为例,用法如下: [root@localhost nginx]# lsof -i:80 以上为没有进程占用80端口, [root@localhost sbin]# ...

  9. linux下的ps 查看进程命令

    ps命令为 查看系统上运行的进程的 最基本的命令之一 一.语法 ps命令带有2种不一样的风格,分别是BSD和UNIX.这两个语法也可以结合起来应用,但是一般用的都是UNIX风格的. BSD和UNIX的 ...

最新文章

  1. 中科大博士20万字正经论文:教你如何给女朋友送礼物
  2. python中的类及self详解_Python类class参数self原理解析
  3. 程序、进程以及线程的爱恨情仇
  4. 人脸检测江湖的那些事儿——从旷视说起
  5. 5个Python函数,算天花板水平?
  6. 译]bootstrap-select (selectpicker)方法
  7. html5声称需要大写吗,html5中有没有规定字母标签是用大写还是小写?
  8. PHP 照相 滤镜,PHP GIF / PNG True Colorize滤镜,可保留亮度和Alpha
  9. Windows7升级IE11蓝屏问题
  10. Robo3T连接远程mongodb
  11. 记一次HDD(机械硬盘)突然出故障,然后数据恢复以及更换HDD的过程
  12. c语言现有21根火柴,python应用-21根火柴游戏
  13. [学习笔记]什么是存储过程?
  14. ubuntu 安装eclipes
  15. 利用rmf创造一个简单世界的小问题
  16. 第3选择-解决所有难题的关键思维,种下好的种子避免落入钻石交易
  17. Leetcode:剑指 Offer 58 - II. 左旋转字符串(C++)
  18. awk详解:awk语言及应用
  19. pycharm更改整体背景颜色(黑-白)
  20. 网上舆情如何早发现?网络舆情监测系统解决办法

热门文章

  1. pycharm运行模型时怎么设置权重?_使用AMP和Tensor Cores得到更快速,更节省内存的PyTorch模型...
  2. mysql负责均衡读写分离_MySQL读写分离之负载均衡
  3. [转载] 1022 D进制的A+B (20分)【java题解】【80ms】
  4. [转载] Scanner和bufferreader读取控制台字符的区别
  5. bca ac如何联合索引_BCA的完整形式是什么?
  6. 3个阶段 项目征名_2020年即将上线的3个爆款,或许它们能改变现有的手游格局...
  7. java npm install_npm install不构建供应商可执行文件
  8. xml不显示css样式_如何使用CSS显示XML?
  9. 我们可以覆盖Java中的main()方法吗?
  10. java 根据类名示例化类_Java LocalDateTime类| AdjustInto()方法与示例