在Linux下有很多系統效能分析工具,比較常見的有top、free、ps、time、timex、uptime等。下文將介
紹vmstat的使用。
用vmstat監視記憶體使用量情況
vmstat是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、進程、
CPU活動進行監視。它是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析。
vmstat的文法如下:
vmstat [-V] [-n] [delay [count]]
其中,-V表示列印出版本資訊;-n表示在周期性迴圈輸出時,輸出的頭部資訊僅顯示一次;delay
是兩次輸出之間的延遲時間;count是指按照這個時間間隔統計的次數。對於vmstat輸出各欄位的含義,
可運行man vmstat查看
oracle@oracle [/home/oracle] vmstat 30
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 7 191060 46436 8516 6320140 0 0 25145 3988 2953 2568 7 2 45 47 0
0 8 191060 46772 8944 6262940 0 0 18306 4123 2762 821 6 2 42 50 0
0 8 191060 46048 9476 6214968 0 0 16523 5260 2444 3257 7 2 39 52 0
0 8 191060 45504 10584 6260116 3 0 14665 5954 2553 2630 5 5 40 49 0
0 7 191060 80140 11088 6280616 0 0 20427 2419 2942 612 4 2 55 39 0
1 6 191060 46632 10948 6305656 0 0 17997 4201 1295 430 4 3 60 33 0
1 8 191060 45676 10240 6191764 7 0 29717 888 1258 1532 5 6 58 31 0
0 9 191060 45600 8608 6180256 0 0 24880 2717 1220 1470 3 1 56 40 0
0 10 191060 44984 9056 6169620 0 0 24803 1591 1224 1480 3 1 51 44 0
0 9 191060 46476 9816 6165352 0 0 20735 2587 1186 1154 3 1 50 46 0
0 8 191060 46524 11084 6011804 9 0 15602 5370 1223 1671 5 2 46 47 0
PS: 30秒寫一次,沒有限制,如果有限制列印5次: vmstat 30 5
Procs
r: 等待啟動並執行進程數
b: 處在非中斷睡眠狀態的進程數 (等待IO進程數)
w: 被交換出去的可啟動並執行進程數。
此數由 linux 計算得出,但 linux 並不耗盡交換空間
准測
r,b≈0
Memory
swpd: 虛擬記憶體使用方式,單位:KB (切換到交換記憶體上得記憶體)
如果swpd的值不為0,或者還比較大,但是SI,SO的值長期為0,這種情況不必擔心影響系統效能
free: 閒置記憶體,單位KB (閒置實體記憶體)
buff: 被用來做為緩衝的記憶體數,單位:KB (作為buffercache的記憶體,對塊裝置的讀寫進行緩衝)
cache: 作為page cache的記憶體,檔案系統的cache
如果cache的值大的時候,說明cache出得檔案數多,如果頻繁訪問到的檔案都被cache到,那麼磁
盤的讀IO bi會非常小。
Swap
si: 從磁碟交換到記憶體的交換頁數量,單位:KB/秒
so: 從記憶體交換到磁碟的交換頁數量,單位:KB/秒
記憶體夠用的時候這兩個值都是0,如果這兩個值長期大於0,系統效能會受到影響,磁碟的IO和CPU資
源都會唄消耗
如果free很少,但是si so也很少(大多數時候為0),不用擔心效能受到影響。
IO
bi: 發送到塊裝置的塊數,單位:塊/秒 (讀磁碟)
bo: 從塊裝置接收到的塊數,單位:塊/秒 (寫磁碟)
這兩個值越大,能看到CPU在IO等待的值也會越大。
System
in: 每秒的中斷數,包括時鐘中斷
cs: 每秒的環境(上下文)切換次數
這兩個值越大,會看到由核心消耗的CPU時間會越大。
CPU
按 CPU 的總使用百分比來顯示
us: CPU 使用時間
sy: CPU 系統使用時間
id: 閑置時間
wa: IO等待消耗的CPU時間百分比
通常情況下 sy所佔用的時間百分比小於10%,否則就需要檢查系統消耗CPU情況,
在單使用者下最理想的狀態是使cpu處於100%工作狀態,
如果在多使用者環境中us+sys》80,進程就會在運行隊列中花費等待時間,回應時間和輸送量就會下降。
wa值高時,說明IO等待比較嚴重,可能由於磁碟大量隨機訪問,也有可能磁碟出現瓶頸(塊操作)
wa>40表明磁碟io沒有也許存在不合理的平衡,或者對磁碟操作比較頻繁。
us持續大於50,服務高峰期可以接受。