Vmstat 命令詳細介紹
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=3,wait在8-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分鐘後再次用vmstat,r=1,fre>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的負荷很重。
如果pi,po 長期不等於0,表示記憶體不足。
如果b中的佇列 大於3, 表示 io效能不好。
更具體的引數說明
CPU 統計資訊在裝置中斷負載很高的系統上會有一定程度的失真。這種情況是因為該工具是對定時器中斷取樣。定時器是優先順序最低的裝置,所以它很容易被其它中斷搶先。為了消除失真,當作業系統版本晚於 AIX 4.3.3 時, 採用了一種不同的方法來對定時器進行取樣。
注:對對稱多處理系統 us、sy、id 和 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Kafka詳細介紹Kafka
- javascript this詳細介紹JavaScript
- ApplicationContext 詳細介紹APPContext
- JDBC 詳細介紹JDBC
- Ifconfig詳細介紹
- Git詳細介紹Git
- stat 命令家族(1)- 詳解 vmstat
- Spring bean詳細介紹SpringBean
- python字典詳細介紹Python
- Nacos 介面詳細介紹
- SOLIDWORKS API詳細介紹SolidAPI
- Go Channel 詳細介紹Go
- 使用netsh命令來管理IP安全策略(詳細介紹)
- 註解的詳細介紹
- Flutter系列(一)——詳細介紹Flutter
- Nginx服務詳細介紹Nginx
- LVM詳細介紹及建立LVM
- Webpack 打包 Javascript 詳細介紹WebJavaScript
- 【SCN】Oracle SCN 詳細介紹Oracle
- Http Module 的詳細介紹HTTP
- Java異常詳細介紹Java
- Dart語言詳解(一)——詳細介紹Dart
- pyhanlp 文字聚類詳細介紹HanLP聚類
- TreeViewTemplate移動元件詳細介紹View元件
- oracle 大頁配置詳細介紹Oracle
- spring @component 的作用詳細介紹Spring
- 效能分析命令:vmstat
- 『學了就忘』Linux軟體包管理 — 46、yum命令詳細介紹Linux
- JavaScript FormData的詳細介紹及使用JavaScriptORM
- BN(Batch Normalization)層的詳細介紹BATORM
- vuex詳細介紹和使用方法Vue
- Fabric1.3新功能詳細介紹
- Aidl程式間通訊詳細介紹AI
- flutter接入現有的app詳細介紹FlutterAPP
- 渲染樹與css解析詳細介紹CSS
- WindowsPE重灌Windows系統詳細介紹Windows
- 《非常防護》專案詳細介紹
- [Javascript] Promise ES6 詳細介紹JavaScriptPromise
- rqt的安裝及詳細介紹QT