当前位置: 主页 > 性能调优 >

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

时间:2013-05-06 23:22来源:转载 作者:网络 点击:
iostat命令 iostat是I/O statistics(输入/输出统计)的缩写,是对系统的磁盘IO操作进行监视。显示磁盘读写操作的统计信息,同时给出CPU的使用情况。同vmstat一样,iostat也不能对某个进程进
欢迎大家分享自己的文档,请点击查阅:分享方法,Linux系统运维
如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……


iostat命令

iostat是I/O statistics(输入/输出统计)的缩写,是对系统的磁盘IO操作进行监视。显示磁盘读写操作的统计信息,同时给出CPU的使用情况。同vmstat一样,iostat也不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
 
有些机器上没有iostat工具,需要安装一个Systat的工具包,Systat是个开源软件,安装完会多出三个命令:iostat、sar和mpstat。
 
iostat的语法如下
[plain] view plaincopy
 
  1. iostat [ options... ] [ <interval> [ <count> ] ]  
  2. Options are:  
  3. [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x ]  
  4. [ { <device> [ ... ] | ALL } ] [ -p [ { <device> | ALL } ] ]  

-c 显示CPU使用情况
-d 显示磁盘使用情况
-k 每秒以KB为单位显示数据
-t 打印出统计信息开始执行时间
-x device 指定要 统计的磁盘设备名称,默认为所有磁盘设备
interval 指定两次统计间隔时间
count 指定统计的次数,达到统计次数后将会自动退出
 
例如:
[plain] view plaincopy
 
  1. iostat -c  
  2.   
  3. Linux 2.6.9_7-7-0-0 (webserver)   07/09/2012  
  4.   
  5. avg-cpu:  %user   %nice    %sys %iowait   %idle  
  6.            1.09    0.00    0.78    0.03   98.09  
由于使用了-c参数,只是显示系统cpu的统计情况,输出项每项的含义和sar命令的输出完全相同
 
下面通过iostat -d参数查看系统磁盘的使用情况
[plain] view plaincopy
 
  1. iostat -d 2 3  
[plain] view plaincopy
 
  1. Linux 2.6.9_7-7-0-0 (webserver)   07/09/2012  
  2.   
  3.   
  4. Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn  
  5. cciss/c0d0       11.68        10.84        74.20  281061337 1923262480  
  6. cciss/c0d0p1      0.00         0.00         0.00        624        696  
  7.   
  8. Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn  
  9. cciss/c0d0        0.00         0.00         0.00          0          0  
  10. cciss/c0d0p1      0.00         0.00         0.00          0          0  
  11.   
  12.   
  13. Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn  
  14. cciss/c0d0       34.50         0.00      4388.00          0       8776  
  15. cciss/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组合还提供了对每个磁盘的单独统计,如果不指定磁盘,默认是对所有的磁盘进行统计。
[plain] view plaincopy
 
  1. iostat -x /dev/cciss/c0d0 2 3  
  2. Linux 2.6.9_7-7-0-0 (webserver)   07/09/2012  
  3.   
  4. avg-cpu:  %user   %nice    %sys %iowait   %idle  
  5.            1.09    0.00    0.78    0.03   98.09  
  6.   
  7. Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util  
  8. cciss/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.40  
  9.   
  10. avg-cpu:  %user   %nice    %sys %iowait   %idle  
  11.            0.56    0.00   18.81    3.25   77.38  
  12.   
  13. Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util  
  14. cciss/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.00  
  15.   
  16. avg-cpu:  %user   %nice    %sys %iowait   %idle  
  17.            7.05    0.00    5.18    0.44   87.34  
  18.   
  19. Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util  
  20. cciss/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内存使用的指令。
[plain] view plaincopy
 
  1. free -m  
  2.              total       used       free     shared    buffers     cached  
  3. Mem:         48291      33630      14660          0         24      22437  
  4. -/+ buffers/cache:      11168      37122  
  5. Swap:          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%时,表示系统内存基本能满足需求,暂时不影响系统性能
[plain] view plaincopy
 
  1. free -g -s 5  
  2.              total       used       free     shared    buffers     cached  
  3. Mem:            47         29         18          0          0         27  
  4. -/+ buffers/cache:          1         45  
  5. Swap:            0          0          0  
  6.   
  7.              total       used       free     shared    buffers     cached  
  8. Mem:            47         29         18          0          0         27  
  9. -/+ buffers/cache:          1         45  
  10. Swap:            0          0          0  

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

转载请注明linux系统运维
http://www.linuxyw.com/linux/tiaoyou/20130506/240.html

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
栏目列表
推荐内容