一、前言
vmstat指令是最常見的Linux/Unix監控工具,可以展現給定時間間隔的伺服器的狀态值,包括伺服器的CPU使用率,記憶體使用,虛拟記憶體交換情況,IO讀寫情況。
二、虛拟記憶體原理
在系統中運作的每個程序都需要使用到記憶體,但不是每個程序都需要每時每刻使用系統配置設定的記憶體空間。當系統運作所需記憶體超過實際的實體記憶體,核心會釋放某些 程序所占用但未使用的部分或所有實體記憶體,将這部分資料存儲在磁盤上直到程序下一次調用,并将釋放出的記憶體提供給有需要的程序使用。
在Linux記憶體管理中,主要是通過“調頁Paging”和“交換Swapping”來完成上述的記憶體排程。調頁算法是将記憶體中最近不常使用的頁面換到磁盤上,把活動頁面保留在記憶體中供程序使用。交換技術是将整個程序,而不是部分頁面,全部交換到磁盤上。
分頁(Page)寫入磁盤的過程被稱作Page-Out,分頁(Page)從磁盤重新回到記憶體的過程被稱作Page-In。當核心需要一個分頁時,但發現此分頁不在實體記憶體中(因為已經被Page-Out了),此時就發生了分頁錯誤(Page Fault)。
當系統核心發現可運作記憶體變少時,就會通過Page-Out來釋放一部分實體記憶體。經管Page-Out不是經常發生,但是如果Page-out頻繁不斷 的發生,直到當核心管理分頁的時間超過運作程式的時間時,系統效能會急劇下降。這時的系統已經運作非常慢或進入暫停狀态,這種狀态亦被稱作 thrashing(颠簸)。
三、vmstat用法說明
vmstat
-a:顯示活躍和非活躍記憶體
-f:顯示從系統啟動至今的fork數量 。
-m:顯示slabinfo
-n:隻在開始時顯示一次各字段名稱。
-s:顯示記憶體相關統計資訊及多種系統活動數量。
delay:重新整理時間間隔。如果不指定,隻顯示一條結果。
count:重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,就會一直重新整理,直到手動終止
-d:顯示磁盤相關統計資訊。
-p:顯示指定磁盤分區統計資訊
-S:使用指定機關顯示。參數有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576位元組(byte)。預設機關為K(1024 bytes)
示例:
[root@Master kernels]# 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 576236 88904 975596 0 0 3 19 16 15 0 0 99 0 0
[root@Master kernels]# vmstat -S M 1 5
1 0 0 562 86 952 0 0 3 19 16 15 0 0 99 0 0
0 0 0 562 86 952 0 0 0 0 20 16 0 0 100 0 0
0 0 0 562 86 952 0 0 0 0 15 20 0 0 100 0 0
0 0 0 562 86 952 0 0 0 0 13 20 0 0 100 0 0
0 0 0 562 86 952 0 0 0 0 10 14 0 0 100 0 0
[root@Master kernels]#
[root@Master kernels]# vmstat -S M 1 2
0 0 0 562 86 952 0 0 0 0 21 18 0 0 100 0 0
[root@Master kernels]#
字段說明:
procs:
r:運作隊列中程序數量,一般不應該大于cpu數量,如果長期大于cpu數量,則考慮對cpu進行調優
b:等待資源的程序數,如I/O等待
memory:
swpd:使用虛拟記憶體的大小,如果swpd的值不為0,但是si,so的值長期為0,這種情況不會影響系統性能,因為linux會主動去使用swap,在sysctl中有個參數為vm.swappiness,預設為60,在記憶體足夠時,建議設成0
free:空閑實體記憶體大小
buff:用作緩沖區的記憶體大小
cache:用作緩存的記憶體大小
swap:
si:每秒從交換分區置換到記憶體的大小,由磁盤寫入記憶體
so:每秒從記憶體置換到交換分區的大小,由記憶體寫入磁盤
記憶體夠用的時候,這2個值都是0,如果這2個值長期大于0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。
io:
bi:每秒讀取的塊數,在linux上可以通過tunefs來檢視塊大小,以計算每秒讀取的資料大小
bo:每秒寫入的塊數
這兩個值越大,CPU在IO等待的值就會越大
system:
in:每秒處理的中斷數,包括時鐘中斷
cs:每秒上下文切換數
這兩個值越大,則核心消息的CPU時間越大
CPU:
us:使用者程序消耗的cpu
sy:核心系統程序消耗的cpu
wa:IO等待造成的cpu消耗,如果該值高時,可能由于磁盤大量随機通路導緻,也可能是磁盤出現瓶頸
id:空閑的cpu
本文轉自 dengaosky 51CTO部落格,原文連結:http://blog.51cto.com/dengaosky/1852644,如需轉載請自行聯系原作者