Linux vmstat 命令 - 報告虛擬記憶體統計的工具

譯者: geekpi發表於2014-01-13

眾所周知,計算機必須有稱之為RAM(隨機訪問記憶體)的儲存器使得計算機工作。RAM指的是插在計算機主機板上的物理儲存。這裡的RAM被用於載入像瀏覽器、文書處理器這類的程式,實際上,你使用的程式都執行在記憶體上。

讓我們假設你有2GB的記憶體。當你在執行作業系統時,你的可用記憶體可能只有1.5GB。接著你使用了大量的程式。當記憶體使用滿之後,你可能再也無法載入更多的程式。淺顯地說,計算機可能會說:"抱歉,你不能在執行更多的程式了,如果你還要執行其他的程式請先關閉一些程式。"

為了解決這個問題,包括Linux在內的各種作業系統使用了一個稱之為虛擬記憶體的方法。這個方法會搜尋最近不在使用的程式的記憶體區域,接著將它們複製到計算機硬碟上。這會騰出一些剩餘記憶體空間給你有機會執行更多的程式。

為了監視虛擬記憶體的活動,我們使用vmstat工具。

什麼是 vmstat

vmstat是一個提供報告虛擬記憶體統計的工具。它包括了系統記憶體、交換和實時處理器利用率。

如何執行 vmstat

mpstat一樣,vmstat包含在sysstat包中。如果你還沒有,請安裝sysstat包。

為了執行vmstat,只需在控制檯輸入vmstat。不帶引數執行vmstat會顯示vmstat的預設結果。

讓我們看下如何瞭解vmstat提供的資訊:

Procs

procs有 r列和b列。r列代表等待訪問CPU的程式數量。而b列意味著睡眠程式的數量。在這些列的下面,是它們的值。從上面的截圖中,我門有2個程式正在等待訪問CPU,0個睡眠程式。

Memory

memory有swpd、 free、 buffcache 這些列。這些資訊和命令free -m相同。swpd列顯示了有多少記憶體已經被交換到了交換檔案或者磁碟。free列顯示了未分配的可用記憶體。buff列顯示了使用中的記憶體。cache列顯示了有多少記憶體可以被交換到交換檔案或者磁碟上如果一些應用需要他們。

Swap

swap顯示了從交換系統上傳送或取回了多少記憶體。si列告訴我們每秒有多少記憶體被從swap移到真實記憶體中(In)。so列告訴我們每秒有多少記憶體被從真實記憶體移到swap中(Out)。

I/O

io依據塊的讀寫顯示了每秒輸入輸出的活動。bi列告訴我們收到的塊數量,bo列告訴我們傳送的塊數量。

System

system顯示了每秒的系統運算元量。in列顯示了系統每秒被中斷的數量。cs列顯示了系統為了處理所以任務而上下文切換的數量。

CPU

CPU告訴了我們CPU資源的使用情況。us列顯示了處理器在非核心程式消耗的時間。sy列顯示了處理器在核心相關任務上消耗的時間。id列顯示了處理器的空閒時間。wa列顯示了處理器在等待IO操作完成以繼續處理任務上的時間。

按間隔時間執行vmstat

作為一個統計工具,使用vmstat最好的方法是使用間隔時間。你可以間斷地捕捉系統狀態。讓我假設以5秒的間隔執行vmstat。只需要在你的控制檯中輸入vmstat 5就行。

命令將會每5秒執行一次,直到你按下Ctrl-C來終止它。你也可以使用第二個引數來控制vmstat執行的次數。

上面的命令會以5秒的間隔執行7次vmstat

顯示活躍和非活躍記憶體

要這麼做,你可以在vmstat後加入-a選項。這是個示例。

顯示磁碟統計資料總結

如果你想,vmstat也可以列印系統磁碟活動統計。使用-D選項就行。

顯示單位

你可以選擇你想列印的顯示單位字元。在-S後跟上k (小寫,1000)、 K (大寫,1024)、 m (小寫,1000000)、 M (大寫,1048576) 位元組. 如果你不想選擇單位,預設使用的是K (1024)。

顯示某個磁碟分割槽的詳細統計資料

要這麼做,你可以使用-p選項跟上裝置名。這裡有個例子。

檔案

vmstat實際上是使用這些檔案獲取的資料。

/proc/meminfo
/proc/stat
/proc/*/stat 

總結

如果你感覺系統執行超出記憶體了,在你增加實體記憶體前,這個工具可以幫助你確定問題的根本原因。通常上,你可以在控制檯中輸入man vmstat獲取更多的關於vmstat的詳細資訊,這會為你顯示vmstat的手冊頁。


via: http://linoxide.com/linux-command/linux-vmstat-command-tool-report-virtual-memory-statistics/

譯者:geekpi 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

相關文章