伺服器效能調試工具之vmstat vmstat是一個十分有用的Linux系統監控工具,使用vmstat命令可以得到關於進程、記憶體、記憶體分頁、堵塞IO、traps及CPU活動的資訊。 一、前言 很顯然從名字中我們就可以知道vmstat是一個查看虛擬記憶體(Virtual Memory)使用狀況的工具,但是怎樣通過vmstat來發現系統中的瓶頸呢?在回答這個問題前,還是讓我們回顧一下Linux中關於虛擬記憶體相關內容。 二、虛擬記憶體運行原理 在系統中啟動並執行每個進程都需要使用到記憶體,但不是每個進程都需要每時每刻使用系統分配的記憶體空間。當系統運行所需記憶體超過實際的實體記憶體,核心會釋放某些進程所佔用但未使用的部分或所有實體記憶體,將這部分資料儲存在磁碟上直到進程下一次調用,並將釋放出的記憶體提供給有需要的進程使用。 在Linux記憶體管理中,主要是通過“調頁Paging”和“交換Swapping”來完成上述的記憶體調度。調頁演算法是將記憶體中最近不常使用的頁面換到磁碟上,把活動頁面保留在記憶體中供進程使用。交換技術是將整個進程,而不是部分頁面,全部交換到磁碟上。 分頁(Page)寫入磁碟的過程被稱作Page-Out,分頁(Page)從磁碟重新回到記憶體的過程被稱作Page-In。當核心需要一個分頁時,但發現此分頁不在實體記憶體中(因為已經被Page-Out了),此時就發生了分頁錯誤(Page Fault)。 當系統核心發現可運行記憶體變少時,就會通過Page-Out來釋放一部分實體記憶體。經管Page-Out不是經常發生,但是如果Page-out頻繁不斷的發生,直到當核心管理分頁的時間超過運行程式的時間時,系統效能會急劇下降。這時的系統已經運行非常慢或進入暫停狀態,這種狀態亦被稱作thrashing(顛簸)。 三、使用vmstat 1.用法 vmstat [-a] [-n] [-S unit] [delay [ count]] vmstat [-s] [-n] [-S unit] vmstat [-m] [-n] [delay [ count]] vmstat [-d] [-n] [delay [ count]] vmstat [-p disk partition] [-n] [delay [ count]] vmstat [-f] vmstat [-V] -a:顯示活躍和非活躍記憶體 -f:顯示從系統啟動至今的fork數量 。 -m:顯示slabinfo -n:只在開始時顯示一次各欄位名稱。 -s:顯示記憶體相關統計資訊及多種系統活動數量。 delay:重新整理時間間隔。如果不指定,只顯示一條結果。 count:重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,這時重新整理次數為無窮。 -d:顯示磁碟相關統計資訊。 -p:顯示指定磁碟分割統計資訊 -S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576位元組(byte)。預設單位為K(1024 bytes) -V:顯示vmstat版本資訊。