vmstat是virtual meomory statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、程序、cpu活動進行監控。他是對系統的整體情況進行統計,不足之處是無法對某個程序進行深入分析。
虛擬記憶體執行原理
在系統中執行的每個程序都需要使用到記憶體,但不是每個程序都需要每時每刻使用系統分配的記憶體空間。當系統執行所需記憶體超過實際的物理記憶體,核心會釋放某些程序所占用但未使用的部分或所有物理記憶體,將這部分資料儲存在磁碟上直到程序下一次呼叫,並將釋放出的記憶體提供給有需要的程序使用。
分頁(page)寫入磁碟的過程被稱作page-out,分頁(page)從磁碟重新回到記憶體的過程被稱作page-in。當核心需要乙個分頁時,但發現此分頁不在物理記憶體中(因為已經被page-out了),此時就發生了分頁錯誤(page fault)。
當系統核心發現可執行記憶體變少時,就會通過page-out來釋放一部分物理記憶體。經管page-out不是經常發生,但是如果page-out頻繁不斷的發生,直到當核心管理分頁的時間超過執行程式的時間時,系統效能會急劇下降。這時的系統已經執行非常慢或進入暫停狀態,這種狀態亦被稱作thrashing(顛簸)。
使用vmstat
1.用法
vmstat [-a] [-n] [-s unit] [delay [ count]]
vmstat [-s] [-n] [-s unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-v]
-a:顯示活躍和非活躍記憶體
-f:顯示從系統啟動至今的fork數量 。
-m:顯示slabinfo
-n:只在開始時顯示一次各欄位名稱。
delay:重新整理時間間隔。如果不指定,只顯示一條結果。
count:重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,這時重新整理次數為無窮。
-p:顯示指定磁碟分割槽統計資訊
-s:使用指定單位顯示。引數有 k 、k 、m 、m ,分別代表1000、1024、1000000、1048576位元組(byte)。預設單位為k(1024 bytes)
-v:顯示vmstat版本信 類別
專案含義
說明procs
r等待執行的任務數
展示了正在執行和等待cpu資源的任務個數。當這個值超過了cpu數目,就會出現cpu瓶頸了
bmemory
swpd
正在使用的swap大小單位k
free
空閒的記憶體空間
buff
已使用的buff大小,對塊裝置的讀寫進行緩衝
cache
已使用的cache大小,檔案系統的cache
inact
active
swap
si交換記憶體使用,由磁碟調入記憶體
so交換記憶體使用,由記憶體調入磁碟
iobi
從塊裝置讀入的資料總量(讀磁碟) (kb/s),
bo寫入到塊裝置的資料總理(寫磁碟) (kb/s)
system
in每秒產生的中斷次數
cs每秒產生的上下文切換次數
上面這2個值越大,會看到由核心消耗的cpu時間會越多
cpuus
使用者程序消耗的cpu時間百分比
us 的值比較高時,說明使用者程序消耗的cpu時間多,但是如果長期超過50% 的使用,那麼我們就該考慮優化程式演算法或者進行加速了
sy核心程序消耗的cpu時間百分比
sy 的值高時,說明系統核心消耗的cpu資源多,這並不是良性的表現,我們應該檢查原因。
id空閒
waio等待消耗的cpu時間百分比
wa 的值高時,說明io等待比較嚴重,這可能是由於磁碟大量作隨機訪問造成,也有可能是磁碟的頻寬出現瓶頸(塊操作)。
命令比較簡單,但涉及到的記憶體、磁碟、cpu之間的關係還是挺複雜的,需要進一步學習相關的knowledge。
通常使用vmstat 5 5(表示在5秒時間內進行5次取樣)命令測試。將得到乙個資料彙總他能夠反映真正的系統情況。
#vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 62792 3460 9116 88092 6 30 189 89 1061 569 17 28 54 2
0 0 62792 3400 9124 88092 0 00 14 884 434 4 14 81 0
0 0 62792 3400 9132 88092 0 00 14 877 424 4 15 81 0
1 0 62792 3400 9140 88092 0 00 14 868 418 6 20 74 0
1 0 62792 3400 9148 88092 0 00 15 847 400 9 25 67 0
linux 記憶體監控vmstat命令輸出分成六個部分:
(1)程序procs:
r:在執行佇列中等待的程序數 。
b:在等待io的程序數 。
(2)linux 記憶體監控記憶體memoy:
swpd:現時可用的交換記憶體(單位kb)。
free:空閒的記憶體(單位kb)。
buff: 緩衝去中的記憶體數(單位:kb)。
cache:被用來做為快取記憶體的記憶體數(單位:kb)。
(3) linux 記憶體監控swap交換頁面
si: 從磁碟交換到記憶體的交換頁數量,單位:kb/秒。
so: 從記憶體交換到磁碟的交換頁數量,單位:kb/秒。
(4)linux 記憶體監控 io塊裝置:
bi: 傳送到塊裝置的塊數,單位:塊/秒。
bo: 從塊裝置接收到的塊數,單位:塊/秒。
(5)linux 記憶體監控system系統:
in: 每秒的中斷數,包括時鐘中斷。
cs: 每秒的環境(上下文)轉換次數。
(6)linux 記憶體監控cpu**處理器:
cs:使用者程序使用的時間 。以百分比表示。
sy:系統程序使用的時間。 以百分比表示。
id:**處理器的空閒時間 。以百分比表示。
假如 r經常大於 4 ,且id經常小於40,表示**處理器的負荷很重。 假如bi,bo 長期不等於0,表示物理記憶體容量太小。
小白學linux的常用網路命令
write 使用者名稱以ctrl d儲存結束 wall 資訊ping 選項 ip位址 c 指定傳送次數傳送 mail 使用者 在本地內網中使用 ctrl d儲存結束 ctrl z直接退出檢視 mail不加任何東西使用完mail可以使用序列號進行檢視相關的郵件 按h之檢視內容 按d 序列號刪除 再按h...
Linux命令每日學之PS
ps process status 命令是常用的linux命令,其用於顯示系統當前執行的程序.用於檢視程序狀態,是否是殭屍程序,程序執行所處的狀態,程序所占用的資源 cpu 時間 等。是必要掌握的命令。注意 ps命令只是顯示瞬時的程序狀態資訊。區別與top命令,則是動態顯示程序狀態資訊,即是實時重新...
Linux命令每日學之find
find命令是在指定目錄下查詢檔案或者子目錄。區別與grep的是 grep 是在檔案中查詢字元。如果不指定引數,find預設查詢當前目錄下檔案和子目錄。find 引數 目錄 檔名 在指定目錄查詢滿足條件的檔案或者子目錄。name 檔名稱 查詢名稱為指定名稱的檔案。iname 檔名稱 查詢名稱為指定名...