linux監控命令 vmstat

2022-03-17 05:41:14 字數 3717 閱讀 3706

vmstat(virtual memory statistics 虛擬記憶體統計) 命令用來顯示linux系統虛擬記憶體狀態,也可以報告關於程序、記憶體、i/o等系統整體執行狀態。

vmstat [-a] [-n] [-t] [-s unit] [delay [ count]]

vmstat [-s] [-n] [-s unit]

vmstat [-m] [-n] [delay [ count]]

vmstat [-d] [-n] [delay [ count]]

vmstat [-p disk partition] [-n] [delay [ count]]

vmstat [-f]

vmstat [-v]

-a:顯示活躍和非活躍記憶體

-f:顯示從系統啟動至今的fork數量 。

-m:顯示slabinfo

-n:只在開始時顯示一次各欄位名稱。

delay:重新整理時間間隔。如果不指定,只顯示一條結果。

count:重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,這時重新整理次數為無窮。

-p:顯示指定磁碟分割槽統計資訊

-s:使用指定單位顯示。引數有 k 、k 、m 、m ,分別代表1000、1024、1000000、1048576位元組(byte)。預設單位為k(1024bytes)

-v:顯示vmstat版本資訊

linux系統的記憶體分為物理記憶體和虛擬記憶體兩種。物理記憶體是真實的,也就是物理記憶體條上的記憶體。而虛擬記憶體則是採用硬碟空間補充物理記憶體,將暫時不使用的記憶體頁寫到硬碟上以騰出更多的物理記憶體讓有需要的程序使用。當這些已被騰出的記憶體頁需要再次使用時才從硬碟(虛擬記憶體)中讀回記憶體。這一切對於使用者來說是透明的。通常對linux系統來說,虛擬記憶體就是swap分割槽。

在linux系統中監控cpu的效能主要關注3個指標:執行佇列、cpu使用率和上下文切換,理解這3個指標的概念和原理對於發現和處理cpu效能問題有很大的幫助。

1. 執行佇列

每個cpu都會維護乙個執行佇列,排程器會不斷地輪詢讓佇列中的程序執行,直到程序執行完畢將其由佇列中刪除。如果cpu過載,就會出現排程器跟不上系統要求,導致執行佇列中等待執行的程序越來越多。正常來說,每個cpu的執行佇列不要超過3,如果是雙核cpu就不要超過6。

2. cpu使用率

cpu使用率一般可以分為一下幾個部分。

a. 使用者程序:執行使用者程序所占用的cpu時間的百分比。

b. 系統程序:執行系統程序和中斷所占用的cpu的時間百分比。

c. 等待io:因為io等待而使cpu處於idle狀態的時間百分比。

d. 空閒:cpu處於空閒狀態的時間百分比。    

如果cpu的空閒率長期低於10%,那麼表示cpu的資源已經非常緊張,應該考慮程序優化或新增更多地cpu。「等待io」表示cpu因等待io資源而被迫處於空閒狀態,這時候的cpu並沒有處於運算狀態,而是被白白浪費了,所以「等待io應該越小越好。」

3.上下文切換

通過cpu時間輪詢的方法,linux能夠支援多工同時執行。對於普通的cpu,核心會排程和執行這些程序,每個程序都會被分配cpu時間片並執行。當乙個程序用完時間片或者被更高優先順序的程序搶占時間塊後,它會被轉到cpu的等待執行佇列中,同時讓其他程序在cpu上執行。這個程序切換的過程被稱為上下文切換。過多的山下文切換會造成系統的很大的開銷。

vmstat 3 10 #每三秒採集一次 採集10次

[root@kuaihe-soa-001 ~]#vmstat 3 10procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

3 0 0 3411540 143276 4090752 0 0 0 2 0 0 2 0 97 0 0

1 0 0 3411524 143276 4090776 0 0 0 44 11573 20813 2 1 97 0 0

0 0 0 3411496 143276 4090812 0 0 0 23 12900 23074 3 1 97 0 0

0 0 0 3411668 143276 4090836 0 0 0 7 12766 22840 3 1 97 0 0

0 0 0 3411576 143276 4090864 0 0 0 43 13068 23159 3 1 96 0 0

1 0 0 3410944 143276 4090916 0 0 0 1 15414 25585 4 1 95 0 0

0 0 0 3411008 143276 4090940 0 0 0 40 13854 24412 3 1 96 0 0

0 0 0 3411000 143276 4090976 0 0 0 35 13697 24478 3 1 96 0 0

0 0 0 3411240 143276 4091012 0 0 0 49 15058 25377 4 1 95 0 0

0 0 0 3411456 143276 4091040 0 0 0 137 13683 24426 3 1 96 0 0

對於記憶體監控,需要關心的指標包括:swpd、free、buff、cache、si和so,尤其需要重視的是free、si和so

swpd 使用虛擬記憶體大小

free 空閒物理記憶體大小。

buff 用作緩衝的記憶體大小。

cache 用作快取的記憶體大小,如果cache的值大的時候,說明cache處的檔案數多,如果頻繁訪問到的檔案都能被cache處,那麼磁碟的讀io bi會非常小。

si 每秒從交換區寫到記憶體的大小,由磁碟調入記憶體。

so 每秒寫入交換區的記憶體大小,由記憶體調入磁碟。

如果free 空閒記憶體非常小,但是si 和 so長期為0 表示記憶體剛好夠用,並沒有頻繁的從磁碟交換記憶體。暫時不會對系統產生影響

如果 si 或者so非常大,表示物理記憶體不夠用,頻繁的通過磁碟進行虛擬記憶體交換,因為磁碟讀取效能很低,會產生效能影響 需要釋放和增加物理記憶體

r:在執行佇列中等待的程序數。

b:在等待io的程序數。

cs:每秒的上下文切換的次數。

us:使用者程序使用的cpu時間(%)。us過高 可能需要優化演算法,或者有死迴圈

sy:系統程序使用的cpu時間(%)。

id:cpu空閒時間(%)。

wa:等待io所消耗的cpu時間(%)。

1.如果 id非常小,同時b>0 wa非常高,那麼表示cpu過高是io導致的 並非由於cpu資源不足。使用者應檢查系統中正在進行io操作的程序,並進行調整和優化。

bo:寫資料到磁碟的速率,

bi:從磁碟讀的速度

注意:隨機磁碟讀寫的時候,這2個值越大(如超出1024k),能看到cpu在io等待的值也會越大。

Linux監控工具vmstat命令詳解

一 前言 二 虛擬記憶體原理 在系統中執行的每個程序都需要使用到記憶體,但不是每個程序都需要每時每刻使用系統分配的記憶體空間。當系統執行所需記憶體超過實際的物理記憶體,核心會釋放某些程序所占用但未使用的部分或所有物理記憶體,將這部分資料儲存在磁碟上直到程序下一次呼叫,並將釋放出的記憶體提供給有需要的...

linux基本監控 vmstat

1.vmstat vmstat virtual meomory statistics 虛擬記憶體統計 的縮寫,很多linux unix會預設安裝。是核心執行緒 虛擬記憶體 磁碟 陷阱和 cpu 活動的統計資訊,不足是無法對某個程序深入分析。虛擬記憶體 系統中執行的程序都需要使用記憶體,當記憶體不足時...

Linux效能監控 vmstat

r the number of processes waiting for run time.等待執行的程序數 b the number of processes in uninterruptible sleep.處在非中斷睡眠狀態的程序數 swpd the amount of virtual me...