在Load average 高的情況下如何鑑別系統瓶頸。

pythontab發表於2014-10-16

在Load average 高的情況下如何鑑別系統瓶頸。是CPU不足,還是io不夠快造成? 或是記憶體不足? 

一:檢視系統負載vmstat 

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      0 496056 889316 4065748    0    0     9    41   55   51  0  0 99  1  0

1 : procs 

procs 

 r  b

 0  0

r :執行和等待cpu時間片的程式數,如果長期大於1,說明cpu不足,需要增加cpu。 

b :在等待資源的程式數,比如正在等待I/O、或者記憶體交換等。 

2 : memory 

-----------memory----------

swpd   free   buff  cache  

 0    496056 889316 4065748

swpd :切換到記憶體交換區的記憶體數量(k表示)。 

       如果swpd的值不為0,或者比較大,比如超過了100m,只要si、so的值長期為0,系統效能還是正常 

free :當前的空閒頁面列表中記憶體數量(k表示) 

buff :作為buffer cache的記憶體數量,一般對塊裝置的讀寫才需要緩衝。 

cache :作為page cache的記憶體數量,一般作為檔案系統的cache, 

        如果cache較大,說明用到cache的檔案較多,如果此時IO中bi比較小,說明檔案系統效率比較好。 

3 : swap 

---swap--

 si   so

 0    0 

si :由記憶體進入記憶體交換區數量。 

so :由記憶體交換區進入記憶體數量。 

4 : IO 

-----io----

 bi    bo 

 9    41

bi :從塊裝置讀入資料的總量(讀磁碟)(每秒kb)。 

bo :塊裝置寫入資料的總量(寫磁碟)(每秒kb) 

這裡我們設定的bi+bo參考值為1000,如果超過1000,而且wa值較大應該考慮均衡磁碟負載,可以結合iostat輸出來分析。 

5 : system 顯示採集間隔內發生的中斷數 

--system--

 in   cs

 55   51

in  :在某一時間間隔中觀測到的每秒裝置中斷數。 

cs :每秒產生的上下文切換次數,如當 cs 比磁碟 I/O 和網路資訊包速率高得多,都應進行進一步調查。 

6 : cpu 表示cpu的使用狀態 

 -----cpu------

cs us sy id wa st

51 0  0  99 1  0

us :使用者方式下所花費 CPU 時間的百分比。us的值比較高時,說明使用者程式消耗的cpu時間多,但是如果長期大於50%,需要考慮最佳化使用者的程式。 

sy :核心程式所花費的cpu時間的百分比。這裡us + sy的參考值為80%,如果us+sy 大於 80%說明可能存在CPU不足。 

wa  :IO等待所佔用的CPU時間的百分比。這裡wa的參考值為30%,如果wa超過30%,說明IO等待嚴重, 

      這可能是磁碟大量隨機訪問造成的,也可能磁碟或者磁碟訪問控制器的頻寬瓶頸造成的(主要是塊操作)。 

id :cpu處在空閒狀態的時間百分比 


相關文章