Linux运维知识之关于Linux系统指令 top 之 %si 占用高
小标 2018-08-30 来源 : 阅读 8255 评论 0

摘要:本文主要向大家介绍了Linux运维知识之关于Linux系统指令 top 之 %si 占用高,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

本文主要向大家介绍了Linux运维知识之关于Linux系统指令 top 之 %si 占用高,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

续“top %wa 高的问题”之后,又遇到top之%si过高(高峰时段超过95%)的问题。

%wa高,说明磁盘忙。譬如磁盘读写次数非常高。
%si高,是否说明软中断忙?是否也说明软中断次数非常高呢?

为了查证此问题,找了一些Linux监控中断的工具。起初找到oprofile,它非常强大,强大到使用起来摸不着北。能用oprofile监控硬中断,但在%si很高的时候,监控到硬中断为零。
然后找到procinfo可以监控详细的软中断,可以看来设备及对应的中断数。将两个%si高的项目监控结果如下:
----------------------------------------------------------------------
项目A,大压力下场景执行2分钟:

测试前:(未执行测试时,查询前端[服务器C]的数据)
context :11608691780
irq 0: 377348704 timer
irq 14: 41845647 ide0
irq 58:2557376548 0
irq233: 69455022 ioc0 

问题环境:(接口配置在[服务器G]时,查询前端[服务器C]的数据)
context :11609397277          差值:705497
irq 0: 377651500 timer         差值:302796
irq 14: 41848329 ide0          差值:2682
irq 58:2557728212 0             差值:351664
irq233: 69457769 ioc0          差值:2747

正常环境:(接口配置在[服务器E]时,查询前端[服务器C]的数据)
context :11611152447          差值:1755170
irq 0: 378089297 timer         差值:437797
irq 14: 41852253 ide0          差值:3924
irq 58:2558490578 0             差值:762366
irq233: 69506181 ioc0         差值:48412

----------------------------------------------------------------------

项目B,大压力下场景执行2分钟:

测试前:(未执行测试时,[服务器E]的数据)
context :365586128
irq 0: 555887117 timer 
irq 14:   4970216 ide0
irq 98:   6673200 0
irq233:   2963048 ioc0

正常环境:(数据库连接池设置为 localhost )
context :368023507              差值:2437379
irq 0: 556101285 timer         差值:214168
irq 14:   4972124 ide0          差值:1908
irq 98:   7013268 0               差值:340068
irq233:   2968985 ioc0         差值:5937

问题环境:(数据库连接池设置为本机的IP地址)
context :369679349              差值:1655842
irq 0: 556446790 timer         差值:345505
irq 14:   4975148 ide0            差值:3024
irq 98:   7298545 0                 差值:285277
irq233:   2974283 ioc0         差值:5298

----------------------------------------------------------------------

正常环境,指%si值在正常范围内波动。问题环境指%si异常,一般%si会达到70%~95%。差值是对应设备在测试过程中产生的中断数。
正常环境下的中断数比异常情况下的中断数更高。说明:
   计算机在单位有能力处理更多的中断数量,中断数量多并不代表%si高。
   进一步说明了:%si高代表CPU等待软中断完成的时间更高。
结合项目B的实际情况,将LAMP的Mysql连接方式置为永久连接(长连接),%si就不会高了:
1. 说明PHP在连接Mysql在使用localhost连接时不走网络,进程间切换就不废劲,CPU无需等待;
2. 而PHP在使用IP地址进行连接时,进程间切换比较耗费资源,导致CPU等待;
3. 进程间切换就会产生中断,则CPU等待切换就是CPU在等待软中断处理完成。

一直没有理论来证明以上的说法,暂时通过现象来推论,希望有日可以用理论来证实。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 2
看完这篇文章有何感觉?已经有2人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程