[Linux] 查看进程的上下文切换pidstat
2023-02-18 15:36:27 时间
各个进程之间是共享 CPU 资源的,在不同的时候进程之间需要切换,让不同的进程可以在 CPU 执行,那么这个一个进程切换到另一个进程运行,称为进程的上下文切换。
进程是由内核管理和调度的,所以进程的切换只能发生在内核态。
所以,进程的上下文切换不仅包含了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源。
大家需要注意,进程的上下文开销是很关键的,我们希望它的开销越小越好,这样可以使得进程可以把更多时间花费在执行程序上,而不是耗费在上下文切换。
发生进程上下文切换有哪些场景?
1. 为了保证所有进程可以得到公平调度,CPU 时间被划分为一段段的时间片,这些时间片再被轮流分配给各个进程。这样,当某个进程的时间片耗尽了,就会被系统挂起,切换到其它正在等待 CPU 的进程运行;
2. 进程在系统资源不足(比如内存不足)时,要等到资源满足后才可以运行,这个时候进程也会被挂起,并由系统调度其他进程运行;
3. 当进程通过睡眠函数 sleep 这样的方法将自己主动挂起时,自然也会重新调度;
4. 当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高优先级进程来运行;
5. 发生硬件中断时,CPU 上的进程会被中断挂起,转而执行内核中的中断服务程序;
下面这个进程是php运行的其中存在sleep函数
查看到的进程切换如下
pidstat -w -p 进程PID 1 10
cswch/s 每秒有10次的主动切换 , 耗费资源比较多
相关文章
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.A)- FlexSPI NOR启动时间(RT1170)
- 痞子衡嵌入式:链接函数到8字节对齐地址或可进一步提升i.MXRT1xxx内核执行性能
- 《痞子衡嵌入式半月刊》 第 9 期
- 痞子衡嵌入式:我当选了2019年度官方论坛i.MXRT板块的顶级贡献者
- 痞子衡嵌入式:降低刷新率是定位LCD花屏显示问题的第一大法(i.MXRT1170, 1280x480 LVDS)
- 痞子衡嵌入式:MCUBootUtility v2.3发布,这次不再放过任何一款Flash
- 《痞子衡嵌入式半月刊》 第 8 期
- 《痞子衡嵌入式半月刊》 第 7 期
- 痞子衡嵌入式:揭秘i.MXRT1170 eFuse空间访问可靠性的保护策略(冗余与ECC)
- 痞子衡嵌入式:大话双核i.MXRT1170之Cortex-M7与Cortex-M4互相激活之道
- 痞子衡嵌入式:简析i.MXRT1170 Cortex-M4 L-MEM ECC功能特点、开启步骤、性能影响
- 《痞子衡嵌入式半月刊》 第 6 期
- 痞子衡嵌入式:走进二维码(QR Code)的世界(2)- 初体验(PyQt5.11+MyQR2.3+ZXing+OpenCV4.2.0)
- 痞子衡嵌入式:走进二维码(QR Code)的世界(1)- 引言
- 痞子衡嵌入式:简析i.MXRT1170 Cortex-M7 FlexRAM ECC功能特点、开启步骤、性能影响
- 《痞子衡嵌入式半月刊》 第 5 期
- 痞子衡嵌入式:记录i.MXRT1060驱动LCD屏显示横向渐变色有亮点问题解决全过程(解答篇)
- 痞子衡嵌入式:记录i.MXRT1060驱动LCD屏显示横向渐变色有亮点问题解决全过程(提问篇)
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(8.A)- SEMC NAND启动时间(RT1170)
- 《痞子衡嵌入式半月刊》 第 4 期