系统性能--磁盘/网卡

磁盘使用率ios

监控磁盘使用率有俩个做用/目的:api

1. 第一个目的与应用自己有关,若是应用自己在作大量的磁盘IO操做,那么IO就很容易成为瓶颈。bash

2.即便应用自己并无作大量的磁盘IO,可是可能会因为大量的内存交换,而致使有大量的io,致使应用性能降低。网络

磁盘IO的监控方法:tcp

iostat 5 ,工具

这个命令会显示磁盘每秒,或者必定周期内的写入,写出速度。好比下图:oop

          disk0       cpu    load average
    KB/t  tps  MB/s  us sy id   1m   5m   15m
   35.51   13  0.45   5  2 92  1.33 1.65 1.81

KB/t :每次transfer 35.51kb,tps:每秒作13次transfer,MB/s :每秒作0.45MB的数据传输。 0.45MB=35.51*13 KB性能

或者 iostat -xm 5 ,还能够计算磁盘使用率,不过不知道是怎么算出来的。spa

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
vda               0.00     0.00    0.00    0.80     0.00     0.00     8.00     0.00    0.50   0.25   0.02
vdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
vdc               0.00     5.40    0.00    9.20     0.00     0.06    12.70     0.01    1.09   0.43   0.40

 当写入或者读出的速率太高,或者磁盘使用率太高,就能够形成磁盘io的瓶颈。这时就要想办法下降磁盘IO了。code

若是应用的磁盘IO预计不会很高,那么高的磁盘IO使用率颇有多是因为内存的换入换出形成的,这对服务类的应用是很很差的。

还要一种方法来监控是否有内存换入换出是 vmstat  , 以下图中的si,so就表示换进和换出的速率

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 124668 158788 246668 3298720    0    1     7    21    0    0  3  1 96  0  0    
 0  0 124668 158540 246668 3298832    0    0     0    29 3065 4529  3  1 96  0  0    
 0  0 124668 157648 246668 3299012    0    0     0    65 3306 4868  2  1 97  0  0

总结:

 1. 大量的内存换入换出会影响性能。

 2.写入磁盘遇到瓶颈,多是由于写入的太多,也有多是由于写入的效率不高,致使吞吐量降低。

网络使用率

 网络利用率和磁盘利用率很类似,应用没有充分利用网卡,或者应用使用的量超过了网卡的最大值,都会形成性能的瓶颈。

遗憾的是,标准的系统工具只提供了写入写出的报文数或者字节数,并无直接给出速度仍是使用率,因此使用起来可能没有那么直观。

 系统的标准工具是netstat ,如图:它展现了有哪些网络链接,使用的协议,端口,状态,以及写入写出的字节数(Recv-Q,Send-Q)。

netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 dx-cos-mop02.dx.sanku:46603 set-gh-inf-kms-n:cslistener ESTABLISHED 
tcp        0      0 dx-cos-mop02.:etlservicemgr set-dx-meishi-crm-roo:42296 ESTABLISHED 
tcp        0      0 dx-cos-mop02.:etlservicemgr dx-meishi-crm-task05.:37923 ESTABLISHED 
tcp        0      0 dx-cos-mop02.dx.sanku:40005 dx-mdc-poi-apige:distinct32 ESTABLISHED 
tcp        0      0 dx-cos-mop02.dx.sankua:9501 gh-meishi-merchant-ap:34949 ESTABLISHED 
tcp        0      0 dx-cos-mop02.dx.sanku:18391 dx-mdc-poi-apiget01.d:irdmi ESTABLISHED 
tcp        0      0 dx-cos-mop02.:etlservicemgr dx-cos-coop04.dx.sank:25587 ESTABLISHED 
tcp        0      0 dx-cos-mop02.dx.sanku:54375 dx-wpt-mdc-p:teradataordbms ESTABLISHED 

幸运的是,有一些开源和商业的工具来监控网络带宽,好比 nicstat

% nicstat 5
Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat 

17:05:17 e1000g1 225.7 176.2 905.0 922.5 255.4 195.6 0.33 0.00

其中  e1000g1 表示千兆网络,可是注意网络带宽的单位是字节,因此千兆表示1000/8 =125MB。

这里每秒的写入写出发别是225.7KB/s 176.2KB/s 全部使用率是 (0.2257+0.176.2)/ 125==0.33%

一般来讲,网络的使用率没法达到100%。 这和网络的协议还有中间的传递介质都有很大的关系。一般40%就基本饱和了。

总结:

1. 网络应用要确保网络io不会成为瓶颈。

2. 网络io瓶颈的形成一个是由于写的效率不足形成吞吐量低 ,另一个是由于写了太多,达到了宽带饱和。

相关文章
相关标签/搜索