做者:飛哥 (http://hi.baidu.com/imlidapeng)html 版權全部,尊重他人勞動成果,轉載時請註明做者和原始出處及本聲明。linux
1、前言算法 很顯然從名字中咱們就能夠知道vmstat是一個查看虛擬內存(Virtual Memory)使用情況的工具,可是怎樣經過vmstat來發現系統中的瓶頸呢?在回答這個問題前,仍是讓咱們回顧一下Linux中關於虛擬內存相關內容。緩存 2、虛擬內存運行原理app 在系統中運行的每一個進程都須要使用到內存,但不是每一個進程都須要每時每刻使用系統分配的內存空間。當系統運行所需內存超過實際的物理內存,內核會釋放某些進程所佔用但未使用的部分或全部物理內存,將這部分資料存儲在磁盤上直到進程下一次調用,並將釋放出的內存提供給有須要的進程使用。ide 在Linux內存管理中,主要是經過「調頁Paging」和「交換Swapping」來完成上述的內存調度。調頁算法是將內存中最近不常使用的頁面換到磁盤上,把活動頁面保留在內存中供進程使用。交換技術是將整個進程,而不是部分頁面,所有交換到磁盤上。工具 分頁(Page)寫入磁盤的過程被稱做Page-Out,分頁(Page)從磁盤從新回到內存的過程被稱做Page-In。當內核須要一個分頁時,但發現此分頁不在物理內存中(由於已經被Page-Out了),此時就發生了分頁錯誤(Page Fault)。spa 當系統內核發現可運行內存變少時,就會經過Page-Out來釋放一部分物理內存。經管Page-Out不是常常發生,可是若是Page-out頻繁不斷的發生,直到當內核管理分頁的時間超過運行程式的時間時,系統效能會急劇降低。這時的系統已經運行很是慢或進入暫停狀態,這種狀態亦被稱做thrashing(顛簸)。htm
3、使用vmstatblog 1.用法 vmstat [-a] [-n] [-S unit] [delay [ count]] -a:顯示活躍和非活躍內存 -f:顯示從系統啓動至今的fork數量 。引伸閱讀: http://www.cnblogs.com/leoo2sk/archive/2009/12/11/talk-about-fork-in-linux.html delay:刷新時間間隔。若是不指定,只顯示一條結果。
例子1:每2秒輸出一條結果
字段說明: Procs(進程): r: 運行隊列中進程數量 Memory(內存): swpd: 使用虛擬內存大小 Swap: si: 每秒從交換區寫到內存的大小 IO:(如今的Linux版本塊的大小爲1024bytes) bi: 每秒讀取的塊數 系統: in: 每秒中斷數,包括時鐘中斷。 CPU(以百分比表示): us: 用戶進程執行時間(user time) 例子2:顯示活躍和非活躍內存
使用-a選項顯示活躍和非活躍內存時,所顯示的內容除增長inact和active外,其餘顯示內容與例子1相同。 字段說明: Memory(內存): inact: 非活躍內存大小(當使用-a選項時顯示) active: 活躍的內存大小(當使用-a選項時顯示) |