如何在Linux上使用vmstat命令

Linux桌面上的終端提示Fatmawati Achmad Zaenuri / Shutterstock.com

您的Linux或macOS計算機正在使用虛擬內存。了解它怎樣影響系統對物理內存,CPU和硬盤資源的使用。

什麼是虛擬內存?

您的計算機配有一定數量的物理內存,稱為隨機存取內存(RAM)。這個RAM需要由內核管理,並在操作系統和正在運行的任何應用程序之間共享。如果這些組合需求要求的內存比計算機中實際安裝的內存多,那麼內核可以做什麼?

Linux和類似Unix的操作系統(如macOS)可以使用硬盤上的空間來幫助他們管理內存需求。可以使用稱為“交換空間”的硬盤空間的保留區域,就像它是RAM的擴展一樣。這是虛擬內存。

Linux內核可以將內存塊的內容寫入交換空間,並釋放該區域的RAM以供其他進程使用。可以從交換空間檢索交換出的 – 也稱為“分頁”外部存儲器,並在需要時將其恢復到RAM。

當然,分頁內存的訪問速度比RAM中的內存速度慢。而這不是唯一的權衡。雖然虛擬內存確實為Linux提供了管理其內存需求的方法,但使用虛擬內存會增加計算機上其他地方的負擔。

您的硬盤驅動器必須執行更多的讀寫操作。內核 – 因此,CPU – 必須做更多的工作,因為它交換內存,交換內存,並保持所有的板旋轉,以滿足不同進程的內存需求。

Linux提供了一種方式來監視所有這些活動的形狀 vmstat的 命令,報告虛擬內存統計信息。

vmstat命令

如果你輸入 vmstat的 作為沒有參數的命令,它將顯示一組值。這些值是自您的計算機上次重新啟動以來每個統計信息的平均值。這些數字並不是“現在”價值的快照。

vmstat的

vmstat在終端窗口中

將顯示一個簡短的值表。

終端窗口中的vmstat輸出

有一些標題為Procs,Memory,Swap,IO,System和CPU。最後一列(最右側列)包含與CPU相關的數據。

vmstat在終端窗口中輸出右側列

以下是每列中的數據項列表。

PROC

  • r:可運行進程的數量。這些進程已經啟動並且正在運行或正在等待下一次時間切片的CPU周期。

  • b:不間斷睡眠中的進程數。進程沒有休眠,它正在執行阻塞系統調用,並且在完成當前操作之前不能中斷。通常,該過程是等待某些資源免費的設備驅動程序。當進程恢復其常規活動時,將處理該進程的任何排隊中斷。

記憶

  • swpd:使用的虛擬內存量。換句話說,已經換掉了多少內存。

  • free:空閑(當前未使用)內存量。

  • buff:用作緩衝區的內存量。

  • cache:用作緩存的內存量。

交換

  • si:交換空間交換的虛擬內存量。

  • so:交換空間的虛擬內存量。

IO

  • bi:從塊設備接收的塊。用於將虛擬內存交換回RAM的數據塊數。

  • bo:發送到塊設備的塊。用於將虛擬內存從RAM交換到交換空間的數據塊數。

系統

  • in:每秒的中斷數,包括時鐘。

  • cs:每秒上下文切換次數。上下文切換是指內核從系統模式處理切換到用戶模式處理。

中央處理器

這些值是總CPU時間的所有百分比。

  • 我們:運行非內核代碼所花費的時間。也就是說,在用戶時間處理和良好時間處理中花費了多少時間。

  • sy:運行內核代碼所花費的時間。

  • id:空閑時間。

  • wa:等待輸入或輸出所花費的時間。

  • st:從虛擬機中竊取的時間。這是虛擬機必須等待虛擬機管理程序完成為其他虛擬機提供服務才能返回並參與此虛擬機的時間。

使用時間間隔

我們可以有 vmstat的 通過使用a來定期更新這些數字 延遲 值。該 延遲 值以秒為單位提供。要使統計信息每五秒更新一次,我們將使用以下命令:

vmstat 5

vmstat 5在終端窗口中

每五秒鐘 vmstat的 將向表中添加另一行數據。您需要按Ctrl + C才能停止此操作。

在終端窗口中從vmstat 5輸出

使用計數值

用得太低了 延遲 價值會給你的系統帶來額外的壓力。如果您需要快速更新以嘗試診斷問題,建議您使用 計數 價值以及a 延遲 值。

計數 價值告訴 vmstat的 退出前要執行的更新數量,並返回命令提示符。如果你不提供 計數 值, vmstat的 將一直運行,直到它被Ctrl + C停止。

具有 vmstat的 每五秒提供一次更新 – 但僅限四次更新 – 使用以下命令:

vmstat 5 4

vmstat 5 4在終端窗口中

經過四次更新 vmstat的 停止自己。

在終端窗口中從vmstat 5 4輸出

改變單位

您可以選擇使用內容和交換統計信息以千字節或兆字節顯示 -S (單位字符)選項。其後必須是其中之一 ķķ, 要麼 中號。這些代表:

  • k:1000字節

  • K:1024字節

  • m:1000000字節

  • M:1048576字節

要使內存和交換統計信息以兆字節顯示,每10秒更新一次統計信息,請使用以下命令:

vmstat 10 -S M.

vmstat 10 -S M ina終端窗口

內存和交換統計信息現在以兆字節顯示。請注意 -S 選項不會影響IO塊統計信息。這些始終以塊顯示。

從vmstat 10 -S M ina終端窗口輸出

活動和非活動內存

如果你使用 -一個 (活動)選項buff和緩存內存列由“inact”和“active”列替換。正如他們所建議的那樣,這些顯示了非活動和活動內存的數量。

要查看這兩列而不是buff和緩存列,請包括 -一個 選項,如圖所示:

vmstat 5 -a -S M.

vmstat 5 -a -S M在終端窗口中

inact和active列受-S(單位字符)選項的影響。

在終端窗口中輸出vmstat 5 -a -S M.

福克斯

-F switch顯示自計算機啟動以來發生的分叉數。

換句話說,這表示自系統啟動以來已啟動的任務數量(並且,其中大部分已完成關閉)。從命令行啟動的每個進程都會增加這個數字。每次任務或進程產生或克隆新任務時,此數字都會增加。

vmstat -f

終端窗口中的vmstat -f

叉子顯示不會更新。

顯示Slabinfo

內核有自己的內存管理擔心以及操作系統和所有應用程序的內存管理。

正如您可能想象的那樣,內核為它必須處理的許多不同類型的數據對象反覆分配和釋放內存。為了使其儘可能高效,它使用了一個名為slabs的系統。這是一種緩存形式。

特定類型的內核數據對象分配,使用和不再需要的內存可以重新用於相同類型的另一個數據對象,而不會釋放和重新分配內存。將板塊視為預先分配,用於測量RAM的內核,以滿足內核自身的需求。

要查看平板的統計數據,請使用 -m (板)選項。你需要使用 須藤,系統將提示您輸入密碼。由於輸出可能非常冗長,我們正在通過它

sudo vmstat -m |減

sudo vmstat -m |少在終端窗口

輸出有五列。這些是:

  • 緩存:緩存的名稱。

  • num:此緩存中當前活動對象的數量。

  • total:此緩存中可用對象的總數。

  • size:緩存中每個對象的大小。

  • pages:當前與此緩存關聯的(至少)一個對象的內存頁面總數。

輸出來自sudo vmstat -m |更少的終端窗口

q 離開

顯示事件計數器和內存統計信息

要顯示事件計數器和內存統計信息的頁面,請使用 -s (統計)選項。請注意,這是一個小寫的“s”。

vmstat -s

vmstat -s在終端窗口中

雖然報告的統計信息與構成默認值的信息大致相同 vmstat的 輸出,其中一些更詳細地分開。

例如,默認輸出將nice和non-nice用戶CPU時間合併到“us”列中。 -s(統計信息)顯示單獨列出這些統計信息。

在終端窗口中從vmstat -s輸出

顯示磁盤統計信息

您可以使用以下方法獲取類似的磁盤統計信息列表 -d (磁盤)選項。

vmstat -d |減

vmstat -d |少在終端窗口

對於每個磁盤,顯示三列,分別是Reads,Writes和IO。

從vmstat -d |輸出少在終端窗口

IO是最右邊的列。請注意,IO中的sec列以秒為單位進行測量,但讀取和寫入列中基於時間的統計信息以毫秒為單位進行測量。

輸出vmstat -d |少在終端窗口

這就是列的意思:

  • total:磁盤讀取的總數。

  • 合併:分組讀取的總數。

  • sector:已讀入的扇區總數。

  • ms:從磁盤讀取數據時使用的總時間(以毫秒為單位)。

  • total:磁盤寫入的總數。

  • merged:分組寫入的總數。

  • sector:寫入的扇區總數。

  • ms =將數據寫入磁盤的總時間(以毫秒為單位)。

IO

  • cur:當前磁盤讀取或寫入的數量。

  • sec:任何正在進行的讀取或寫入所花費的時間(以秒為單位)。

顯示摘要磁盤統計信息

要查看磁盤活動摘要統計信息的快速顯示,請使用 -D (disk-sum)選項。注意大寫的“D”。

vmstat -D

vmstat -D在終端窗口中

磁盤數量可能看起來異常高。用於研究本文的計算機正在運行Ubuntu。使用Ubuntu,每次從Snap安裝應用程序時,a 的squashfs 創建偽文件系統,它附加到/ dev / loop設備。

令人討厭的是,許多Linux命令和實用程序將這些設備條目視為硬盤驅動器設備。

在終端窗口中輸出vmstat -D

顯示分區統計信息

要查看與特定分區相關的統計信息,請使用 -p (分區)選項並提供分區標識符作為命令行參數。

在這裡,我們將看看分區 SDA1。數字1表示這是設備上的第一個分區 SDA,這是這台電腦的主要硬盤。

vmstat -p sda1

vmstat -p在終端窗口中

返回的信息顯示進出該分區的磁盤讀取和磁盤寫入總數,以及磁盤讀取和磁盤寫入操作中包含的扇區數。

在終端窗口中輸出vmstat -p sda1

在引擎蓋下偷看

知道怎樣抬起引擎蓋,看看下面發生了什麼,這總是很好的。有時候你會嘗試解決問題,有時它會引起人們的興趣,因為你想知道你的計算機是怎樣計算的。

vmstat的 可以為您提供大量有用的信息。現在您知道怎樣訪問它以及它意味着什麼。預先警告是預先設定的 – 當你需要捲起袖子做一些診斷時,你會知道你已經有了 vmstat的 在你身邊。

body #primary .entry-content ul#nextuplist list-style-type:none; margin-left:0px; padding-left:0px;
body #primary .entry-content ul#nextuplist li a text-decoration:none; color:#1d55a9;

請閱讀下一步

  • >怎樣建立一個智能卧室
  • > Steam不支持Ubuntu 19.10和未來版本
  • >怎樣使您的啞窗空調智能化
  • >微軟的新Windows終端現已推出
  • >怎樣在Google地圖上報告虛假商家信息
本文機器自動生成,不保證語句完整通順和表達準確,亦不對內容真實有效性負責,請讀者知悉。