Linux系統(tǒng)中vmstat命令使用詳解
Linux系統(tǒng)中vmstat命令使用詳解
Linux系統(tǒng)中vmstat命令是一個監(jiān)控工具。下面由學習啦小編為大家整理了linux系統(tǒng)中vmstat命令使用詳解,希望對大家有幫助!
Linux系統(tǒng)中vmstat命令使用詳解
vmstat是Virtual Meomory Statistics(虛擬內(nèi)存統(tǒng)計)的縮寫,可對操作系統(tǒng)的虛擬內(nèi)存、進程、CPU活動進行監(jiān)控。
它能夠對系統(tǒng)的整體情況進行統(tǒng)計,無法對某個進程進行深入分析。vmstat 工具提供了一種低開銷的系統(tǒng)性能觀察方式。
(1)用法
用法: vmstat [選項參數(shù)]
或 vmstat [選項參數(shù)] [數(shù)字] [數(shù)字]
(2)功能:
功能: 報告虛擬內(nèi)存的統(tǒng)計信息,關于進程、內(nèi)存、I/O等系統(tǒng)整體運行狀態(tài)。
(3)選項參數(shù):
1) -d: 顯示磁盤相關統(tǒng)計信息。
2) -a: 顯示活躍和非活躍內(nèi)存
3) -f: 顯示從系統(tǒng)啟動至今的fork數(shù)量。
4) -p: 顯示指定磁盤分區(qū)統(tǒng)計信息
5) -s: 顯示內(nèi)存相關統(tǒng)計信息及多種系統(tǒng)活動數(shù)量。
6) -m: 顯示slabinfo
Linux系統(tǒng)中vmstat命令詳解實例
1)[sunjimeng@localhost ~]$ vmstat 顯示虛擬內(nèi)存使用情況
[sunjimeng@localhost ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
5 0 0 858580 752 506988 0 0 7 1 81 120 2 1 97 0 0
[sunjimeng@localhost ~]$
字段說明:
1.Procs(進程)
r: 運行隊列中進程數(shù)量,這個值也可以判斷是否需要增加CPU。(長期大于1)
b: 等待IO的進程數(shù)量。
2.Memory(內(nèi)存)
swpd: 使用虛擬內(nèi)存大小,如果swpd的值不為0,但是SI,SO的值長期為0,這種情況不會影響系統(tǒng)性能。
free: 空閑物理內(nèi)存大小。
buff: 用作緩沖的內(nèi)存大小。
cache: 用作緩存的內(nèi)存大小,如果cache的值大的時候,說明cache處的文件數(shù)多,如果頻繁訪問到的文件都能被cache處,那么磁盤的讀IO bi會非常小。
3.Swap
si: 每秒從交換區(qū)寫到內(nèi)存的大小,由磁盤調入內(nèi)存。
so: 每秒寫入交換區(qū)的內(nèi)存大小,由內(nèi)存調入磁盤。
注意:
內(nèi)存夠用的時候,這2個值都是0,如果這2個值長期大于0時,系統(tǒng)性能會受到影響,磁盤IO和CPU資源都會被消耗。有些朋友看到空閑內(nèi)存(free)很少的或接近于0時,就認為內(nèi)存不夠用了,不能光看這一點,還要結合si和so,如果free很少,但是si和so也很少(大多時候是0),那么不用擔心,系統(tǒng)性能這時不會受到影響的。
4.IO(現(xiàn)在的Linux版本塊的大小為1kb)
bi: 每秒讀取的塊數(shù)
bo: 每秒寫入的塊數(shù)
注意:
隨機磁盤讀寫的時候,這2個值越大(如超出1024k),能看到CPU在IO等待的值也會越大。
5.system(系統(tǒng))
in: 每秒中斷數(shù),包括時鐘中斷。
cs: 每秒上下文切換數(shù)。
注意:
上面2個值越大,會看到由內(nèi)核消耗的CPU時間會越大。
6.CPU(以百分比表示)
us: 用戶進程執(zhí)行時間百分比(user time) us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超50%的使用,那么我們就該考慮優(yōu)化程序算法或者進行加速。
sy: 內(nèi)核系統(tǒng)進程執(zhí)行時間百分比(system time) sy的值高時,說明系統(tǒng)內(nèi)核消耗的CPU資源多,這并不是良性表現(xiàn),我們應該檢查原因。
wa: IO等待時間百分比 wa的值高時,說明IO等待比較嚴重,這可能由于磁盤大量作隨機訪問造成,也有可能磁盤出現(xiàn)瓶頸(塊操作)。
id: 空閑時間百分比
2)[sunjimeng@localhost ~]$ vmstat 2 每二秒顯示一次系統(tǒng)內(nèi)存的統(tǒng)計信息
[sunjimeng@localhost ~]$ vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 853508 752 507144 0 0 7 1 80 119 2 1 97 0 0
0 0 0 853508 752 507144 0 0 0 0 376 466 3 2 96 0 0......
3)[sunjimeng@localhost ~]$ vmstat 2 5 每二秒顯示一次系統(tǒng)內(nèi)存的統(tǒng)計信息,總共5次
[sunjimeng@localhost ~]$ vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 853888 752 507152 0 0 7 1 81 119 2 1 97 0 0
0 0 0 853888 752 507152 0 0 0 0 609 763 5 2 92 0 0
1 0 0 853888 752 507152 0 0 0 0 582 626 5 2 93 0 0
0 0 0 853888 752 507152 0 0 0 0 399 464 3 2 95 0 0
0 0 0 853888 752 507152 0 0 0 0 263 365 3 1 96 0 0
[sunjimeng@localhost ~]$
補充:虛擬內(nèi)存原理
在系統(tǒng)中運行的每個進程都需要使用到內(nèi)存,但不是每個進程都需要每時每刻使用系統(tǒng)分配的內(nèi)存空間。當系統(tǒng)運行所需內(nèi)存超過實際的物理內(nèi)存,內(nèi)核會釋放某些進程所占用但未使用的部分或所有物理內(nèi)存,將這部分資料存儲在磁盤上直到進程下一次調用,并將釋放出的內(nèi)存提供給有需要的進程使用。
在Linux內(nèi)存管理中,主要是通過“調頁Paging”和“交換Swapping”來完成上述的內(nèi)存調度。調頁算法是將內(nèi)存中最近不常使用的頁面換到磁盤上,把活動頁面保留在內(nèi)存中供進程使用。交換技術是將整個進程,而不是部分頁面,全部交換到磁盤上。
分頁(Page)寫入磁盤的過程被稱作Page-Out,分頁(Page)從磁盤重新回到內(nèi)存的過程被稱作Page-In。當內(nèi)核需要一個分頁時,但發(fā)現(xiàn)此分頁不在物理內(nèi)存中(因為已經(jīng)被Page-Out了),此時就發(fā)生了分頁錯誤(Page Fault)。
當系統(tǒng)內(nèi)核發(fā)現(xiàn)可運行內(nèi)存變少時,就會通過Page-Out來釋放一部分物理內(nèi)存。經(jīng)管Page-Out不是經(jīng)常發(fā)生,但是如果Page-out頻繁不斷的發(fā)生,直到當內(nèi)核管理分頁的時間超過運行程式的時間時,系統(tǒng)效能會急劇下降。這時的系統(tǒng)已經(jīng)運行非常慢或進入暫停狀態(tài),這種狀態(tài)亦被稱作thrashing(顛簸)