vmstat詳解

一、前言

    vmstat命令是最常見的Linux/Unix監控工具,可以展現給定時間間隔的服務器的狀態值,包括服務器的CPU使用率,內存使用,虛擬內存交換情況,IO讀寫情況。


二、虛擬內存原理

    在系統中運行的每個進程都需要使用到內存,但不是每個進程都需要每時每刻使用系統分配的內存空間。當系統運行所需內存超過實際的物理內存,內核會釋放某些進程所佔用但未使用的部分或所有物理內存,將這部分資料存儲在磁盤上直到進程下一次調用,並將釋放出的內存提供給有需要的進程使用。

    在Linux內存管理中,主要是通過“調頁Paging”和“交換Swapping”來完成上述的內存調度。調頁算法是將內存中最近不常使用的頁面換到磁盤上,把活動頁面保留在內存中供進程使用。交換技術是將整個進程,而不是部分頁面,全部交換到磁盤上。

    分頁(Page)寫入磁盤的過程被稱作Page-Out,分頁(Page)從磁盤重新回到內存的過程被稱作Page-In。當內核需要一個分頁時,但發現此分頁不在物理內存中(因爲已經被Page-Out了),此時就發生了分頁錯誤(Page Fault)。

    當系統內核發現可運行內存變少時,就會通過Page-Out來釋放一部分物理內存。經管Page-Out不是經常發生,但是如果Page-out頻繁不斷的發生,直到當內核管理分頁的時間超過運行程式的時間時,系統效能會急劇下降。這時的系統已經運行非常慢或進入暫停狀態,這種狀態亦被稱作thrashing(顛簸)。


三、vmstat用法說明

vmstat 

    -a:顯示活躍和非活躍內存

    -f:顯示從系統啓動至今的fork數量 。

    -m:顯示slabinfo

    -n:只在開始時顯示一次各字段名稱。

    -s:顯示內存相關統計信息及多種系統活動數量。

    delay:刷新時間間隔。如果不指定,只顯示一條結果。

    count:刷新次數。如果不指定刷新次數,但指定了刷新時間間隔,就會一直刷新,直到手動終止

    -d:顯示磁盤相關統計信息。

    -p:顯示指定磁盤分區統計信息 

    -S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(byte)。默認單位爲K(1024 bytes) 


示例:

    spacer.gifwKioL1QgG_bQkU8qAAEbz0p0-v8530.jpg

字段說明:

    procs:

        r:運行隊列中進程數量,一般不應該大於cpu數量,如果長期大於cpu數量,則考慮對cpu進行調優

        b:等待資源的進程數,如I/O等待


    memory:

        swpd:使用虛擬內存的大小,如果swpd的值不爲0,但是si,so的值長期爲0,這種情況不會影響系統性能,因爲linux會主動去使用swap,在sysctl中有個參數爲vm.swappiness,默認爲60,在內存足夠時,建議設成0

        free:空閒物理內存大小

        buff:用作緩衝區的內存大小

        cache:用作緩存的內存大小


    swap:

        si:每秒從交換分區置換到內存的大小,由磁盤寫入內存

        so:每秒從內存置換到交換分區的大小,由內存寫入磁盤

        內存夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。


    io:

        bi:每秒讀取的塊數,在linux上可以通過tunefs來查看塊大小,以計算每秒讀取的數據大小

        bo:每秒寫入的塊數

        這兩個值越大,CPU在IO等待的值就會越大


    system:

        in:每秒處理的中斷數,包括時鐘中斷

        cs:每秒上下文切換數

        這兩個值越大,則內核消息的CPU時間越大


    CPU:

        us:用戶進程消耗的cpu

        sy:內核系統進程消耗的cpu

        wa:IO等待造成的cpu消耗,如果該值高時,可能由於磁盤大量隨機訪問導致,也可能是磁盤出現瓶頸

        id:空閒的cpu







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章