磁盤使用率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瓶頸的形成一個是由於寫的效率不足形成吞吐量低 ,另一個是由於寫了太多,達到了寬帶飽和。