Linux中國

Linux vmstat 命令 – 報告虛擬內存統計的工具

為了解決這個問題,包括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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。