在Linux性能调优中如何查看系统的上下文切换?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您好,常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析CPU 上下文切换和中断次数。
需要特别关注的四列内容:
· cs (context switch):每秒上下文切换的次数。
· in (interrupt):每秒中断的次数。
· r (Running or Runnable) :就绪队列的长度,也就是正在运行和等待 CPU 的进程数。
· b (Blocked):处在不可中断睡眠状态的进程数。
在嵌入式 Linux 设备中,一般 vmstat 工具是不存在的。所以如果想要 vmstat 工具,可以自己实现代码,他的原理是获取/proc/diskstats 和/proc/slabinfo 的信息组合而成。实现代码见 procps 工具
vmstat 只给出了系统总体的上下文切换情况,并不能查看每个进程的上下文切换情况。
:查看某个进程中线程的上下文切换情况,下图查看的是 hicore 进程中所有的线程上下文切换情况。
关注两列内容:
1. 自愿上下文切换:进程无法获取所需资源,导致的上下文切换。比如, I/O、内存等系统资源不足时。
2. 非自愿上下文切换:进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如,大量进程都在争抢 CPU 时。