天天看點

Linux vmstat具體解釋(系統IO)

能夠展現給定時間間隔的server的狀态值,包含server的CPU使用率,記憶體使用,虛拟記憶體交換情況,IO讀寫情況 

vmstat 2 10 

2: 每隔2s 

10 : 統計10次

procs ———–memory———- —swap– —–io—- -system– ——cpu—– 

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

1 5 0 173436 591640 8272204 0 0 69 55 32 265 6 5 86 3 0 

1 4 0 169912 592224 8273480 0 0 1180 214 4271 13984 2 3 40 55 0 

0 5 0 172544 592648 8276524 0 0 1266 8 4231 13970 3 3 41 53 0 

0 5 0 162404 593260 8283660 0 0 2328 0 4458 14854 2 3 21 74 0 

4 5 0 174216 594412 8267996 0 0 1842 334 4592 15473 4 6 8 82 0 

2 5 0 160628 595204 8274300 0 0 2384 0 4400 15003 2 3 14 81 0 

0 5 0 172136 595152 8262144 0 0 2356 348 4357 14578 2 3 14 81 0 

0 5 0 167064 596552 8269084 0 0 3060 22 4489 14594 3 5 19 74 0 

0 6 0 160192 597148 8274024 0 0 2072 688 4318 14866 2 3 25 70 0 

0 5 0 168100 597504 8258316 0 0 1734 282 4501 14670 2 5 21 72 0

r 表示執行隊列(就是說多少個程序真的配置設定到CPU)。我測試的server眼下CPU比較空暇,沒什麼程式在跑,當這個值超過了CPU數目。就會出現CPU瓶頸 了。這個也和top的負載有關系。一般負載超過了3就比較高,超過了5就高。超過了10就不正常了,server的狀态非常危急。top的負載相似每秒的執行隊 列。

假設執行隊列過大,表示你的CPU非常繁忙,通常會造成CPU使用率非常高。 

b 表示堵塞的程序,這個不多說,程序堵塞。大家懂的。 

swpd 虛拟記憶體已使用的大小。假設大于0。表示你的機器實體記憶體不足了。假設不是程式記憶體洩露的原因。那麼你該更新記憶體了或者把耗記憶體的任務遷移到其它機器。

free 空暇的實體記憶體的大小。我的機器記憶體總共8G,剩餘3415M。 

buff Linux/Unix系統是用來存儲。檔案夾裡面有什麼内容,權限等的緩存,我本機大概占用300多M 

cache cache直接用來記憶我們打開的檔案,給檔案做緩沖,我本機大概占用300多M(這裡是Linux/Unix的聰明之處,把空暇的實體記憶體的一部分拿來做檔案和檔案夾的緩存,是為了提高 程式執行的性能。當程式使用記憶體時。buffer/cached會非常快地被使用。) 

si 每秒從磁盤讀入虛拟記憶體的大小,假設這個值大于0。表示實體記憶體不夠用或者記憶體洩露了,要查找耗記憶體程序解決掉。我的機器記憶體充裕。一切正常。 

so 每秒虛拟記憶體寫入磁盤的大小,假設這個值大于0。同上。

bi 塊裝置每秒接收的塊數量。這裡的塊裝置是指系統上全部的磁盤和其它塊裝置,預設塊大小是1024byte。我本機上沒什麼IO操作。是以一直是0,可是我曾在處理拷貝大量資料(2-3T)的機器上看過能夠達到140000/s,磁盤寫入速度差點兒相同140M每秒 

bo 塊裝置每秒發送的塊數量,比如我們讀取檔案,bo就要大于0。

bi和bo一般都要接近0。不然就是IO過于頻繁,須要調整。 

in 每秒CPU的中斷次數。包含時間中斷 

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

us 使用者CPU時間,我以前在一個做加密解密非常頻繁的server上。能夠看到us接近100,r執行隊列達到80(機器在做壓力測試,性能表現不佳)。 

sy 系統CPU時間,假設太高,表示系統調用時間長,比如是IO操作頻繁。 

id 空暇 CPU時間,一般來說,id + us + sy = 100,一般我覺得id是空暇CPU使用率,us是使用者CPU使用率,sy是系統CPU使用率。 

wt 等待IO CPU時間。

本文轉自mfrbuaa部落格園部落格,原文連結:http://www.cnblogs.com/mfrbuaa/p/5344725.html,如需轉載請自行聯系原作者