深入理解perf报告中的swapper进程

一、前言

1、在perf监控进程的系统调用时,会出现大量swapper进程
2、官方描述该进程是当CPU上没有其他任务运行时,就会执行swapper。换句话说swapper意味着CPU啥事也没干,跑去休息去了
3、本文来观察一下swapper在cpu上的表现

二、环境准备

组件 版本
OS Ubuntu 16.04.4 LTS
systemtap version 4.2/0.165, commit release-4.1-41-g9cde541d4464

三、准备脚本

祭出我们强有力的工具systemtap,这里需要注意的是,systemtap各版本之间有一定的差异,我的版本是在这里下载的:https://sourceware.org/systemtap/getinvolved.html

root@wilson-ubuntu:/opt/stap# stap -V
Systemtap translator/driver (version 4.2/0.165, commit release-4.1-41-g9cde541d4464)
Copyright (C) 2005-2019 Red Hat, Inc. and others
This is free software; see the source for copying conditions.
tested kernel versions: 2.6.18 ... 5.1-rc2
enabled features: PYTHON3 NLS

确定好版本之后,编写一个脚本,主要用到probe::scheduler.cpu_off,https://sourceware.org/systemtap/tapsets/API-scheduler-cpu-off.html

脚本如下:

probe scheduler.cpu_off
{
        printf("%20s (%5d) %5s %20s (%5d)  , is idle:%d \n ", task_execname(task_prev),task_pid(task_prev),"==>",task_execname(task_next),task_pid(task_next),idle)
}

脚本非常简单,scheduler.cpu_off主要描述了进程离开CPU的状态:
task_prev:即将离开CPU的进程
task_next:即将进入CPU的进程
idle:cpu是否处于空闲,这个变量就是我们关注的重点,如果idle为1,那就证明CPU并没有运行任务

四、运行脚本

由于数据量太大,我们筛选一部分:

root@wilson-ubuntu:/opt/stap# stap switch.stp
...
            swapper/0 (    0)   ==>               stapio (29159)  , is idle:1
               stapio (29159)   ==>            swapper/0 (    0)  , is idle:0
            swapper/0 (    0)   ==>            rcu_sched (    7)  , is idle:1
            rcu_sched (    7)   ==>            swapper/0 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/0 (    0)   ==>            rcu_sched (    7)  , is idle:1
            rcu_sched (    7)   ==>            swapper/0 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/2 (    0)   ==>       irq/31-iwlwifi (  542)  , is idle:1
       irq/31-iwlwifi (  542)   ==>            swapper/2 (    0)  , is idle:0
            swapper/0 (    0)   ==>            rcu_sched (    7)  , is idle:1
            swapper/1 (    0)   ==>               stapio (29159)  , is idle:1
...

1、由于是4核的cpu,所以有4个swapper,swapper/n
2、swapper的进程号是0,在系统初始化时创建init进程,之后它就成了一个最低优先级的空闲任务
3、当swapper出现在左边的时候(即将离开cpu的进程),对应最后一个字段idle是1,这时候证明cpu上运行的swapper进程(CPU去闲散去了)
4、由此验证了,当cpu运行swapper进程的时候,实际上cpu是处于闲散的状态,并没有任何真正的任务在上面运行,处于idle状态


至此,本文结束
在下才疏学浅,有撒汤漏水的,请各位不吝赐教...

(0)

相关推荐

  • 聊聊 top 命令中的 CPU 使用率

    之前写过cpu占用率的文章 CPU占用率是什么? ==== 平常我们使用 top 命令来查看系统的性能情况,在 top 命令中可以看到很多不同类型的 CPU 使用率,如下图红框中标出部分: 下面,我们 ...

  • 一次系统调用开销到底有多大?

    相信各位同学都听说过一个建议,就是系统调用比函数调用开销大很多,要尽量减少系统调用的次数,以提高你的代码的性能.那么问题来了,我们是否可以给出量化的指标.一次系统调用到底要多大的开销,需要消耗掉多少C ...

  • 编程新手该如何调优程序?程序员必备性能调优利器——火焰图

    让我们回想一下,曾经作为编程新手的我们是如何调优程序的?通常是在没有数据的情况下依靠主观臆断来瞎蒙,稍微有些经验的同学则会对差异代码进行二分或者逐段调试.这种定位问题的方式不仅耗时耗力,而且还不具有通 ...

  • 内核抢占会让内核调度更好吗?

    本文以内核抢占为引子,概述一下 Linux 抢占的图景. 我尽量避开细节问题和源码分析. 什么是内核抢占? 别急,咱们慢慢来. 先理解抢占 (preemption) 这个概念: involuntari ...

  • 【知识传递】检测报告中数据不准确,问题常出在这儿↓↓↓

    排除人为故意,检验报告中的结论不正确或数据不准确也时有发生,一般来说,问题主要出在这几个方面: 1检验和计算粗心大意 检验是一个需要专注的过程,稍有疏忽,就容易出现差错.而随着手机的普及,检验过程中, ...

  • 如何理解波浪理论中的推动浪和修正浪?

    波浪理论是一套非常成熟的价格预测体系,它将价格的波动分为推动浪和修正浪,如果能够判断当前市场所处的位置,那么波浪理论就能够帮助我们找出一些高胜率的交易机会,做出更好的交易决策. 在今天的文章里,我们将 ...

  • 如何理解书法草书中的“一点二连三交代,四墨五紧六飞白”这句话?

    "一点二连三交代,四墨五紧六飞白."不知出处是何处,应该是草书者的经验及感悟,有一定道理,因此笔者愿与题主即各位同道朋友作一些探讨. 我们知道,笔法.字法.章法构成了书法的三要素, ...

  • 体检报告中的结节、钙化、囊肿都代表什么?一文解读体检报告里的高频词

    随着健康科普的普及,很多人都开始坚持每年做一次体检,了解自己的身体状况.可是当体检报告拿在手的时候,复杂的各项指标.专业的医学术语,让人看得云里雾里~不少粉丝都纷纷留言咨询,到底是什么意思?严不严重? ...

  • UC头条:辟谣: CT报告中的“肺结节”、“占位”都是肺癌?

    谁都想长命百岁,一生健康! 然而很遗憾,这人过了40岁以后,体检报告完全正常的其实很少,或多或少的,总会有几个指标异常. 当然了,很多指标都不重要,轻微升高或降低都没事,比如尿酸稍微高点,只要跟啤酒. ...

  • 如何理解Excel公式中的各种符号?

    Q:在Excel公式中,我们会使用各种符号连接数字.单元格或函数,从而获得想要的结果,例如,=SQRT((1234-234)/100)^2.能够总结一下这些符号的使用吗? A:下面是Excel公式中使 ...

  • 判断肾功能好坏,这个指标更权威,检查报告中没有这一项

    肾脏具有十分强大的代偿功能,只要有一半的肾脏能正常发挥功能,血肌酐就能维持在正常水平.也就是说,当血肌酐升高时,肾功能可能已经损伤了一半以上,甚至超过70%. 所以,血肌酐并非肾功能的最明显指标,不能 ...

  • 别慌!体检报告中出现这些“小毛病”根本不用怕!

    健康时报 权威健康资讯,因专业而信赖! 定期体检能让人们及时了解自身健康状况,但有时候检查报告上的一些"字眼"却会让不少人心情忐忑.这都是啥意思?需要治疗吗? 事实上,体检报告中有 ...

  • 如何读懂MR报告中的FAZEKAS 评分

    Fazekas医生在1987年提出了Fazekas评分,目前是用于评价T2/FLAIR上的白质高信号病灶最常用到的方法.该评分将白质分为室周白质和深部白质,依据病灶大小和融合情况进行评分: 室周白质( ...