开发者社区 问答 正文

在Linux性能调优中如何查看系统的上下文切换?

在Linux性能调优中如何查看系统的上下文切换?

展开
收起
我是小美女 2021-10-30 11:32:33 453 分享 版权
1 条回答
写回答
取消 提交回答
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。

    您好,常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析CPU 上下文切换和中断次数。 image.png

    需要特别关注的四列内容:

    · cs (context switch):每秒上下文切换的次数。
    · in (interrupt):每秒中断的次数。
    · r (Running or Runnable) :就绪队列的长度,也就是正在运行和等待 CPU 的进程数。
    · b (Blocked):处在不可中断睡眠状态的进程数。
    
    

    在嵌入式 Linux 设备中,一般 vmstat 工具是不存在的。所以如果想要 vmstat 工具,可以自己实现代码,他的原理是获取/proc/diskstats 和/proc/slabinfo 的信息组合而成。实现代码见 procps 工具

    vmstat 只给出了系统总体的上下文切换情况,并不能查看每个进程的上下文切换情况。

    :查看某个进程中线程的上下文切换情况,下图查看的是 hicore 进程中所有的线程上下文切换情况。 image.png

    关注两列内容:

    1. 自愿上下文切换:进程无法获取所需资源,导致的上下文切换。比如, I/O、内存等系统资源不足时。
    2. 非自愿上下文切换:进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如,大量进程都在争抢 CPU 时。
    
    2021-10-30 11:45:50
    赞同 1 展开评论