Linux 下如何使用 vmstat 命令

2022-01-25 腳本之家

作者 | LinuxThings

來源 | Linux開發那些事兒(ID:LinuxThings)

vmstat 是 virtual memory statistics 的縮寫,它是Linux下一個非常有用的監控工具,除了內存之外,還提供 塊 IO、CPU 時間 等額外的信息

語法

vmstat 命令的執行不需要特殊的權限,普通用戶就可以執行,其語法形式如下

vmstat [options] [delay [count]]

delay 表示數據更新間隔,單位是秒,如果沒有指定此值,表示系統啟動以來的平均時間,而且此時只輸出一次結果

count 表示輸出次數,如果沒有指定該值,但是指定了 delay 的值,則表示無限次

結果欄位說明

在命令行輸入 vmstat 並回車, 會輸出一次結果

[root@cghost22 ~]# vmstat
procs -memory ---swap-- io---- -system-- -cpu
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 0 991324 932 537336 0 0 0 0 3 4 0 0 100 0 0
[root@cghost22 ~]#

結果中有許多的欄位,下表列出了每個欄位的詳細說明

欄位說明r可運行進程的數量,包括運行態和就緒態b處於不可中斷睡眠狀態的進程數量swpd虛擬內存使用量free空閒內存buff用作buffer的內存數量cache用作cache的內存數量si從磁碟換入內存的數量so從內存換出到磁碟的數量bi從塊設備接收的塊,單位:塊/秒bo發送到塊設備的塊,單位:塊/秒in每秒中斷數,包括時鐘中斷cs每秒上下文切換數us用戶態執行時間sy內核態執行時間idCPU空閒時間wa等待IO的時間st從虛擬機中偷取的時間

表中第二行 處於不可中斷睡眠狀態的進程數量,這裡的不可中斷是指 一個進程在執行某些系統調用時進入的狀態,在這種狀態下,進程被阻塞,並且不能被中斷,直到完成系統調用

欄位結果按照顏色分成了幾部分,從上到下依次是:進程信息,內存信息,IO信息,系統中斷和上下文,CPU時間

內存信息中數值的單位默認是 KB ( 1024 kbytes ), CPU時間欄位並不表示具體的時間,而是佔總CPU時間的一個百分比

常見選項選項說明-a顯示活躍和非活躍內存-f從系統啟動至今 fork 的數量,包括 fork、vfork 以及 clone 等系統調用-s顯示系統事件計數以及內存統計信息-d報告磁碟統計信息-D統計活動磁碟信息-p指定分區的詳細信息-t追加一列時間顯示-S按照指定字節單位顯示-w結果按照寬模式顯示-Vvmstat的版本常見用法

vmstat 命令主要用於識別系統的瓶頸,統計數據的時候,它不會包含自身進程

[root@cghost22 ~]$ 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
2 0 12552 148356 234324 3382956 0 0 1 21 4 4 2 2 97 0 0
1 0 12552 148264 234324 3382980 0 0 0 0 14974 27478 3 2 96 0 0
1 0 12552 148232 234324 3382984 0 0 0 14 14384 27181 3 2 96 0 0
0 0 12552 148376 234332 3383052 0 0 0 204 14197 26812 4 2 94 0 0
0 0 12552 148512 234332 3383088 0 0 0 4 14398 27155 3 2 95 0 0
0 0 12552 147892 234332 3383128 0 0 0 210 15515 28802 3 2 95 0 0
1 0 12552 148388 234332 3383156 0 0 0 0 15147 28042 3 2 95 0 0
0 0 12552 148264 234332 3383168 0 0 0 4 14380 27395 3 1 96 0 0
0 0 12552 148264 234336 3383216 0 0 0 198 14430 27008 3 1 95 0 0
2 0 12552 148140 234336 3383252 0 0 0 6 14233 27161 3 2 95 0 0

2 表示每隔 2 秒輸出一次結果,10 表示總共輸出 10 次,10 次之後程序自動結束

輸出的結果中,內存數據的單位默認是 KB,可以通過 -S 選項調整顯示的單位,有下面幾種單位可供選擇

注意:-S 選項對 si、 so 欄位無效

k    # 1000 bytes
K # 1024 bytes
m # 1000 * 1000 bytes
M # 1024 * 1024 bytes

上圖中第一個結果中內存數據顯示單位是 KB , 第二個結果中單位是 MB,將第一個結果對應欄位的數值除以 1024 就得到了第二個結果

inact 是非活躍內存,active 是活躍內存

活躍內存是進程在使用的內存,非活躍內存是未運行進程的內存

這裡的 fork 數量包括 fork、vfork 以及 clone 等系統調用

[root@cghost22 ~]# vmstat -f
12714 forks
[root@cghost22 ~]# vmstat -f
12715 forks
[root@cghost22 ~]# vmstat -f
12716 forks

我們每次在控制臺執行一次命令,系統就會 fork 一個新的進程來執行命令,比如像上面的例子,每執行一次 vmstat -f 命令,系統就會 fork 一個新進程

這個選項還可以用於統計某個操作消耗多少次 fork 調用,只需要在操作前後各執行一次 vmstat -f 命令,比較兩次結果的差值即可

追加一列時間顯示,有助於比較一段時間內的結果

vmstat 結果中的某些欄位的數字有時會比較長,而且跟欄位名的位置有偏差, 不太適合人類的觀看習慣,-w 選項可以按照寬模式顯示數據,使結果看起來更直觀,下圖是分別未使用寬模式和使用了寬模式的一個對比

磁碟信息主要分三個方面:讀、寫、IO ,讀和寫以毫秒為單位,IO以秒為單位


total: 成功讀取的總數
merged: 分組讀取(產生一個 IO)
sectors: 成功讀取的扇區數
ms: 讀取花費的毫秒


total: 成功寫入的總數
merged: 分組寫入(產生一個 IO)
sectors: 成功寫入的扇區數
ms: 寫花費的毫秒

IO
cur: 正在進行的IO
s: IO花費的秒數

上圖中,輸出結果顯示 sda3 分區設備的信息,它們包括:讀計數、讀取的扇區數,寫計數,分區寫請求總數

相關焦點

  • vmstat和iostat命令監控linux性能
    vmstat 和 Iostat 這兩個命令都可用於所有主要 Unix-like (Linux/Unix/FreeBSD/Solaris) 作業系統。如果 vmstat 和 iostat 命令不存在請安裝 sysstat包。vmstat, sar 和 iostat 命令是包含在包中的集合 sysstat系統監控工具。這iostat 生成報告 CPU和所有設備統計信息。
  • Linux之vmstat命令
    物理內存就是系統硬體提供的內存大小,是真正的內存,相對於物理內存,在linux下還有一個虛擬內存的概念,虛擬內存就是為了滿足物理內存的不足而提出的策略,它是利用磁碟空間虛擬出的一塊邏輯內存,用作虛擬內存的磁碟空間被稱為交換空間(Swap Space)。
  • Linux常用系統性能監控命令
    :[root@localhost ~]# gnome-system-monitor將會出現圖形化工具GNOME System Monitor,如下圖所示:監控CPU調度程序運行隊列linux可以使用vmstat命令
  • 如何使用Linux Top命令
    作為系統管理員,它可能是工具箱中最有用的工具,特別是如果您知道如何使用它的話。所有Linux發行版都預裝了top實用程序。通過這個交互式命令,您可以自定義如何瀏覽進程列表、殺死一個進程、將結果列印到文件中等等。本文描述了作為管理員使用top命令更有效地檢查系統活動的各種方法。我們已經在Ubuntu 18.04 LTS系統上運行了本文中提到的命令和過程。
  • Linux下使用tar命令
    tar命令,所以今天來個簡單科普。範例:範例一:將整個 /etc 目錄下的文件全部打包成為 /tmp/etc.tar[root@linux ~][root@linux ~][root@linux ~]特別注意:在參數
  • Linux中檢查Swap交換空間的5個命令
    本文中描述的命令和過程已在Ubuntu 18.04 LTS系統上運行。我們正在使用Ubuntu命令行終端,以檢查我們系統上的交換空間。要打開終端,您可以使用Dash或Ctrl + alt + T快捷鍵。
  • Linux下查看內存使用情況方法總結
    Q:我想監視Linux系統的內存使用情況,在Linux下有哪些視圖或者命令行工具可用呢?
  • Linux下查看內存的使用情況
    我想監視Linux系統的內存使用情況,在Linux下有哪些視圖或者命令行工具可用呢?在做Linux系統優化的時候,物理內存是其中最重要的一方面。自然的,Linux也提供了非常多的方法來監控寶貴的內存資源的使用情況。
  • Linux下怎麼檢查Swap交換空間
    本文中描述的命令和過程已在Ubuntu 18.04 LTS系統上運行。我們正在使用Ubuntu命令行終端,以檢查我們系統上的交換空間。要打開終端,您可以使用Dash或Ctrl + alt + T快捷鍵。然後,您可以選擇以下方式來獲取交換空間信息:Linux free命令free此命令用於在幾行中檢查系統上的內存和交換利用率。不使用任何開關,顯示的輸出以千字節列印。
  • 如何使用Linux Sleep命令暫停Bash腳本
    Sleep是一個命令行實用程序,允許您將調用進程掛起一段指定的時間。也就是說,sleep命令在給定的時間內暫停下一個命令的執行。
  • Linux如何查看內存的使用情況?
    本節將介紹幾個系統命令,通過它們,可以快速查看 Linux 系統中內存的使用狀況。Linux查看內存使用情況:free命令free 是監控 Linux 內存使用狀況最常用的命令之一,有關該命令的基本用法,已經在《Linux free命令》一節中做了詳細介紹,所以不再贅述,這裡重點給大家講解如何使用 free 命令查看系統內存的使用情況。
  • 20個命令行工具監控 Linux 系統性能
    我已經有5年 Linux 管理員的工作經歷,知道如何監控系統使其保持正常運行。為此,我們編寫了對於 Linux/Unix 系統管理員非常有用的並且最常用的20個命令行系統監視工具。這些命令可以在所有版本的 Linux 下使用去監控和查找系統性能的實際原因。這些監控命令足夠你選擇適合你的監控場景。
  • 使用dstat檢查Linux系統性能
    您可能需要查看dstat命令。 Dstat提供了有關Linux系統性能的寶貴見解,幾乎取代了一系列舊工具,如vmstat,netstat,iostat和ifstat,它們具有結合其功能的靈活而強大的命令。使用這一個命令,您可以查看虛擬內存,網絡連接和接口,CPU活動,輸入/輸出設備等。 在今天的帖子中,我們將檢查一些dstat命令,看看它們可以向您展示有關系統的內容。
  • 如何使用ln命令在Linux中創建符號連結
    在本指南中,我們將介紹如何使用ln命令創建符號連結。連結類型Linux/UNIX系統中有兩種類型的連結:命令ln是用於在文件之間創建連結的實用程序。默認情況下,ln命令會創建硬連結。要創建符號連結,請使用-s(--symbolic)選項。
  • 18個Linux命令行工具
    基於此原因,我們已編寫了最常使用的18個命令行工具列表,這些工具將有助於每個Linux/Unix 系統管理員的工作。這些命令行工具可以在各種Linux系統下使用,可以用於監控和查找產生性能問題的原因。這個命令行工具列表提供了足夠的工具,您可以挑選適用於您的監控場景的工具。
  • vmstat:一個標準的報告虛擬內存統計工具
    因此,我不想深入介紹,這樣我就簡要概括下。RAM 代表「隨機訪問內存Random Access Memory」,是一種計算機數據存儲,它會存儲經常使用的程序來提升系統性能。什麼是虛擬內存?虛擬內存是一種內存管理方式,計算機通過臨時將最近未使用的程序數據從 RAM 轉移到硬碟,以平衡或管理內存的短缺。什麼是 vmstat?
  • 值得收藏,史上最全Linux ps命令詳解
    由於一些工作的原因,需要向運維工程師學習一些linux常用命令。當使用linux ps這個十分常用的命令時,遇到了一個小小的疑惑。有些工程師推薦使用ps aux的命令組合,有些工程師推薦使用ps -aux的命令組合,從輸出結果上來看似乎也沒有什麼不同。考慮到如常用的ls -l命令在內,很多linux命令選項前都要加上一個短橫線,這麼來看似乎ps -axu是正確的。
  • 在Linux中檢查可用內存的5種方法
    本文解釋了使用以下5個命令來檢查可用內存:free命令vmstat命令/proc/meminfo命令top命令htop命令通過使用這些命令,您始終可以確保有足夠的內存資源用於伺服器上運行的非常重要的進程。例如,如果您正在運行Web伺服器,則可以確保缺少資源不會降低網站訪問速度,或者網站不會完全停止運行。
  • Linux系統命令 - 查看內存使用情況
    我們知道, /proc 目錄下都是虛擬文件,包含內核以及作業系統相關的動態信息。使用 vmstat 命令使用 vmstat -s 命令和選項, 可以對內存使用情況進行統計, 類似於 /proc/meminfo。
  • 最常用的20個監控Linux系統性能的命令行工具
    我已經有5年 Linux 管理員的工作經歷,知道如何監控系統使其保持正常運行。為此,我們編寫了對於 Linux/Unix 系統管理員非常有用的並且最常用的20個命令行系統監視工具。這些命令可以在所有版本的 Linux 下使用去監控和查找系統性能的實際原因。這些監控命令足夠你選擇適合你的監控場景。