查看CPU使用率是系统管理的最常见的任务之一,Linux系统提供了多种方法来完成这个任务。
1、top命令
首先是使用top命令,直接运行:top
top显示出来的的内容分为两部分,两部分都是定时刷新的,上半部分内容如下:
top - 15:17:51 up 16:57, 2 users, load average: 0.03, 0.01, 0.00
Tasks: 98 total, 1 running, 97 sleeping, 0 stopped, 0 zombie
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
Mem: 1563088k total, 184172k used, 1378916k free, 16776k buffers
Swap: 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 ~]# vmstat
procs -----------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%
3、dstat
[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
这个命令可以每秒刷新一次地显示结果。