Linux vmstat:報(bào)告虛擬內(nèi)存統(tǒng)計(jì)的工具
眾所周知,計(jì)算機(jī)必須有稱之為RAM(隨機(jī)訪問(wèn)內(nèi)存)的存儲(chǔ)器使得計(jì)算機(jī)工作。RAM指的是插在計(jì)算機(jī)主板上的物理存儲(chǔ)。這里的RAM被用于加載像瀏覽器、文字處理器這類的程序,實(shí)際上,你使用的程序都運(yùn)行在內(nèi)存上。
讓我們假設(shè)你有2GB的內(nèi)存。當(dāng)你在運(yùn)行操作系統(tǒng)時(shí),你的可用內(nèi)存可能只有1.5GB。接著你使用了大量的程序。當(dāng)內(nèi)存使用滿之后,你可能再也無(wú)法加載更多的程序。淺顯地說(shuō),計(jì)算機(jī)可能會(huì)說(shuō):"抱歉,你不能在運(yùn)行更多的程序了,如果你還要運(yùn)行其他的程序請(qǐng)先關(guān)閉一些程序。"
為了解決這個(gè)問(wèn)題,包括Linux在內(nèi)的各種操作系統(tǒng)使用了一個(gè)稱之為虛擬內(nèi)存的方法。這個(gè)方法會(huì)搜索最近不在使用的程序的內(nèi)存區(qū)域,接著將它們拷貝到計(jì)算機(jī)硬盤上。這會(huì)騰出一些剩余內(nèi)存空間給你有機(jī)會(huì)運(yùn)行更多的程序。
為了監(jiān)視虛擬內(nèi)存的活動(dòng),我們使用vmstat工具。
什么是 vmstat
vmstat是一個(gè)提供報(bào)告虛擬內(nèi)存統(tǒng)計(jì)的工具。它包括了系統(tǒng)內(nèi)存、交換和實(shí)時(shí)處理器利用率。
如何運(yùn)行 vmstat
和mpstat一樣,vmstat包含在sysstat包中。如果你還沒(méi)有,請(qǐng)安裝sysstat包。
為了運(yùn)行vmstat,只需在控制臺(tái)輸入vmstat。不帶參數(shù)運(yùn)行vmstat會(huì)顯示vmstat的默認(rèn)結(jié)果。
讓我們看下如何了解vmstat提供的信息:
Procs
procs有 r列和b列。r列代表等待訪問(wèn)CPU進(jìn)程的數(shù)量。而b列意味著睡眠進(jìn)程的數(shù)量。在這些列的下面,是它們的值。從上面的截圖中,我門有2個(gè)進(jìn)程正在等待訪問(wèn)CPU,0個(gè)睡眠進(jìn)程。
Memory
memory有swpd、 free、 buff 和 cache 這些列。這些信息和命令free -m相同。swpd列顯示了有多少內(nèi)存已經(jīng)被交換到了交換文件或者磁盤。free列顯示了未分配的可用內(nèi)存。buff列顯示了使用中的內(nèi)存。cache列顯示了有多少內(nèi)存可以被交換到交換文件或者磁盤上如果一些應(yīng)用需要他們。
Swap
swap顯示了從交換系統(tǒng)上發(fā)送或取回了多少內(nèi)存。si列告訴我們每秒有多少內(nèi)存被從swap移到真實(shí)內(nèi)存中(In)。so列告訴我們每秒有多少內(nèi)存被從真實(shí)內(nèi)存移到swap中(Out)。
I/O
io依據(jù)塊的讀寫顯示了每秒輸入輸出的活動(dòng)。bi列告訴我們收到的塊數(shù)量,bo列告訴我們發(fā)送的塊數(shù)量。
System
system顯示了每秒的系統(tǒng)操作數(shù)量。in列顯示了系統(tǒng)每秒被中斷的數(shù)量。cs列顯示了系統(tǒng)為了處理所以任務(wù)而上下文切換的數(shù)量。
CPU
CPU告訴了我們CPU資源的使用情況。us列顯示了處理器在非內(nèi)核程序消耗的時(shí)間。sy列顯示了處理器在內(nèi)核相關(guān)任務(wù)上消耗的時(shí)間。id列顯示了處理器的空閑時(shí)間。wa列顯示了處理器在等待IO操作完成以繼續(xù)處理任務(wù)上的時(shí)間。
按間隔時(shí)間運(yùn)行vmstat
作為一個(gè)統(tǒng)計(jì)工具,使用vmstat***的方法是使用間隔時(shí)間。你可以間斷地捕捉系統(tǒng)狀態(tài)。讓我假設(shè)以5秒的間隔運(yùn)行vmstat。只需要在你的控制臺(tái)中輸入vmstat 5就行。
命令將會(huì)每5秒運(yùn)行一次,直到你按下Ctrl-C來(lái)終止它。你也可以使用第二個(gè)參數(shù)來(lái)控制vmstat運(yùn)行的次數(shù)。
上面的命令會(huì)以5秒的間隔運(yùn)行7次vmstat。
顯示活躍和非活躍內(nèi)存
要這么做,你可以在vmstat后加入-a選項(xiàng)。這是個(gè)示例。
顯示磁盤統(tǒng)計(jì)數(shù)據(jù)總結(jié)
如果你想,vmstat也可以打印系統(tǒng)磁盤活動(dòng)統(tǒng)計(jì)。使用-D選項(xiàng)就行。
顯示單位
你可以選擇你想打印的顯示單位字符。在-S后跟上k (小寫,1000)、 K (大寫,1024)、 m (小寫,1000000)、 M (大寫,1048576) 字節(jié). 如果你不想選擇單位,默認(rèn)使用的是K (1024)。
顯示某個(gè)磁盤分區(qū)的詳細(xì)統(tǒng)計(jì)數(shù)據(jù)
要這么做,你可以使用-p選項(xiàng)跟上設(shè)備名。這里有個(gè)例子。
文件
vmstat實(shí)際上是使用這些文件獲取的數(shù)據(jù)。
/proc/meminfo /proc/stat /proc/*/stat
總結(jié)
如果你感覺(jué)系統(tǒng)運(yùn)行超出內(nèi)存了,在你增加物理內(nèi)存前,這個(gè)工具可以幫助你確定問(wèn)題的根本原因。通常上,你可以在控制臺(tái)中輸入man vmstat獲取更多的關(guān)于vmstat的詳細(xì)信息,這會(huì)為你顯示vmstat的手冊(cè)頁(yè)。
via: http://linoxide.com/linux-command/linux-vmstat-command-tool-report-virtual-memory-statistics/