天天看點

linux的vmstat指令,vmstat指令參數詳解

vmstat是Virtual Meomory Statistics(虛拟記憶體統計)的縮寫

vmstat指令可以對整個機器的程序、記憶體、頁面交換空間、磁盤IO、CPU活動進行監控。這些資訊反映了系統的負載情況。

不足之處是無法對某個程序進行深入分析。vmstat 5 8 #每5秒采樣一次,共采集8次

vmstat 10 #每10秒采樣一次

linux的vmstat指令,vmstat指令參數詳解

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(cpu核數) ,且id經常小于40,表示中央處理器的負荷很重。

假如bi,bo 長期不等于0,表示實體記憶體容量太小。

每個參數的含義:

Procs

r: The number of processes waiting for run time.等待運作時的程序數

b: The number of processes in uninterruptible sleep.不間斷睡眠中的程序數

Memory

swpd: the amount of virtual memory used.使用的虛拟記憶體量

free: the amount of idle memory.空閑記憶體量

buff: the amount of memory used as buffers.用作buffer的記憶體量

cache: the amount of memory used as cache.用作cache的記憶體量

inact: the amount of inactive memory. (-a option)非活動記憶體量

active: the amount of active memory. (-a option)活動記憶體量

Swap

si: Amount of memory swapped in from disk (/s).swap in

so: Amount of memory swapped to disk (/s).swap in

IO

bi: Blocks received from a block device (blocks/s). blocks in

bo: Blocks sent to a block device (blocks/s). blocks out

System

in: The number of interrupts per second, including the clock.每秒的中斷數,包括時鐘

cs: The number of context switches per second.每秒上下文切換次數

CPU

These are percentages of total CPU time.些是總CPU時間的百分比

us: Time spent running non-kernel code. (user time, including nice time)運作非核心代碼所花費的時間

sy: Time spent running kernel code. (system time)運作核心代碼所花費的時間

id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.空閑時間。在Linux 2.5.41之前,這包括IO等待時間。

wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.等待IO的時間。在Linux 2.5.41之前,包含在空閑狀态。

st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.從虛拟機中竊取的時間。在Linux 2.6.11之前,未知。

當運作隊列r值超過了CPU數目,就會出現CPU瓶頸了。如果運作隊列過大,表示你的CPU很繁忙,一般會造成CPU使用率很高。

b 表示阻塞的程序

swpd 虛拟記憶體已使用的大小

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

Linux/Unix的聰明之處,把空閑的實體記憶體的一部分拿來做檔案和目錄的緩存,是為了提高程式執行的性能,當程式使用記憶體時,buffer/cached會很快地被使用

cs 每秒上下文切換次數,例如調用系統函數,就要進行上下文切換,線程的切換,也要程序上下文切換,這個值要越小越好。太大了,要考慮調低線程或者程序的數目。例如在 apache 和 nginx 這種 web 伺服器中,做性能測試時會進行幾千并發甚至幾萬并發的測試,選擇web伺服器的程序可以由程序或者線程的峰值一直下調,壓測,直到cs到一個比較小的值,這個程序和線程數就是比較合适的值了。系統調用也是,每次調用系統函數,代碼就會進入核心空間,導緻上下文切換,這個很耗資源,也要盡量避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,導緻CPU幹正經事的時間少了,CPU沒有充分利用,是不可取的。

一般來說,id + us + sy +wa= 100,一般認為id是空閑CPU使用率,us是使用者CPU使用率,sy是系統CPU使用率。