About me

Tuesday, 3 May 2016

vmstat

Introduction

這是一套虛擬記憶體的統計軟體,統計關於行程,記憶體,分頁,block IO, traps, 磁碟和cpu的活動等等。
vmstat總共有四種模式,分別是「VM」, 「Disk」, 「Disk Partition」, 「Slab」。


語法

vmstat [options] [delay [count]]




OPTIONS

  可以具體指示delay和count,每幾秒顯示一次,共幾次。(eg. 「vmstat 2 5」,每兩秒顯視一次,共顯示五次),如果沒有指定,則只會顯是一次總平均值。 

   -a, --active
          顯示active和inactive記憶體資訊(kernel版本必須2.5.41以上)。

   -f, --forks
          這個選項會顯示自開機以來所有「folk」的數量,包含了「fork」,「vfork」,「clone」等等系統呼叫,總和會剛好等於tasks所建立的數量。每個行程(process)都代表了一個或多個的任務(tasks),取決於執行緒(thread)怎麼寫。

   -m, --slabs
          顯示所有Slab Allocator 的資訊,必須要有root權限。

   -n, --one-header
          只顯示一次header的資訊,跟沒有參數的用法顯示的資訊一樣。

   -s, --stats
          顯示各種event的統計數和記憶體統計的資料。

   -d, --disk
          輸出磁碟使用統計(必須kernel 2.5.70或以上)

   -D, --disk-sum
          顯示所有磁碟活動的統計資料。

   -p, --partition device
          顯示關於partition的所有統計資料(kernel必須要2.5.70以上)
          
   -S, --unit character
        指定輸出的資料格式, 1000 (k), 1024 (K), 1000000 (m), 或是 1048576 (M) bytes.  注意這邊並不會去更改到swap (si/so) 或是block (bi/bo)的資訊。(eg. 「vmstat -S M」)

   -w, --wide
          輸出的寬度會更大,就是在記憶體比較大的系統欄寬比較夠用。

   -V, --version
          顯示版本資訊。

   -h, --help
          顯示help資訊

欄位說明 (VM 模式)

vmstat 

Procs

r: 可執行的行程,也就是正在執行中或是等待執行中的行程數量。
b: 不可中斷 sleep狀態中的行程數量。

Memory

swpd: 虛擬記憶體使用的總量
free: 所有閒置的記憶體總量。
buff: 所有當成buffer的記憶體總量。
cache: 所有當成cache的記憶體總量。
inact: inactive狀態的記憶體總量 (-a option)。[inactive的意思是 - 這個記憶體區段已經被分配給某個行程,但是這個行程已經沒在執行了,有可能已經是zombie了 ]
active:  inactive狀態的記憶體總量 (-a option)。[inactive的意思是 - 被特定行程使用的記憶體]

Swap

si:  從硬碟中swap出來的記憶體總量(每秒)。
so: swap進硬碟的記憶體總量 (每秒)。

IO

bi: 從block裝置接收到的block數量(block/秒)。
bo: 傳送到block裝置的block數量 (block/秒)。

System

in: 每秒中斷的數量。
cs: 每秒context switch的數量。

CPU

所有CPU時間的百分比
us: 跑非Kermel code的時間(包含user time和nice time)。
sy: 跑Kernel code的時間(system time)。
id: 閒置的時間(2.5.41之前也包含IO等待的時間)。
wa: 等待IO的時間(2.5.41之前也包含閒置的時間)。
st: 從虛擬機偷來的時間()。Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.

何謂 從虛擬機偷來的時間( Time stolen from a virtual machine ):
hypervisor 所規劃用來跑VM外面的資源的時間,有可能是其他的VM或者是Hypervisor自己的資源。


ref:


欄位說明(Disk 模式)


vmstat -D

Reads

total: 全部成功讀取完成的總數。
merged: 一次IO讀取一整群資料的次數
sectors: 磁區讀取成功的總數
ms: 花在讀取所耗費的時間(毫秒)。

Writes

total: 全部成功寫入完成的總數。 
merged:  一次IO寫入一整群資料的次數
sectors: 磁區寫入成功的總數。
ms: 花在寫入所耗費的時間(毫秒)。

IO

cur: 正在處理的I/O
s:  花費在所有IO的時間(秒)。

欄位說明(Disk Partition模式)

vmstat -p /dev/sda1


reads:  對這個partition所讀取的次數。
read sectors: 對這個partition的所有讀取次數
writes : 對這個partition所寫入的次數。
requested writes: 對這個partition的所有寫入請求的次數

欄位說明(Slab 模式)

sudo vmstat -m 
cache: Cache 的名字
num: 目前active狀態物件的總數。
total: 所有可取得的物件
size: 每個物件的Size
pages:至少有一個active狀態物件的分頁數量。

相關檔案

/proc/meminfo
/proc/stat
/proc/*/stat

No comments:

Post a Comment