LINUX学习:CentOS系统 上下文切换的检查思路
《LINUX学习:CentOS系统 上下文切换的检查思路》要点: 1.什么是上下文切换(Context Switch)?上下文切换,有时也称做进程切换或任务切换,是指CPU从一个进程或线程切换到另一个进程或线程. 操作系统可以同时运行多个进程,然而一颗CPU同时只能执行一项任务,操作系统利用时间片轮转的方式,让用户感觉这些任务正在同时进行. CPU给每个任务都服务一定的时间,然后把当前任务的状态保留下来,在加载下一任务的状态后,继续服务下一任务.任务的状态保留及再加载,这段过程就叫做上下文切换.
2.上下文切换的消耗?直接消耗包含: CPU寄存器需要保存和加载,系统调度器的代码需要执行,TLB实例需要重新加载,CPU 的pipeline需要刷掉. 间接消耗:多核的cache之间得共享数据,间接消耗对于法式的影响要看线程工作区操作数据的大小. 上下文切换通常是计算密集型的.也就是说,它必要相当可观的处理器时间,在每秒几十上百次的切换中,每次切换都必要纳秒量级的时间.所以,上下文切换对系统来说意味着消耗大量的 CPU 时间,事实上,可能是操作系统中时间消耗最大的操作. 3.如何检查上下文切换是否频繁?(1)确认CPU使用率 CPU是否处于空闲状态. (2)vmstat 1 从vmstat的输出可以看到,io项的block_in和block_out是否频繁,system项的每秒中断数(in)和每秒的上下文切换(cs)是否频繁. (3)pidstat -w 1 从pidstat上可以看到,每个进程对应的cswch(自愿上下文切换)和nvcswch(非自愿上下文切换)是否频繁. cswch/s: 每秒任务主动(自愿的)切换上下文的次数,当某一任务处于阻塞等待时,将主动让出本身的CPU资源. (4)/proc/stat /proc/stat包括了CPU的活动信息,上下文切换就是其中一项,以ctxt开头,它表示系统开机到目前为止的上下文切换总数. cat /proc/stat | grep ctxt && sleep 30 && cat /proc/stat | grep ctxt 通过上面的命令,可以计算出每秒上下文切换次数=两者差值/30 通过以上命令即可以定位那个进程上下文切换频繁. 4.造成上下文切换频繁的原因?
本文永久更新链接地址: 学习更多LINUX教程,请查看站内专栏,如果有LINUX疑问,可以加QQ交流《LINUX学习:CentOS系统 上下文切换的检查思路》。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |