Linux

如何使用 vmstat 獲取 % 記憶體使用率?

  • May 14, 2019

我需要從 vmstat 獲取以 % 為單位的記憶體使用情況,但我不太了解 vmstat 中顯示的與記憶體相關的一些數字。

特別是,給定這樣的輸出

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
1  0 139728  45396 199128 1236360    1    2     4   622    3    1 51  4 43  2  0

系統的總記憶體量是多少?是 ‘swpd’ + ‘free’ + ‘buff’ + ‘cache’,一共是 1620612?

系統的可用記憶體量是多少?是 45396,顯示在“免費”列中嗎?

問題是他們沒有加起來甚至看起來接近“頂部”報告的內容。我與上面的“vmstat”大約同時使用的“top”的輸出是:

[...]
Mem:   4059616k total,  3965504k used,    94112k free,   200020k buffers
[...]

所以…我假設’vmstat’中必須有我不知道的隱藏數字/選項?

為此,我需要使用“vmstat”而不是其他命令,因為這是要求的內容。

所以理想情況下,我想從“vmstat”實現的是記憶體使用百分比,如:

<used_memory>/<total_memory> * 100%.

謝謝!

您正在尋找的是“免費”的輸出:

$ free
            total       used       free     shared    buffers     cached
Mem:        775556     759456      16100          0      22132     592484
-/+ buffers/cache:     144840     630716
Swap:       500344      21972     478372

這是一個遊覽:

這是一個帶有 768MB 物理 RAM 和 500344KB 交換分區的盒子。

759456KB 已“使用”(第二列,頂行)。在這個“已用”記憶體中,23132KB 是緩衝區(第 5 列,頂行),592484KB(第 6 列,頂行)是高速記憶體,剩下 144840KB(第 2 列,第 2 行)物理記憶體正在被活動程序使用。

當您考慮緩衝區和高速記憶體使用的記憶體可用於程序時,剩下 630716KB(第 3 列,第 2 行)物理記憶體可用。

正如我所說,交換分區是 500344KB(第一列,底行)。交換文件的 21972KB(第 2 列,底行)正在使用中,剩餘 478372KB(第 3 列,底行)空閒。

因此,您對可用記憶體百分比的定義取決於您是否計算緩衝區和記憶體,以及是否計算交換。

這應該足以讓您繼續計算您認為合適的百分比。


這是 top 和 free 的輸出:

$ top -n1 | grep "used," ; free
Mem:    775556k total,   751472k used,    24084k free,    20776k buffers
Swap:   500344k total,    21972k used,   478372k free,   586648k cached

            total       used       free     shared    buffers     cached
Mem:        775556     751344      24212          0      20776     586648
-/+ buffers/cache:     143920     631636
Swap:       500344      21972     478372

您可以看到 top 和 free 是如何達成一致的(儘管有一點不同——這是一台多使用者機器,並且 top 和 free 程序的記憶體使用情況都反映在其中)。


呼叫 vmstate 時添加一個“-s”,您將看到幾乎相同的輸出,只是形式不同:

$ vmstat -s ; free
      775556  total memory
      759920  used memory
      674680  active memory
       18440  inactive memory
       15636  free memory
       21892  buffer memory
      594372  swap cache
      500344  total swap
       21972  used swap
      478372  free swap
      ... output truncated ...

            total       used       free     shared    buffers     cached
Mem:        775556     759920      15636          0      21892     594372
-/+ buffers/cache:     143656     631900
Swap:       500344      21972     478372

您可以看到 vmstat 將所有相同的數字顯示為空閒。

引用自:https://serverfault.com/questions/38065