歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Linux中虛擬內存查看命令vmstat的使用教程

vmstat是一個查看虛擬內存使用狀況的工具,它可以看到服務器使用率,內存使用,虛擬內存交換情況,IO讀寫.相比top,可以看到整個機器的CPU,memory,IO的使用情況,而不是單單看到各個進程各值的使用率.

默認情況下,vmstat命令並沒有安裝,需要安裝sysstat包,該包裡含有vmstat程序.

一般經常使用的該命令後加2個數字參數,第一個參數是采樣的時間間隔(秒),第二個參數是采樣的次數.

基本參數:

vmstat [-a] [-n] [-t] [-S unit] [delay [ count]]
 
[-a]:顯示活躍和非活躍內存
 
[-n]:只在開始時顯示一次字段名,針對多次收集信息的情況輸出人性化一點
 
[-t]:在每條信息的末尾,顯示收集信息的時間
 
[-S unit]:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(byte)。默認單位為K(1024 bytes)
 
[delay [count]]:delay是信息收集間隔,count是信息收集的次數

vmstat [-s] [-n] [-S unit]
 
[-s]:顯示內存相關的統計信息
 
vmstat [-m] [-n] [delay [ count]]
 
[-m]:顯示slabinfo,slabinfo信息記錄在/proc/slabinfo文件中。slab是linux的一個內存分配機制。
 
vmstat [-d] [-n] [delay [ count]]
 
[-d]:顯示相關磁盤的統計信息  
注:這個跟樓下-p的區別統計信息的不同、統計對象這個是磁盤-p是子分區、這個不能指定全部輸出

vmstat [-p disk partition] [-n] [delay [ count]]
 [-p disk partition]:顯示磁盤子分區的統計信息,這裡沒有iostat的信息那麼有用

vmstat [-f]
 [-f]:開機啟動至今的fork數量            注:這裡的fork應該是內核的fork()函數,在父進程中,fork返回新創建子進程的進程ID


 vmstat [-V]
[-V]:版本信息


示例

復制代碼代碼如下:
[email protected]:~# vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
13 0 0 542604 323512 12356052 0 0 0 2 0 0 17 18 65 0 0
42 0 0 552500 323512 12356112 0 0 0 0 18669 49903 42 45 14 0 0
72 0 0 563416 323512 12356132 0 0 0 0 18394 49895 41 43 16 0 0
73 0 0 570924 323512 12356164 0 0 0 0 19666 51678 37 41 22 0 0
13 0 0 581208 323512 12356204 0 0 0 280 18990 49541 43 43 15 0 0
18 0 0 587148 323512 12356228 0 0 0 32 19360 49203 37 39 24 0 0
27 0 0 520016 323512 12356292 0 0 0 0 20423 52865 39 40 21 0 0
18 0 0 527512 323512 12356336 0 0 0 0 19613 53052 42 43 16 0 0
23 0 0 538608 323512 12356376 0 0 0 0 18860 50645 41 42 18 0 0
80 0 0 548608 323512 12356444 0 0 0 0 19781 50917 41 42 17 0 0

根據以上實例,下面是字段說明:
Procs(進程)

r:表示運行隊列的進程數量,換句話說就是多少個進程真正分配到cpu.服務器配置cpu為8核,這裡由於服務器運行了大量的程序在跑,當這個值超過了cpu數目,且id較小,就可能會出現cpu瓶頸.運行隊列過大,表示cpu很繁忙,一般會造成cpu使用率過高.

b:等待io的進程數.

Memory

swpd:虛擬內存使用情況,單位KB

free:空閒的內存

buff:用作緩沖的內存大小,內存中的一部分,某程序代碼緩存,不可移到swap裡去.

cache:用作緩存的內存大小,數據緩存,允許交給swap

Swap

si:從磁盤交換到內存的交換頁數量,每秒從磁盤讀入虛擬內存的大小,如果這個值大於0,表示物理內存不夠用或者內存洩露.

so:從內存交換到磁盤的交換頁數量,每秒虛擬內存寫入磁盤的大小,如果這個值大於0,表示物理內存不夠用或者內存洩露.

bi:Blocks received from a block device (blocks/s).每秒從塊設備接收到的塊數,即讀塊設備。

bo:Blocks sent to a block device (blocks/s).每秒發送到塊設備的塊數,即寫塊設備。

System

in:每秒中斷數,包括時鐘中斷.

cs:每秒上下文切換數.這個值越小越好.比如每次調用系統函數,線程的切換,代碼就會進入內核空間,導致上下文切換,次數過多表示cpu大部分浪費在上下文切換,導致cpu沒有充分利用.

CPU(以百分比表示)

us:用戶進程執行的時間,用戶cpu使用率,操作運算等.

sy:系統進程執行的時間,系統cpu使用率,讀取硬盤,操作硬件等.

id:空閒時間(包括IO等待時間)

wa:等待IO時間


Copyright © Linux教程網 All Rights Reserved