linux下查看系统资源(iostat,top,vmstat,mpstat等)

为什么我们要查看系统资源呢?

维护服务器的时候,要经常查看系统资源的,可以了解一下服务器的运行情况。系统优化时,比如使用memcache时,我要决定分配多少内存给他合适呢,mysql的innodb的参数优化也要考虑到内存使用率,i/o的频繁程度啊,如果使用apache的话,要启动多少个httpd比较合适呢,如果数据库的数据太大,我要看看是不是增加磁盘呢等等,这个时候,我们要知道,有多少资源可用,才能更好的优化我们的系统。

1,top命令查看cpu,mem的使用情况

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21093 root 15 0 12700 736 524 S 2 0.0 80:01.36 cmahostd
 1 root 15 0 10324 84 52 S 0 0.0 1:10.26 init
 2 root RT -5 0 0 0 S 0 0.0 0:27.31 migration/0

%cpu 进程所占cpu时间的百分比%mem 进程所占内存的百分比

2,top 后 在shift + p 所占进程的排序显示

3,top 后 在shift + m 所占内存的排序显示

PID USER PR NI VIRT RES SHR S   %CPU %MEM TIME+ COMMAND
 11981 root 34 19 276m 43m 1452 S 0 1.1 64:22.57 yum-updatesd
 2601 apacheus 15 0 413m 37m 5376 S 0 1.0 0:00.76 httpd
 18833 apacheus 15 0 415m 36m 5908 S 0 0.9 0:01.49 httpd
 18832 apacheus 15 0 415m 35m 5804 S 0 0.9 0:02.19 httpd
 22881 apacheus 15 0 415m 35m 5924 S 0 0.9 0:01.62 httpd

4,vmstat 2 每隔2秒查看一下内存,交换分区,i/o,cpu的使用情况

[root@tank ~]# vmstat 2
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 182164 187684 708508 1997704 0 0 1 5 0 0 0 0 100 0 0
 1 0 182164 187396 708508 1997708 0 0 0 36 1020 2203 0 0 99 0 0
 0 0 182164 187708 708508 1997712 0 0 0 114 1056 2367 1 0 99 0 0

memory下的参数说明:

swpd: 已用的交换空间数量

free:空闲内存数量

buff:缓冲使用的内存数量

cache:   文件系统缓存使用的内存数量

swap交换分区下的参数说明:

si: 从磁盘转换到内存的数量so: 从内存转换到磁盘的数量

i/o磁盘i/o下的参数说明:

bi: 从块设备读的数量bo: 写块设备的数量

cpu下的一些参数说明:

us: 用户方式下所占CPU工作时间的百分比

sy:内核进程所占cpu工作时间的百分比

id:cpu处在空闲状态下的时间百分比

wa: 等待I/O所占用CPU工作时间的百分比

上面个人觉得比较重要的参数说明

5,df 查看磁盘的使用情况

[root@tank ~]# df
Filesystem 1K-blocks Used    Available Use% Mounted on
/dev/sda2 39674192 7252020 30374288 20% /
/dev/sda3 49594196 8586164 38448076 19% /usr
/dev/sda4 59515556 6405700 50037828 12% /var

1K-blocks 总的磁盘大小

used表示已使用了多少

available表示还有多少空间可用

use% 磁盘的使用率

6,mpstat和sar查看cpu的运行情况,这二个差不多

[root@tank ~]# mpstat

11:38:39 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
11:38:39 AM all 0.11 0.01 0.05 0.13 0.00 0.01 0.00 99.68 84.51

%user 用户所占的CPU时间百分比

%nicenice值为负进程的CPU时间百分比

%sys系统内核所占cpu时间的百分比

%iowaiti/o等待所占cpu时间的百分比

%idlecpu闲置时间的百分比

intr/s 每秒cpu的中断次数

7,free -m来查看内存,交换分区使用情况,如果不加-m的话,最小单位是KB

[root@tank ~]# free -m
              total used free shared buffers cached
Mem: 3823 3647 175 0 703 1945
-/+ buffers/cache: 998 2825
Swap: 24003 177 23825

total 表时总量是多少

used已经使用了多少

free还有多少空闲

shared共享是多少

buffers缓冲是多少

cached 缓存了多少

8,iostat查看磁盘i/o情况

[root@krlcgcms01 ~]# iostat -x 2
Linux 2.6.18-92.1.10.el5 (krlcgcms01) 12/10/2010

avg-cpu: %user %nice %system %iowait %steal %idle
 0.11 0.01 0.06 0.13 0.00 99.68

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
cciss/c0d0 0.21 7.78 0.44 3.00 12.13 86.31 28.63 0.03 7.68 3.39 1.17

rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s

wrqm/s:每秒进行merge的写操作数目。即delta(wmerge)/s

r/s:每秒完成的读I/O设备次数。即delta(rio)/s

w/s:每秒完成的写I/O设备次数。即delta(wio)/s

rsec/s:每秒读扇区数。即delta(rsect)/s

wsec/s:每秒写扇区数。即delta(wsect)/s

rkB/s:每秒读K字节数。是rsect/s的一半,因为每扇区大小为512字节。(需要计算)

wkB/s:每秒写K字节数。是wsect/s的一半。(需要计算)

avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。delta(rsect+wsect)/delta(rio+wio)

avgqu-sz:平均I/O队列长度。即delta(aveq)/s/1000(因为aveq的单位为毫秒)。

await:平均每次设备I/O操作的等待时间(毫秒)。即delta(ruse+wuse)/delta(rio+wio)

svctm:平均每次设备I/O操作的服务时间(毫秒)。即delta(use)/delta(rio+wio)

%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。即delta(use)/s/1000(因为use的单位为毫秒)

相关推荐