性能指标之资源指标-CPU-谁占用了CPU-进程级

本节介绍如何查看哪些进程占用了较多的CPU,这些进程代表的含义,后续从哪里着手深入定位。


AIX当中,通常可以topas实时查看到哪个进程消耗了较多的CPU。类似的,linux当中可以通过top命令查看。


也可以通过topas –P按照CPU利用率排序

PAGE SPACE:The virtual working set size used by process (4 KB pages)

 

往往性能分析需要采用记录下来的监控数据,而不是实时数据。Nmon的TOP SHEET常常被用来做初步的性能分析,如图:


1  异常进程占用

以下图为例,占用CPU最高的是cicsas,也就是主要干活的进程,这个没的说。而占用CPU排在第2的进程是j2pg,通过以往的经验,这个进程是异常的进程。异常进程如何分析呢?

首先,要分析异常的进程占用CPU的时间段。同样是在Nmon的TOP SHEET中通过“Command”的筛选,查看j2pg在什么时间段占用CPU高。

发现j2pg在每次nmon打点监控的时候都消耗大量CPU。j2pg是个系统进程,看起来像是jfs2文件系统在执行page这样的动作的一个函数,但具体是哪个应用的函数直接或间接调用了这个系统函数,导致了这个结果,参见后续函数级分析的章节。


提前透露一下,这个场景中,由于应用过度频繁的调用了sync函数去做缓存刷磁盘的动作,导致了系统进程j2pg的高企。


2  Zombie进程占用

下面这个例子中,进程<default zombie>是最消耗CPU。

Zombie,顾名思义,就是僵尸进程。一个僵尸进程为什么会占用大量CPU呢?


其实zombie进程有两种可能性,一种是真正的僵尸进程,另一种是当进程销毁的时候,一个短暂的瞬间,进程会处于zombie状态。


根据上面的描述,可以初步分析出,如果zombie占用大量CPU,那么估计不是真正的僵尸进程,而是处于销毁过程中的进程,因为进程的创建、销毁都会消耗大量的CPU资源。


那么为什么这个销毁过程中的zombie会在测试过程中一直占用这么多CPU呢?答案就是,进程不断的被销毁。当然,进程不断被销毁的同时,一定有不断的进程创建,一定是进程反复被创建和销毁。


那么进程为什么会反复被创建和销毁呢?很可能进程处理几笔报文后就自杀了,也就是没有采用进程池。至此,我们只通过一个CPU图形,就可以把应用逻辑的bug找出来,CPU分析的威力是大大的。


3  周期性进程占用

下图中,CPU利用率有明显的毛刺。

这种情况有几种可能:

第一:发送到该服务器的业务量本身有周期性的增大。

第二:某个进程周期性占用

为分析是哪种情况,首先查看哪些进程消耗了CPU。

除了cicsas是真正干活的进程,另外多出来一个PamsTimerSvr进程大量消耗CPU。


查看这个进程消耗CPU的时间点。

可以清晰的看到,该进程每隔一分钟就出来捣一次乱,那么既然是周期性进程,直接找监控系统的开发人员就可以了,咨询监控软件时候时间点发起监控、内部发起了什么操作或命令。如果是测试环境并且对系统比较熟悉,直接kill了这个进程继续测试也是可选之道。


4  核心交易进程占用

本来就应该是这个核心进程占用CPU高,但根据历史经验,这个核心进程以前的占用没有现在多,现在的问题可能是某个bug触发,或者应用版本的更换导致;那么需进入函数级分析(后续章节介绍)。


5  特定类型进程占用

比如JAVA进程占用CPU特别大,需进入函数级分析(后续章节介绍)。


Oracle、DB2等数据库进程占用CPU特别大,需采用Oracle AWR,db2pd等专门工具进行分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值