基于linux服务器的性能分析与优化(五)

来源:互联网 发布:linux x86_64 编辑:程序博客网 时间:2024/06/16 15:01

iostat命令

iostat是I/O statistics(输入/输出统计)的缩写,是对系统的磁盘IO操作进行监视。显示磁盘读写操作的统计信息,同时给出CPU的使用情况。同vmstat一样,iostat也不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

有些机器上没有iostat工具,需要安装一个Systat的工具包,Systat是个开源软件,安装完会多出三个命令:iostat、sar和mpstat。

iostat的语法如下
iostat [ options... ] [ <interval> [ <count> ] ]Options are:[ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x ][ { <device> [ ... ] | ALL } ] [ -p [ { <device> | ALL } ] ]

-c 显示CPU使用情况
-d 显示磁盘使用情况
-k 每秒以KB为单位显示数据
-t 打印出统计信息开始执行时间
-x device 指定要 统计的磁盘设备名称,默认为所有磁盘设备
interval 指定两次统计间隔时间
count 指定统计的次数,达到统计次数后将会自动退出

例如:
iostat -cLinux 2.6.9_7-7-0-0 (webserver)   07/09/2012avg-cpu:  %user   %nice    %sys %iowait   %idle           1.09    0.00    0.78    0.03   98.09
由于使用了-c参数,只是显示系统cpu的统计情况,输出项每项的含义和sar命令的输出完全相同

下面通过iostat -d参数查看系统磁盘的使用情况
 iostat -d 2 3
Linux 2.6.9_7-7-0-0 (webserver)   07/09/2012Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtncciss/c0d0       11.68        10.84        74.20  281061337 1923262480cciss/c0d0p1      0.00         0.00         0.00        624        696Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtncciss/c0d0        0.00         0.00         0.00          0          0cciss/c0d0p1      0.00         0.00         0.00          0          0Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtncciss/c0d0       34.50         0.00      4388.00          0       8776cciss/c0d0p1      0.00         0.00         0.00          0          0
每项的输出含义如下:
Blk_read/s 每秒读取的数据块数
Blk_wrtn/s 每秒写入的数据块数
Blk_read 读取的所有块数
Blk_wrtn 写入的所有块数

需要注意的是,上面输出的第一项是系统从启动到统计时的所有传输信息,第二次输出的数据才代表监测的时间段内系统的传输值。

可以通过Blk_read/s和Blk_wrtn/s的值对磁盘的读写性能有一个基本的了解:如果Blk_read/s值很大,表示磁盘的读写很频繁,可以考虑优化磁盘或程序;如果blk_read/s的值很大,表示磁盘的读操作很多,可以将读取的数据输入内存中进行操作。有一个规则可以遵循:长期的、超大的数据读写,肯定是不正常的,通常会影响性能。

iostat -x组合还提供了对每个磁盘的单独统计,如果不指定磁盘,默认是对所有的磁盘进行统计。
iostat -x /dev/cciss/c0d0 2 3Linux 2.6.9_7-7-0-0 (webserver)   07/09/2012avg-cpu:  %user   %nice    %sys %iowait   %idle           1.09    0.00    0.78    0.03   98.09Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %utilcciss/c0d0   0.05   1.11  1.40 10.28   10.84   74.43     5.42    37.22     7.30     0.11    9.34   0.34   0.40avg-cpu:  %user   %nice    %sys %iowait   %idle           0.56    0.00   18.81    3.25   77.38Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %utilcciss/c0d0   0.00   0.00 65.00  0.00  852.00    0.00   426.00     0.00    13.11     0.29    4.43   4.15  27.00avg-cpu:  %user   %nice    %sys %iowait   %idle           7.05    0.00    5.18    0.44   87.34Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %utilcciss/c0d0   0.00   0.00 11.50  2.50  696.00   20.00   348.00    10.00    51.14     0.05    4.07   2.29   3.20

输出和sar -d输出基本相同,
rrqm/s表示每秒进行合并的读操作数目。
wrqm/s表示每秒进行合并的写操作数目。
r/s表示每秒完成读IO设备的次数
w/s表示每秒完成写IO设备的次数
rsec/s每秒读取的扇区数
wsec/s每秒写入的扇区数。

free命令

free是监控linux内存使用的指令。
free -m             total       used       free     shared    buffers     cachedMem:         48291      33630      14660          0         24      22437-/+ buffers/cache:      11168      37122Swap:          0          0        0
free -m表示查看以M为单位的内存使用情况,重点需要关注free列与cached列的输出值。
由输出可以得知,系统共有48G内存,系统空闲内存还有14660MB,其中buffer cache占了24MB,page cache站了22437MB。
由此可知系统缓存了很多的文件和目录,对于应用程序来说还有37122MB内存可以用,当然这37122MB内存包含了buffer cache和page cache的值,从swap项看出,交换分区还未使用,从应用的角度来说,系统的内存资源还非常充足。
一般有这样的一个经验公式:
当应用程序可用内存/系统物理内存 > 70%时,表示系统内存资源非常充足,不影响性能;
当应用程序可用内存/系统物理内存 < 20%时,表示系统内存资源紧缺,需要增加系统内存;
当 20% < 应用程序可用内存/系统物理内存  < 70%时,表示系统内存基本能满足需求,暂时不影响系统性能
free -g -s 5             total       used       free     shared    buffers     cachedMem:            47         29         18          0          0         27-/+ buffers/cache:          1         45Swap:            0          0          0             total       used       free     shared    buffers     cachedMem:            47         29         18          0          0         27-/+ buffers/cache:          1         45Swap:            0          0          0


free命令还可以实时监控内存的使用情况,使用-s参数可以在指定的时间段内不间断的监控内存使用情况。


其中-g表示以G(1024M)为单位显示内存使用情况


原创粉丝点击