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的单位为毫秒)