首頁 > 軟體

Linux 系統實時監控工具vmstat

2020-06-16 17:42:36

vmstat的官方定義是:vmstat - Report virtual memory statistics,即虛擬記憶體的統計。

先來追根溯源:

什麼是虛擬記憶體?

答:虛擬記憶體就是磁碟上虛擬出來可以當記憶體使用的一個檔案

為什麼要有虛擬記憶體?

答:程式需要經由記憶體來執行,如果程式執行時佔用記憶體過多,記憶體耗盡,就會影響程式執行,在這種情況下,虛擬記憶體就會站出來——呼叫硬碟空間來充當記憶體,緩解記憶體緊張的狀態,使程式順利的執行下去。但是經由硬碟的讀取遠不如直接從記憶體來讀取的效率高(所以有條件的話多買點記憶體條)

進入正題:

vmstat的監控項有什麼?

答:進程,記憶體,分頁,塊I/O,traps和CPU活動

vmstat的引數?

-V prints version.   顯示版本號
-n causes the headers not to be reprinted regularly.  欄位名稱只顯示一次
-a print inactive/active page stats.  顯示非活躍/活躍記憶體
-d prints disk statistics  顯示磁碟資料資訊
-D prints disk table  顯示磁碟統計表
-p prints disk partition statistics  顯示磁碟分割區資訊

如:[root@localhost /]# vmstat -p /dev/sda2

sda2       reads           read sectors            writes         requested writes
             41788           1781810             22914859         360923320

-s prints vm table  顯示記憶體相關統計資訊和各種活動數量
-m prints slabinfo  顯示slabinfo資訊,slab是Linux的一種記憶體分配機制,不具體關注了
-t add timestamp to output  在結果中顯示時間
-S unit size  指定記憶體顯示的單位,單位有k,K,m,M(1000, 1024, 1000000, or 1048576 bytes)

vmstat的結果解釋:

[root@localhost /]# vmstat -S m

procs -----------memory---------- ---swap-- -----io---- --system--  -----cpu-----
r b        swpd free buff cache        si so         bi bo        in cs      us sy id wa st

procs      r  執行和等待CPU的進程數

             b  等待資源的進程數

memory  swpd  虛擬記憶體使用量

              free   空閒記憶體量

              buff  作為buff使用的記憶體

              cache  作為cache使用的記憶體

swap      si   從磁碟讀入虛擬記憶體的交換量

             so   從虛擬記憶體寫入磁碟的交換量

IO         bi   從塊裝置讀入的資料總量,讀磁碟 kb/s

            bo  從塊裝置寫入的資料總量,寫磁碟  kb/s

system  in  每秒中斷數

            cs  每秒上下文切換次數

cpu      us sy id wa   使用者消耗、系統消耗、空閒狀態、IO等待消耗百分比      

            st 虛擬機器的cpu損耗

主要關注:

r   最好不要超過cpu總數,長期大於的話需要重點關注

b   長期很高時需要注意

swpd   最好不要大於0,如果大於0,接著看si,so,如果為0或很低的話,沒事

si,so  數值比較高,並且在不斷變化時,說明記憶體不夠了,記憶體中的資料頻繁交換到交換分割區中,這往往對系統效能影響極大

bi,bo  數值高表示io壓力大

擴充套件知識:

1 進程有哪些狀態

  答:進程是系統進行資源分配和排程的基本單位,它可以申請和擁有系統資源,是一個動態的概念。簡單可理解為“一個程式”被執行的過程即為“一個進程”,主要的狀態分為:就緒-執行-阻塞

        就緒即為已獲得資源,正在等待獲取CPU;執行是獲得CPU後程式執行的狀態;阻塞是指進程等待某種條件(如I/O操作或進程同步),在條件滿足之前無法繼續執行的狀態

        vmstat中的r和b可從中理解其原理

2 塊裝置和字元裝置

  答:是i/o裝置的兩大分類。塊裝置將資訊儲存在固定大小的塊中,每個塊都有自己的地址。資料塊的大小通常在512位元組到32768位元組之間。塊裝置的基本特徵是每個塊都能獨立於其它塊而讀寫。磁碟是最常見的塊裝置;字元裝置是指在I/O傳輸過程中以字元為單位進行傳輸的裝置,例如鍵盤,印表機等

3 上下文切換

  答:是指CPU從一個執行緒或進程切換到另一個執行緒或進程。CPU切換到另一個進程需要儲存當前進程的狀態並恢復另一個進程的狀態:當前執行任務轉為就緒(或者掛起、刪除)狀態,另一個被選定的就緒任務成為當前任務。上下文切換包括儲存當前任務的執行環境,恢復將要執行任務的執行環境。如果可執行的執行緒數大於CPU的數量,那麼OS會強行暫停正在執行的執行緒,從而使其他執行緒能夠使用CPU,這會引起上下文切換,而上下文切換會導致很大的CPU時間消耗,所以如果上下文切換頻繁時,需要關注

  通常在三種情況下可能會發生上下文切換:中斷處理,多工處理,使用者態切換

4 中斷

  答:是指當出現需要時,CPU暫時停止當前程式的執行轉而執行處理新情況的程式和執行過程。當發生中斷時會引起上下文切換

如何通過閱讀原始碼了解 vmstat 中的指標  http://www.linuxidc.com/Linux/2016-01/127867.htm

Linux vmstat 命令詳解 http://www.linuxidc.com/Linux/2013-03/80983.htm

Linux下vmstat 顯示結果詳解 http://www.linuxidc.com/Linux/2013-01/77497.htm

Linux監控工具之vmstat 詳解 http://www.linuxidc.com/Linux/2012-09/71295.htm

Linux vmstat命令實戰詳解 http://www.linuxidc.com/Linux/2012-06/61771.htm

Linux vmstat監控系統負載 http://www.linuxidc.com/Linux/2012-01/51340.htm

vmstat命令詳解——Linux效能分析 http://www.linuxidc.com/Linux/2014-06/102884.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-04/130764.htm


IT145.com E-mail:sddin#qq.com