关于Linux系统指令 top 之 %si 占用高,分析实例一
续“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系统指令 top 之 %si 占用高,分析实例一的更多相关文章
- Linux下java进程CPU占用率高分析方法(一)
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- Linux下java进程CPU占用率高分析方法
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- (转)Linux下java进程CPU占用率高-分析方法
Linux下java进程CPU占用率高-分析方法 原文:http://itindex.net/detail/47420-linux-java-%E8%BF%9B%E7%A8%8B?utm_source ...
- linux系统下top命令参数详解
简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...
- Linux系统使用iftop查看带宽占用情况
Linux系统下如果服务器带宽跑满了,查看跟哪个ip通信占用带宽比较多,可以通过iftop命令进行查询,使用方法如下: 1 安装方法[软件官网地址:http://www.ex-parrot.com/~ ...
- 查找linux系统下的端口被占用进程的两种方法 【转】
在linux下开发时,你的软件可能要使用某一个端口,或者想查找某一个端口是否被占用.需要怎么做呢??这的确是一个比较烦恼的问题,我也此为这个苦恼过.但是通过查找man手册,还是同事的交流.总结出来两种 ...
- windows / linux系统中,端口被占用解决方法
一.在windows操作系统中,查询端口占用和清除端口占用的程序 提升权限后用:netstat -b或用 1.查询端口占用的进程ID 点击"开始"-->"运行&qu ...
- linux系统 initrd.img中init启动脚本分析
概述:这篇文章主体内容来源于网上转载.前面几篇文章倾向于制作initrd.img,这篇文章更倾向于initrd.img的运行过程:加载framebuff驱动 ide驱动和文件系统驱动,最后进入到真正的 ...
- Linux系统手动安装rpm包依赖关系分析(以Kernel升级为例)
有在Linux系统中安装软件的经历的人都知道,在Linux系统中手动安装软件不想在Windows下安装软件那么方便,直接双击,然后下一步下一步就可以把软件成功的装入到系统中,而在Linux系统中,安装 ...
随机推荐
- 使用C#WebClient类访问(上传/下载/删除/列出文件目录)
在使用WebClient类之前,必须先引用System.Net命名空间,文件下载.上传与删除的都是使用异步编程,也可以使用同步编程, 这里以异步编程为例: 1)文件下载: static void Ma ...
- 手把手带你画一个 时尚仪表盘 Android 自己定义View
拿到美工效果图.咱们程序猿就得画得一模一样. 为了不被老板喷,仅仅能多练啊. 听说你认为前面几篇都so easy,那今天就带你做个相对照较复杂的. 转载请注明出处:http://blog.csdn.n ...
- C#基础第七天-作业-利用面向对象的思想去实现名片-动态添加
1.利用面向对象的思想去实现: (增加,修改,删除,查询,查询全部)需求:根据人名去(删除/查询).指定列:姓名,年龄,性别,爱好,电话. 多条添加 , 动态添加 名片 本系列教程: C#基础总结之八 ...
- 基础001_Xilinx V7资源
作者:桂. 时间:2018-02-08 09:37:35 链接:http://www.cnblogs.com/xingshansi/p/8430247.html 前言 本文主要是Xilinx V7系 ...
- Node.js使用rabbitMQ(一)
目前使用的开发环境主要还是win,所以也只是介绍在win下的rabbitMQ的使用. 一.安装rabbitMQ(Installing on Windows) 关于安装地址,参见:Installing ...
- sudo: /etc/sudoers is owned by uid 755, should be 0
在ubuntu环境下, 想往/etc/sudoers中添加可以执行sudo操作的用户,使用root将/etc/sudoers的权限修改为755后,提示出现标题中的错误: 修正方法:将/etc/sudo ...
- PowerShell控制台字体设置
1.打开注册表: HKEY_CURRENT_USER\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe 2.找到键 ...
- Atitti html5 h5 新特性attilax总结
Atitti html5 h5 新特性attilax总结 Attilax觉得不错的新特性 3.语义Header和Footer (The Semantic Header and Footer) 8.占位 ...
- vue2.0 组件化及组件传值
组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有些情况下, ...
- javascript 关于局部变量和全局变量
js中函数运行过程不仅仅是单纯的局部变量覆盖全局变量.和函数里面的声明情况有关. 比方: <script> var a =1; function test(){ alert(a); //a ...