天天看點

linux vmstat參數詳解,Linux常用指令 | vmstat、top

vmstat指令

vmstat指令是Linux中常見的監控工具,可以列印給定時間間隔内伺服器的CPU使用率,記憶體使用,虛拟記憶體交換情況,IO讀寫情況。它是對系統的整體情況進行統計,不足之處是無法對某個程序進行深入分析。

vmstat的使用一般是通過兩個數字參數來完成的,第一個參數是采樣的時間間隔數,機關是秒,第二個參數是采樣的次數,如:

linux vmstat參數詳解,Linux常用指令 | vmstat、top

vmstat 2表示讓伺服器一直每隔2秒就采集一次系統資訊并列印,可以使用Ctrl+C退出程式。

vmstat 2 3表示讓伺服器每隔2秒就采集一次系統資訊并列印,列印3次。

vmstat指令結果參數的意義

r:表示運作隊列

b:表示堵塞的程序

swpd:虛拟記憶體已使用的大小,如果大于0,表示機器實體記憶體不足了,如果不是程式記憶體洩露的原因,那麼應該更新記憶體或者把耗記憶體的任務遷移到其他機器。

free:空閑的實體記憶體的大小

buff:用作緩沖的記憶體大小

cache:用作緩存的記憶體大小

si:每秒從磁盤讀入虛拟記憶體的大小,若值大于0,表示實體記憶體不過或者記憶體洩漏

so:每秒虛拟記憶體寫入磁盤的大小,若值大于0,同上

bi:塊裝置每秒接收的塊數量,這裡的塊裝置是指系統上所有的磁盤和其他塊裝置,預設塊大小是1024byte。

bo:每秒發送到塊裝置的塊數量,例如我們讀取檔案,bo就要大于0。bi和bo一般都要接近0,不然就是IO過于頻繁,需要調整。

in:每秒CPU的中斷次數,包括時間中斷

cs:每秒上下文切換次數

us:使用者CPU時間。 us的值比較高時,說明使用者程序消耗的CPU時間多

sy:系統CPU時間,如果太高,表示系統調用時間長,例如是IO操作頻繁

id:空閑 CPU時間,一般來說,id + us + sy = 100,

wa:表示等待使用CPU的百分比(該數值大說明CPU不足)

st:表示被偷走的CPU所占百分比(該值一般為0,不用關注)

關于buffer/cache

Cache:高速緩存

位于CPU與主記憶體間的一種容量較小但速度很高的存儲器。

由于CPU的速度遠高于主記憶體,CPU直接從記憶體中存取資料要等待一定時間周期,Cache中儲存着CPU剛用過或循環使用的一部分資料,當CPU再次使用該部分資料時可從Cache中直接調用,這樣就減少了CPU的等待時間,提高了系統的效率。

Buffer:緩沖區

一個用于存儲速度不同步的裝置或優先級不同的裝置之間傳輸資料的區域。通過緩沖區,可以使程序之間的互相等待變少,進而使從速度慢的裝置讀入資料時,速度快的裝置的操作程序不發生間斷。

小結

buffers是指用來給塊裝置做的緩沖大小,他隻記錄檔案系統的metadata以及 tracking in-flight pages.

cached是用來給檔案做緩沖。

也就是說:buffers是用來存儲,目錄裡面有什麼内容,權限等等。

而cached直接用來記憶我們打開的檔案,如果你想知道他是不是真的生效,你可以試一下,先後執行兩次指令#man X ,你就可以明顯的感覺到第二次的開打的速度快很多。

如果 cache 的值很大,說明cache住的檔案數很多。如果頻繁通路到的檔案都能被cache住,那麼磁盤的讀IO 必會非常小。

top指令

top指令可以實時顯示系統中各個程序的資源占用狀況,類似于Windows的任務管理器,它提供了實時地對系統的狀态監視,該指令可以按CPU使用.記憶體使用和執行時間對任務進行排序;而且該指令的很多特性都可以通過互動式指令或者在個人定制檔案中進行設定.

top指令輸出結果

先看看top指令的輸出結果:

linux vmstat參數詳解,Linux常用指令 | vmstat、top

其中前5行是系統整體資訊的統計資訊,從第6行開始為程序資訊區統計資訊區域,主要顯示各個程序的詳細資訊。

第一行:top -

第一行是任務隊列資訊,同uptime指令的執行結果,參數含義如下:

top - 15:31:37 up 3:00, 1 user, load average: 0.00, 0.01, 0.05

15:31:37表示目前時間

up 3:00 表示系統的運作時間

1 user表示目前登入的使用者數量為1

load average: 0.01, 0.04, 0.05表示系統負載,即任務隊列的平均長度。三個數值分别為 1分鐘、5分鐘、15分鐘前到現在的平均值。

第二、三行為程序和CPU的資訊。當有多個CPU時,這些内容會超過兩行。内容如下:

第二行:Tasks:

126 total: 程序總數

1 running: 正在運作的程序數

125 sleeping: 睡眠的程序數

0 stopped: 停止的程序數

0 zombie: 僵屍程序數

第三行:Cpu(s):

0.0% us: 使用者空間占用CPU百分比

0.0% sy: 核心空間占用CPU百分比

0.0% ni: 使用者程序空間内改變過優先級的程序占用CPU百分比

100% id: 空閑CPU百分比

0.0% wa: 等待輸入輸出的CPU時間百分比

0.0% hi: 硬體CPU中斷占用百分比

0.0% si: 軟中斷占用百分比

0.0% st: 虛拟機占用百分比

第四行為記憶體資訊

total:實體記憶體總量

used:使用的實體記憶體總量

free:空閑記憶體總量

buffers:用作核心緩存的記憶體量

cached:用作緩存的記憶體大小

第五行為swap交換分區資訊

total:交換區總量

used:已使用的總量

free:空閑中總量

avail Mem:可用總量

第六行及以下顯示了各程序(任務)的狀态監控

各列所代表的含義如下:

PID 程序id

USER 程序所有者

PR 程序優先級

NI nice值。負值表示高優先級,正值表示低優先級

VIRT 程序使用的虛拟記憶體總量,機關kb。VIRT=SWAP+RES

RES 程序使用的、未被換出的實體記憶體大小,機關kb。RES=CODE+DATA

SHR 共享記憶體大小,機關kb

S 程序狀态。D=不可中斷的睡眠狀态 R=運作 S=睡眠 T=跟蹤/停止 Z=僵屍程序

%CPU 上次更新到現在的CPU時間占用百分比

%MEM 程序使用的實體記憶體百分比

TIME+ 程序使用的CPU時間總計,機關1/100秒

COMMAND 程序名稱(指令名/指令行)

top的常見使用

常用選項:

-d:指定每兩次螢幕資訊重新整理之間的時間間隔。當然使用者可以使用s互動指令來改變之

-p:通過指定監控程序ID來僅僅監控某個程序的狀态。

-c:顯示整個指令行而不隻是顯示指令名

-i:使top不顯示任何閑置或者僵死程序。

常用互動指令:

ctrl+m:根據駐留記憶體大小進行排序

ctrl+p:根據CPU使用百分比大小進行排序。

ctrl+w:将目前設定寫入~/.toprc檔案中。這是寫top配置檔案的推薦方法。

i:忽略閑置和僵死程序。這是一個開關式指令。

h: 顯示幫助畫面,給出一些簡短的指令總結說明。

k:終止一個程序。系統将提示使用者輸入需要終止的程序PID,以及需要發送給該程序什麼樣的信号。一般的終止程序可以使用15信号;如果不能正常結束那就使用信号9強制結束該程序。預設值是信号15。在安全模式中此指令被屏蔽。

q: 退出程式。

常用操作:

top :每隔5秒顯式所有程序的資源占用情況

top -d 2:每隔2秒顯式所有程序的資源占用情況

top -c:每隔5秒顯式程序的資源占用情況,并顯示程序的指令行參數(預設隻有程序名)

top -p 12345 -p 6789:每隔5秒顯示pid是12345和pid是6789的兩個程序的資源占用情況

top -d 2 -c -p 123456:每隔2秒顯示pid是12345的程序的資源使用情況,并顯式該程序啟動的指令行參數