linux 命令mvstat的學習

2021-07-09 09:23:11 字數 3674 閱讀 2669

vmstat是virtual meomory statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、程序、cpu活動進行監控。他是對系統的整體情況進行統計,不足之處是無法對某個程序進行深入分析。

虛擬記憶體執行原理

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

分頁(page)寫入磁碟的過程被稱作page-out,分頁(page)從磁碟重新回到記憶體的過程被稱作page-in。當核心需要乙個分頁時,但發現此分頁不在物理記憶體中(因為已經被page-out了),此時就發生了分頁錯誤(page fault)。

當系統核心發現可執行記憶體變少時,就會通過page-out來釋放一部分物理記憶體。經管page-out不是經常發生,但是如果page-out頻繁不斷的發生,直到當核心管理分頁的時間超過執行程式的時間時,系統效能會急劇下降。這時的系統已經執行非常慢或進入暫停狀態,這種狀態亦被稱作thrashing(顛簸)。

使用vmstat

1.用法

vmstat [-a] [-n] [-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(1024 bytes)

-v:顯示vmstat版本信 類別

專案含義

說明procs

r等待執行的任務數

展示了正在執行和等待cpu資源的任務個數。當這個值超過了cpu數目,就會出現cpu瓶頸了

bmemory

swpd

正在使用的swap大小單位k

free

空閒的記憶體空間

buff

已使用的buff大小,對塊裝置的讀寫進行緩衝

cache

已使用的cache大小,檔案系統的cache

inact

active

swap

si交換記憶體使用,由磁碟調入記憶體

so交換記憶體使用,由記憶體調入磁碟

iobi

從塊裝置讀入的資料總量(讀磁碟) (kb/s),

bo寫入到塊裝置的資料總理(寫磁碟) (kb/s)

system

in每秒產生的中斷次數

cs每秒產生的上下文切換次數

上面這2個值越大,會看到由核心消耗的cpu時間會越多

cpuus

使用者程序消耗的cpu時間百分比

us 的值比較高時,說明使用者程序消耗的cpu時間多,但是如果長期超過50% 的使用,那麼我們就該考慮優化程式演算法或者進行加速了

sy核心程序消耗的cpu時間百分比

sy 的值高時,說明系統核心消耗的cpu資源多,這並不是良性的表現,我們應該檢查原因。

id空閒

waio等待消耗的cpu時間百分比

wa 的值高時,說明io等待比較嚴重,這可能是由於磁碟大量作隨機訪問造成,也有可能是磁碟的頻寬出現瓶頸(塊操作)。

命令比較簡單,但涉及到的記憶體、磁碟、cpu之間的關係還是挺複雜的,需要進一步學習相關的knowledge。

通常使用vmstat 5 5(表示在5秒時間內進行5次取樣)命令測試。將得到乙個資料彙總他能夠反映真正的系統情況。

#vmstat 5 5

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

r b   swpd   free   buff cache   si   so    bi    bo   in    cs us sy id wa

1 0 62792   3460   9116 88092    6   30   189    89 1061   569 17 28 54 2

0 0 62792   3400   9124 88092    0    00    14 884   434 4 14 81 0

0 0 62792   3400   9132 88092    0    00    14 877   424 4 15 81 0

1 0 62792   3400   9140 88092    0    00    14 868   418 6 20 74 0

1 0 62792   3400   9148 88092    0    00    15 847   400 9 25 67 0

linux 記憶體監控vmstat命令輸出分成六個部分:

(1)程序procs:

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

b:在等待io的程序數 。

(2)linux 記憶體監控記憶體memoy:

swpd:現時可用的交換記憶體(單位kb)。 

free:空閒的記憶體(單位kb)。

buff: 緩衝去中的記憶體數(單位:kb)。

cache:被用來做為快取記憶體的記憶體數(單位:kb)。

(3) linux 記憶體監控swap交換頁面

si: 從磁碟交換到記憶體的交換頁數量,單位:kb/秒。

so: 從記憶體交換到磁碟的交換頁數量,單位:kb/秒。

(4)linux 記憶體監控 io塊裝置:

bi: 傳送到塊裝置的塊數,單位:塊/秒。

bo: 從塊裝置接收到的塊數,單位:塊/秒。

(5)linux 記憶體監控system系統: 

in: 每秒的中斷數,包括時鐘中斷。

cs: 每秒的環境(上下文)轉換次數。

(6)linux 記憶體監控cpu**處理器:

cs:使用者程序使用的時間 。以百分比表示。

sy:系統程序使用的時間。 以百分比表示。

id:**處理器的空閒時間 。以百分比表示。

假如 r經常大於 4 ,且id經常小於40,表示**處理器的負荷很重。 假如bi,bo 長期不等於0,表示物理記憶體容量太小。

小白學linux的常用網路命令

write 使用者名稱以ctrl d儲存結束 wall 資訊ping 選項 ip位址 c 指定傳送次數傳送 mail 使用者 在本地內網中使用 ctrl d儲存結束 ctrl z直接退出檢視 mail不加任何東西使用完mail可以使用序列號進行檢視相關的郵件 按h之檢視內容 按d 序列號刪除 再按h...

Linux命令每日學之PS

ps process status 命令是常用的linux命令,其用於顯示系統當前執行的程序.用於檢視程序狀態,是否是殭屍程序,程序執行所處的狀態,程序所占用的資源 cpu 時間 等。是必要掌握的命令。注意 ps命令只是顯示瞬時的程序狀態資訊。區別與top命令,則是動態顯示程序狀態資訊,即是實時重新...

Linux命令每日學之find

find命令是在指定目錄下查詢檔案或者子目錄。區別與grep的是 grep 是在檔案中查詢字元。如果不指定引數,find預設查詢當前目錄下檔案和子目錄。find 引數 目錄 檔名 在指定目錄查詢滿足條件的檔案或者子目錄。name 檔名稱 查詢名稱為指定名稱的檔案。iname 檔名稱 查詢名稱為指定名...