Vmstat 命令詳細介紹

oracle_kai發表於2008-01-31

Vmstat 命令詳細介紹

 

前幾天觀察系統的負載狀況,其中用到vmstat命令檢視記憶體的使用情況

P560Q:/>  vmstat 5 5

System Configuration: lcpu=4 mem=7744MB

kthr     memory             page              faults        cpu    

----- ----------- ------------------------ ------------ -----------

 r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa

 1  1 1254534   120   0   5   6  51  231   0 840 6671 888  7  1 90  2

 3  1 1254430   100   0   1 171 2763 4149   0 927 7419 686 72  3 16  9

 3  1 1254430   100   0   0 221 2540 4750   0 875 7151 665 73  3 15  9

 3  1 1254430   128   0   0  90 2760 4496   0 833 7010 639 73  3 16  8

 3  1 1254430   100   0   0 102 2427 3649   0 813 7575 652 73  3 15  9

r=3wait8-9之間,block=1 fre<120,此時系統正好在跑大量的報表資料,用topas檢視,系統現在讀寫很頻繁

 

P560Q:/>  vmstat 5 5

System Configuration: lcpu=4 mem=7744MB

kthr     memory             page              faults        cpu    

----- ----------- ------------------------ ------------ -----------

 r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa

 1  1 1219016  6092   0   5   6  51  231   0 840 6670 888  7  1 90  2

 1  0 1219020  6078   0   0   0   0    0   0 540 4208  83 24  1 75  0

 1  0 1219020  6072   0   0   0   0    0   0 542 4288  90 24  1 75  0

 1  0 1219020  6066   0   0   0   0    0   0 540 4174  82 24  1 75  0

 1  0 1219020  6066   0   0   0   0    0   0 539 4226  81 24  1 75  0

20分鐘後再次用vmstatr=1fre>6000,wait=0,此時報表已經跑完,系統負載較低

下面是關於vmstat命令的詳細介紹,收錄在這裡,以備日後參考

vmstat 是用來實時檢視記憶體使用情況,反映的情況比用top直觀一些. 作為一個 CPU 監視器,vmstat 命令比 iostat 命令優先順序要高,因為 vmstat 命令是滾動的,使得它的每報告一行的輸出更容易掃描,並且如果有很多磁碟連線到系統中,由此所引起的開銷更少。

如果直接使用,只能得到當前的情況,最好用個時間間隔來採集vmstat T 其中T用具體的時間標示,單位是

Vmstat 命令詳細解釋

kthr--核心程式的狀態
--r 執行佇列中的程式數,在一個穩定的工作量下,應該少於5
--b 等待佇列中的程式數(等待I/O),通常情況下是接近0的.
memory--虛擬和真實記憶體的使用資訊
--avm 活動虛擬頁面,在程式執行中分配到工作段的頁面空間數.
--fre 空閒列表的數量.一般不少於120,當fre少於120時,系統開始自動的kill程式去釋放
 page--頁面活動的資訊
--re 頁面i/o的列表
--pi 從頁面輸入的頁(一般不大於5)
--po 輸出到頁面的頁
--fr 空閒的頁面數(可替換的頁面數)
--sr 通過頁面置換演算法搜尋到的頁面數
--cy 頁面置換演算法的時脈頻率
faults--在取樣間隔中的陷阱及中斷數
--in 裝置中斷
--sy 系統呼叫中斷
--cs 核心程式前後交換中斷
cpu--cpu的使用率
--us 使用者程式的時間
--sy 系統程式的時間
--id cpu空閒的時間
--wa 等待i/o的時間
一般us+sy 在單使用者系統中不大於90,在多使用者系統中不大於80.
wa時間一般不大於40.

其中:
如果 r經常大於 4 ,且id經常少於40,表示cpu的負荷很重。
如果pipo 長期不等於0,表示記憶體不足。
如果b中的佇列 大於3 表示 io效能不好。

 

更具體的引數說明

CPU 統計資訊在裝置中斷負載很高的系統上會有一定程度的失真。這種情況是因為該工具是對定時器中斷取樣。定時器是優先順序最低的裝置,所以它很容易被其它中斷搶先。為了消除失真,當作業系統版本晚於 AIX 4.3.3 , 採用了一種不同的方法來對定時器進行取樣。

注:對對稱多處理系統 ussyid wa 幾列只是對各處理器求平均值(sar 命令可以報告每個處理器的統計資訊)。一個 I/O 等待和空閒時間 只能從未決 I/O 的狀態來區分。如果有一個未決磁碟 I/O,並且處理器不忙,那麼這是一個 I/O 等待時間。AIX 4.3.3 和其後的系統中用一個增強的方法來計算花費在磁碟 I/O 上的 CPU 時間(wio 時間)所佔的百分比。

 

在最佳使用時,CPU 100% 的時間中都在工作。在單使用者系統中更是這樣,這裡不需要共享 CPU。總的來說,如果 us + sy 時間低於 90%,則不認為該單使用者系統 CPU 受限制。但是,如果在一個多使用者系統中 us + sy時間超過 80%,其中的程式將要花時間在執行佇列中等待。響應時間和吞吐量會受損害。要檢查 CPU 是否是瓶頸,考慮 vmstat 報告中的四個 cpu 列和兩個 kthr (核心執行緒)列,也應該檢視 faults 列。cpu 在該時間間隔內使用 CPU 時間的百分比細分。cpu 列如下:

us 引數

us 列顯示了使用者模式所消耗的 CPU 時間。一個 UNIX 程式可以在使用者模式下執行,也可以在系統(核心)模式下執行。當在使用者模式下執行時,程式在它自己的應用程式程式碼中之行,不需要核心資源來進行計算、管理記憶體或設定變數。

sy 引數

sy 列詳細顯示了 CPU 在系統模式下執行一個執行緒所花時間的百分比。包括核心程式(kprocs )和其它需要訪問核心資源的程式所消耗的 CPU 資源。如果一個程式需要核心資源,它必須執行一個系統呼叫,並因此被切換到系統模式從而可以使用該資源。例如,對一個檔案的讀或寫操作需要核心資源來開啟檔案、尋找指定的位置和讀寫資料,除非使用記憶體對映檔案。

id 引數

id 列顯示了沒有未決本地磁碟 I/O CPU 空閒或等待時間的百分比。如果沒有執行緒可以執行(執行佇列為空)系統排程一個叫做 wait 的執行緒,也就是 idlekproc 。在一個對稱多處理系統中,每個處理器都有一個 wait 執行緒可排程。由 ps 命令(帶有 -k -g 0 選項)將它確定為 kproc wait。如果報告中 ps 顯示這個執行緒的總計時間高,這表明存在顯著的時期,沒有其它執行緒在這個 CPU 上準備執行或等待執行。系統因此大部分時間或任務空閒和等待 新任務。

如果沒有未決 I/O,所有用於等待的時間歸入空閒時間中。在4.3.2版或更早的作業系統中,訪問遠端磁碟(安裝 NFS 磁碟)被當作空閒時間(有少量 sy 時間來執行 NFS 請求),因為沒有對本地磁碟的未決 I/O 請求。在 AIX 4.3.3 和以後的系統中,NFS 通過緩衝區快取記憶體,在這些例程中的等待被放入 wa 中統計。

wa 引數

wa 列詳細顯示了有未決本地磁碟 I/O CPU 空閒的時間百分比(在 AIX 4.3.3 和以後版本的系統中,對安裝了NFS 的磁碟也是這樣)。如果當等待正在執行時至少有一個未完成的磁碟 I/O,該時間歸入等待 I/O 的時間。除非該程式使用非同步 I/O,否則對磁碟的 I/O 請求使呼叫執行緒被阻塞(或睡眠)直到請求被完成。一旦程式的 I/O 請求完成,該程式被放入執行佇列中。如果 I/O 很快完成,該程式可以使用更多的 CPU 時間。wa 的值如果超過 25%,就表明磁碟子系統可能沒有被正確平衡,或者這也可能是磁碟工作負荷很重的結果。

 

Kthr 每秒鐘在取樣間隔上對各種佇列中的核心執行緒數求得的平均值。kthr 列如下:

r 引數

可執行的核心執行緒平均數目,包括正在執行的執行緒和等待 CPU 的執行緒。如果這個數字大於 CPU 的數目,至少有一個執行緒要等待 CPU,等待 CPU 的執行緒越多,越有可能對效能產生影響。

b 引數

每秒 VMM 等待佇列中的核心執行緒平均數。包括正在等待檔案系統 I/O 的執行緒,或由於記憶體裝入控制而被掛起的執行緒。如果程式由於記憶體裝入控制而被掛起,在 vmstat 報告中的阻塞列(b)表明執行緒數目增加,而不是執行佇列中執行緒數目增加。

p 引數

對與 vmstat -I ,是每秒等待原始裝置 I/O 的執行緒數目。等待檔案系統 I/O 的執行緒不包括在這裡。

 

faults 關於程式控制的資訊,如陷阱和中斷率。faults 列如下:

in 引數

在該時間間隔中觀測到的每秒裝置中斷數。額外資訊可見用 vmstat 命令評估磁碟效能。

sy 引數

在該時間間隔中觀測到的每秒系統呼叫次數。通過明確的系統呼叫,使用者程式可以使用資源。這些呼叫命令核心為呼叫執行緒執行操作,並在核心和該程式之間交換資料。因為,工作負荷和應用程式變化很大,不同的呼叫

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10159839/viewspace-166568/,如需轉載,請註明出處,否則將追究法律責任。

相關文章