程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(4)

[Linux] 查看进程的上下文切换pidstat

发布于2021-03-14 06:02     阅读(721)     评论(0)     点赞(5)     收藏(5)


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

进程是由内核管理和调度的,所以进程的切换只能发生在内核态。
所以,进程的上下文切换不仅包含了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源。

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

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

1. 为了保证所有进程可以得到公平调度,CPU 时间被划分为一段段的时间片,这些时间片再被轮流分配给各个进程。这样,当某个进程的时间片耗尽了,就会被系统挂起,切换到其它正在等待 CPU 的进程运行;
2. 进程在系统资源不足(比如内存不足)时,要等到资源满足后才可以运行,这个时候进程也会被挂起,并由系统调度其他进程运行;
3. 当进程通过睡眠函数 sleep 这样的方法将自己主动挂起时,自然也会重新调度;
4. 当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高优先级进程来运行;
5. 发生硬件中断时,CPU 上的进程会被中断挂起,转而执行内核中的中断服务程序;

下面这个进程是php运行的其中存在sleep函数
查看到的进程切换如下

pidstat -w -p 进程PID 1 10

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

 

 

原文链接:https://www.cnblogs.com/taoshihan/p/13272858.html



所属网站分类: 技术文章 > 博客

作者:悲催的程序员

链接:http://www.phpheidong.com/blog/article/3302/a5e22b50e26558fd9480/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

5 0
收藏该文
已收藏

评论内容:(最多支持255个字符)