Linux vmstat命令實戰詳解

vmstat命令是最經常使用也是我最喜好的Linux/Unix監控工具之一,他能夠根據咱們給定的時間間隔(秒)和採用次數來展現結果。包括服務器的CPU使用率,內存使用,虛擬內存交換狀況,IO讀寫狀況。nginx

 實例:時間間隔2秒。共採集3次web

如今來介紹下各個參數的意思:apache

能夠參考下man vmstat幫助信息。
Procs
r: The number of runnable processes (running or waiting for run time)..--------等待運行時間的進程數量,至關於隊列的概念。我當前的數量爲4個。隊列數過多,說明CPU會比較繁忙。
b: The number of processes in uninterruptible sleep. -------不間斷睡眠中的進程數。
Memory
swpd: the amount of virtual memory used.------虛擬內存使用量,若是大於0,表示你的機器物理內存不足了,若是不是程序內存泄露的緣由,那麼你該升級內存了或者把耗內存的任務遷移到其餘機器。
free: the amount of idle memory.-------空閒的物理內存大小。只是未分配的物理內存,它不是總的可用物理內存大小,實際可用的內存:free+buff+cache-固定不可用的一小部分物理內存。
buff: the amount of memory used as buffers.------把分配但未使用的一部分物理內存,系統用來作臨時寫的存儲,如:目錄裏面有什麼內容、權限等的緩存。
cache: the amount of memory used as cache.----把分配但未使用的一部分物理內存拿來作文件和目錄的緩存,是爲了提升 程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。
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).每秒從磁盤讀入虛擬內存的大小,若是這個值大於0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。個人機器內存充裕,屬於正常。
so Amount of memory swapped to disk (/s). 每秒虛擬內存寫入磁盤的大小,若是這個值大於0,同上。緩存

IO
bi: Blocks received from a block device (blocks/s).——每秒從塊設備接收到的塊數,即讀塊設備。
bo: Blocks sent to a block device (blocks/s).——每秒發送到塊設備的塊數,即寫塊設備。如圖:當我複製文件,就會產生磁盤io,下圖就能夠監控到。服務器


System
in: The number of interrupts per second, including the clock. -----每秒CPU的中斷次數,包括時間中斷
cs: The number of context switches per second.------ 每秒上下文切換次數,例如咱們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,咱們通常作性能測試時會進行幾千併發甚至幾萬併發的測試,選擇web服務器的進程能夠由進程或者線程的峯值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,咱們的代碼就會進入內核空間,致使上下文切換,這個是很耗資源,也要儘可能避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,致使CPU幹正經事的時間少了,CPU沒有充分利用,是不可取的。
CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time) ------運行非內核代碼所花費的時間。(用戶時間,包括良好時間)
sy: Time spent running kernel code. (system time) -------系統CPU時間,若是過高,表示系統調用時間長,例如是IO操做頻繁。
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.611以前,未知。併發

相關文章
相關標籤/搜索