查看CPU使用率是系统管理的最常见的任务之一,Linux系统提供了多种方法来完成这个任务。

首先是使用top命令,直接运行:top

top显示出来的的内容分为两部分,两部分都是定时刷新的,上半部分内容如下:

top - 15:17:51 up 16:57,  2 users,  load average: 0.03, 0.01, 0.00Tasks:  98 total,   1 running,  97 sleeping,   0 stopped,   0 zombieCpu(s):  0.2%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%stMem:   1563088k total,   184172k used,  1378916k free,    16776k buffersSwap:  3145720k total,        0k used,  3145720k free,   100776k cached

可以很方便的了解一些常规信息,如服务器当前时间――突然我发现系统时间不正确,于是我用date -s "2013-4-14 16:20:15" 修改正确。

top的结果里面还包括:服务器上线时间(up 16:57,接近17个小时),有两个用户登录,平均负载情况等。

其它信息大家自己领悟,我们主要是看到Cpu(s)0.2%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st 这段,us表示用户使用0.2%,sy表示系统使用,id表示空余的cpu,其它的几项相对用得比较少。2、vmstat

直接运行vmstat

[root@localhost ~]# vmstatprocs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 0  0      0 1378428  17104 100780    0    0     1     1    4    5  0  0 100  0  0

解释一下这些参数:

r表示运行队列的大小,b表示由于IO等待而block的线程数量,in表示中断的数量,cs表示上下文切换的数量,us表示用户CPU时间,sys表示系统CPU时间,wa表示由于IO等待而是CPU处于idle状态的时间,id表示CPU处于idle状态的总时间。

这样子就比较方便对号入座去分析了。

关于CPU率的分布,牛人们是这样说的:如果CPU在满负荷运行,应该符合下列分布,a) User Time:65%~70%b) System Time:30%~35%c) Idle:0%~5%

[root@localhost ~]# dstat----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw  0   0 100   0   0   0|1314B 1531B|   0     0 |   0     0 |   7     8  0   1  99   0   0   0|   0     0 |  60B  826B|   0     0 |  14    15  0   0 100   0   0   0|   0   116k|  60B  346B|   0     0 |  23    24  1   0 100   0   0   0|   0     0 |  60B  346B|   0     0 |  16    15  0   0 100   0   0   0|   0     0 |  60B  346B|   0     0 |  19    21这个命令可以每秒刷新一次地显示结果。

03-13 23:44