vmstat

vmstat

vmstat 命令報告關於內核線程、虛擬內存、磁碟、陷阱和 CPU 活動的統計信息。由 vmstat 命令生成的報告可以用於平衡系統負載活動。系統範圍內的這些統計信息(所有的處理器中)都計算出以百分比表示的平均值,或者計算其總和。

用途


報告虛擬內存統計信息。

語法


vmstat [ -f ] [ -i ] [ -s ] [ -I ] [ -t ] [ -v ] [ PhysicalVolume ... ] [ Interval [ Count ] ]

描述


vmstat 命令的輸出
vmstat 命令的輸出
如果調用 vmstat 命令時不帶標誌,則報告包含系統啟動后虛擬內存活動的 摘要。如果指定 -f 標誌,則 vmstat 命令報告自從系統啟動後派生的數量。PhysicalVolume 參數指定物理卷的名稱。
Interval 參數指定每個報告之間的時間量(以秒計)。第一個報告包含系統啟動后時間的統計信息。後續報告包含自從前一個報告起的時間間隔過程中所收集的統計信息。如果沒有指定 Interval 參數,vmstat 命令生成單個報告然後退出。Count 參數只能和 Interval 參數一起指定。如果指定了 Count 參數,其值決定生成的報告數目和相互間隔的秒數。如果 Interval 參數被指定而沒有 Count 參數,則連續生成報告。Count 參數不允許為 0。
在 AIX 4.3.3 及更新版本包含有此方法的增強,用於計算 CPU 等待磁碟 I/O 所花時間(wio 時間)的百分比。某些情況下,AIX 4.3.2 以及該操作系統更早的版本中使用的該方法在 SMP 上會給出誇張的 wio 時間報告。
AIX 4.3.2 和更早版本中使用的方法如下:在每個處理器的每一次時鐘中斷(每個處理器一秒鐘 100 次),確定上一個 10 毫秒時間要歸入四種類別(usr/sys/wio/idle)中的哪一個。如果在時鐘中斷的時候,CPU 正忙於 usr 方式,那麼 usr 將獲取該時鐘周期添加到其類別中。如果在時鐘中斷的時候,CPU 正忙於內核方式,那麼 sys 類別獲取該時鐘周期。如果 CPU 不忙的話,則檢測是否有磁碟 I/O 正在進行。如果有任何正在進行的磁碟 I/ O,則累加 wio 類別。如果沒有磁碟 I/O 正在進行且 CPU 不忙,則 idle 類別獲取該時鐘周期。由於所有的空閑 CPU 都被歸入 wio 類別,而不管正在等待 I/O 的線程數量,所以會產生誇大的 wio 時間報告。例如,只有一個 I/O 線程的系統可能會報告 90% 以上的 wio 時間,而不管它擁有的 CPU 數量。sar(%wio)、vmstat(wa)和 iostat(% iowait)命令報告 wio 時間。
操作系統 AIX 4.3.3 及其更新版本使用的方法如下:如果一個未完成的 I/O 在空閑的 CPU 上啟動,則操作系統 AIX 4.3.3 中的更改將只把該 CPU 標記成 wio。當只有少量線程在進行 I/O 而系統其它部分是空閑的,此方法能報告低得多的 wio 時間。例如,一個有四個 CPU 和一個正在進行 I/O 的線程的系統將報告最多 25% 的 wio 時間。有 12 個 CPU 和一個正在進行 I/O 的線程的系統只報告最大為 8% 的 wio 時間。NFS 客戶機通過 VMM 讀取/寫入,biods 在 VMM 中花費的等待 I/O 完成的時間現在報告為 I/O 等待時間。
內核為內核線程、調頁和中斷活動維護統計信息,vmstat 命令通過使用perfstat 內核擴展來對其進行訪問。磁碟輸入/輸出統計信息由設備驅動程序維護。對於磁碟,利用活動時間和傳送信息數量來確定平均傳送速率。活動時間的百分數根據報告期間驅動器忙的時間量來計算。
由 vmstat 命令生成的以下報告示例包含欄標題及其描述:
kthr:內核線程狀態在採樣間隔期間每秒鐘更改一次。
r :置於運行隊列中的內核線程數目。
b :置於等待隊列(等待資源、等待輸入/輸出)的內核線程數目。
內存:關於使用虛擬內存和實內存的信息。如果虛擬頁已經被訪問的話,虛擬頁可以被認為是活動的。一頁為 4096 個位元組。
avm:活動虛擬頁。
fre :空閑列表的大小。
註:大部分實內存都用作文件系統數據的高速緩存。對於保持較小的空閑列表,這是很正常的。
頁:關於缺頁故障和調頁活動的信息。這些是間隔的平均值,以秒為單位給出。
re :頁面調度程序輸入/輸出列表。
pi :從調頁空間調度進的頁面。
po:調出到調頁空間的頁面。
fr :釋放的頁(頁面替換)。
sr:通過頁替換演演算法掃描的頁面。
cy :按頁替換演演算法的時鐘周期。
故障:採樣間隔平均每秒的捕獲和中斷率。
in :設備中斷
sy :系統調用。
cs :內核線程上下文切換。
Cpu:CPU 使用時間故障百分比。
us :用戶時間。
sy :系統時間。
id :CPU 空閑時間。
wa :CPU 空閑時間,在此期間系統有未完成的磁碟/NFS I/O 請求。請參閱上面的詳細描述。
磁碟:每秒向指定物理卷提供的傳送數目,該過程在採樣間隔中發生。PhysicalVolume 參數可以用於指定一到四個名稱。每個指定驅動器的傳送統計信息按指定順序給出。該計數代表向物理設備的請求數。它並不暗示讀取或寫入的數據量。幾個邏輯請求可以組合成為一個物理請求。
如果指定一個 -I 標誌,I/O 定向視圖將會出現以下欄目變化。
kthr 除了欄 r 和 b之外,欄 p 也將顯示。
p
每秒等待實際物理 I/O 的線程數。
頁 將顯示新欄 fi 和 fo,代替 re 和 cy 欄。
fi
每秒調入的文件。
fo
每秒調出的文件。
標誌
注:
如果在命令行中輸入了 -f(或 -s)標誌,系統將僅接受 -f(或 -s)標誌,將忽略其它標誌。如果同時指定了 -f 和 -s 標誌,系統將僅接受第一個標誌,忽略第二個標誌。
-f 報告從系統啟動后的派生數目。
-i 顯示從系統啟動后每個設備造成的中斷數目。
-I 用新的輸出欄顯示 I/O 定向視圖,p 在標題 kthr 下;欄 fi 和 fo 在標題頁面下,而不是欄下;re 和 cy 在頁標題中。
-s 將總數結構中的內容寫入到標準輸出,該結構包含從系統初始化后調頁事件的絕對計數。-s 標誌只能與 -v 標誌一起使用。如下描述了這些事件:
地址翻譯錯誤
每次發生地址轉換頁面故障時增加。解決頁面故障可能需要 I/O,也可能不需要。存儲保護頁面故障(失去鎖定)不包含在此計數之內。
入頁
隨虛擬內存管理器讀入的每頁增加。計數隨調頁空間和文件空間的入頁增加。它和出頁統計信息一起表示實際 I/O(由虛擬內存管理器啟動)的總量。
出頁
隨虛擬內存管理器寫出的每頁增加。計數隨調頁空間和文件空間的出頁而增加。它和入頁統計信息一起表示實際 I/O(由虛擬內存管理器啟動)的總量。
調頁空間入頁
只隨 VMM 啟動的來自調頁空間的入頁而增加。
調頁空間出頁
只隨 VMM 啟動的來自調頁空間的出頁而增加。
總回收
當不啟用一個新的 I/O 請求也可以滿足地址翻譯錯誤時增加。如果頁面以前已經被 VMM 請求過的,但是 I/O 還沒有完成;或者頁面被預讀演演算法提前提取,但是被故障段隱藏了;或者如果頁面已經被放入空閑列表中,但還沒有重新使用,則會發生此情況。
零填充頁面故障
如果頁面故障針對的是工作存儲器,且可以通過指定一個幀並以零填充幀來滿足它的話,則該值增加。
可執行填充頁面故障
隨著每個指令頁面故障而增加。
用時鐘檢查頁面
VMM 利用時鐘演演算法實施偽最近最少使用(1ru)的頁面替換模式。時鐘檢查過的頁面是 aged。為每個時鐘檢查過的頁面增加此計數值。
時鐘指針的轉動
隨著每次 VMM 時鐘旋轉而增加(即在每一次完整的內存掃描后)。
用時鐘釋放的頁面
隨著時鐘演演算法從實內存中選擇釋放的每一個頁面而增加。
回溯
隨著解決前一個頁面故障時出現的每一個頁面故障而增加。(必須首先解決新的頁面故障,然後可以回溯到最初的頁面故障。)
鎖定丟失
VMM 通過除去對頁面的定址能力來強制併發性鎖定。鎖定丟失可能產生一個頁面故障,每當此類情況發生時,此計數增加。
空閑幀等待
在收集可用幀時,每次 VMM 等待一個進程時增加。
擴展 XPT 等待
每次正在進行提交而使得 VMM 等待一個進程時,隨著正在被訪問的段而增加。
暫掛 I/O 等待
每次 VMM 等待一個進程時隨著要完成的入頁 I/O 而增加。
啟動 I/O
隨著每個被 VMM 啟動的讀取或寫入 I/O 請求而增加。此計數應該與入頁和出頁的總數相等。
iodones
在每次完成 VMM I/O 請求時增加。
CPU 上下文交換
隨著每次 CPU 上下文交換而增加(新進程的分派)。
設備中斷
每次硬體中斷時增加。
軟體中斷
每次軟體中斷時增加。一次軟體中斷是一個類似於硬體中斷(保存一些狀態和伺服器常式分支)的機器指令。系統調用用軟體中斷指令來完成,該指令轉換控制到系統調用處理程序常式。
陷阱
不通過操作系統來維護。
syscalls
隨著每次系統調用而增加。
-t 列印 vmstat 的每一輸出行旁邊的時間戳記。時間戳記按照 HH:MM:SS 格式顯示。
注:
如果指定了 -f、-s 或 -i 標誌,將不列印時間戳記。
-v 將虛擬內存管理器維護的不同統計信息寫入標準輸出。-v 標誌只能與 -s 標誌一起使用。
內存頁
實內存的大小(以 4 KB 的頁面數目計)。
lruable 頁
要用於替換的 4 KB 頁面的數目。此數目不包含被用於 VMM 內部頁和用於內核文本的固定部分的頁面。
空閑頁面
空閑 4 KB 頁面的數目。
內存池
指定內存池數目的調整參數(使用 vmo 管理)。
固定頁面
固定的 4 KB 頁面的數目。
maxpin 百分比
指定能被固定的實內存百分數的調整參數(使用 vmo 管理)。
minperm 百分比
實內存百分比的調整參數(使用 vmo 管理)。它指定一臨界點,低於此臨界點時阻止頁面重新調度演演算法使用文件頁面。
maxperm 百分比
實內存百分比的調整參數(使用 vmo 管理)。它指定一臨界點,高於此臨界點時頁面取走演演算法只取走文件頁面。
numperm 百分比
當前由文件高速緩存使用的內存百分數。
文件頁面
當前由文件高速緩存使用的 4 KB 頁面的數目。
壓縮百分比
由壓縮頁面使用的內存百分數。
壓縮頁面
壓縮內存頁面的數目。
numclient 百分數
被客戶機頁面佔用的內存百分數。
maxclient 百分數
指定能用於客戶機頁面的最大內存百分數的調整參數(使用 vmo 管理)。
客戶機頁面
客戶機頁面的數目。
已調度的遠程出頁
調度用於客戶機文件系統的出頁的數目。
無 pbuf 而阻塞的暫掛磁碟 I/O
沒有可用 pbuf 而阻塞的暫掛磁碟 I/O 請求的數目。Pbuf 是用於保存邏輯卷管理器層上的 I/O 請求的固定的內存緩衝區。
無 psbuf 而阻塞的調頁空間 I/O
沒有可用 psbuf 而阻塞的調頁空間 I/O 請求的數目。Psbuf 是用於保存虛擬內存管理器層上的 I/O 請求的固定內存緩衝區。
-v (由 -v顯示的統計信息,接上頁):
無 fsbuf 而阻塞的文件系統 I/O
沒有可用 fsbuf 而阻塞的文件系統 I/O 請求的數目。Fsbuf 是用於保存文件系統層上的 I/O 請求的固定內存緩衝區。
無 fsbuf 而阻塞的客戶機文件系統 I/O
沒有可用 fsbuf 而阻塞的客戶機文件系統 I/O 請求的數目。NFS(網路文件系統)和 VxFS(Veritas)是客戶機文件系統。Fsbuf 是用於保存文件系統層上的 I/O 請求的固定內存緩衝區。
無 fsbuf 而阻塞的外部頁面調度程序文件系統 I/O
沒有可用 fsbuf 而被阻塞的外部頁面調度程序客戶機文件系統 I/O 請求的數目。JFS2 是一個外部頁面調度程序客戶機文件系統。Fsbuf 是用於保存文件系統層上的 I/O 請求的固定內存緩衝區。

示例


要顯示引導后的統計信息摘要,請輸入:
vmstat要顯示 2 秒時間間隔的 5 個摘要,請輸入:
vmstat 2 5第一次摘要包含引導后的時間統計信息。
要顯示引導后包括邏輯磁碟 scdisk13 和 scdisk14 的統計信息摘要,請輸入:
vmstat scdisk13 scdisk14要顯示派生統計信息,請輸入:
vmstat -f要顯示各事件的計數,請輸入:
vmstat -s要顯示 vmstat的每一輸出欄旁邊的時間戳記,請輸入:
vmstat -t要以另一套輸出欄顯示新的 I/O 定向視圖,請輸入:
vmstat -I要顯示所有可用的 VMM 統計信息,請輸入: vmstat -vs文件
/usr/bin/vmstat 包含 vmstat 命令。

相關信息


iostat 和 vmo 命令。

樣例數據


[a@localhost]$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 160 122976 28668 4337136 0 0 261 315 1 3 1 0 97 2
0 0 160 122976 28668 4337272 0 0 52 56 1068 163 0 0 99 1
0 0 160 122912 28668 4337340 0 0 20 60 1059 171 0 0 100 0
0 0 160 122848 28668 4337408 0 0 112 40 1060 171 0 0 99 1
0 0 160 122848 28668 4337476 0 0 16 28 1060 166 0 0 100 0