深入理解perf报告中的swapper进程
2019-09-30 06:39:39来源:博客园 阅读 ()
深入理解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状态
至此,本文结束
在下才疏学浅,有撒汤漏水的,请各位不吝赐教...
原文链接:https://www.cnblogs.com/MrVolleyball/p/11606248.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Linux—yum使用详解
- 深入学习KVM 2020-04-18
- K8s深入了解 2020-03-08
- Linux性能调优 | 01 平均负载的理解和分析 2019-11-05
- 理解Device Tree Usage 2019-03-13
- 理解inode 以及 软链接和硬链接概念区分 2019-01-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash