> Linux教程 > 系统运维 >

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时间百分比
%nice                           nice值为负进程的CPU时间百分比
%sys                             系统内核所占cpu时间的百分比
%iowait                       i/o等待所占cpu时间的百分比
%idle                            cpu闲置时间的百分比
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的单位为毫秒)
(责任编辑:IT)