Linux

Linux 上的“有效使用”記憶體是什麼?“使用”還是(“總”-“可用”)?

  • November 7, 2019

我需要在 GUI 中顯示操作員使用的記憶體與 Linux 伺服器上的可用記憶體

那麼什麼是邏輯上正確的值來顯示為用法呢?

[root@host ~]# free
             total        used        free      shared  buff/cache   available
Mem:      131753676   110324960     1433296     4182648    19995420    16240640
Swap:       2097148      652076     1445072

used還是(total- available)?

區別在於:110324960 與 115513036 或 5188076 kb ~= ~5 GB 那麼這 5 GB 是有效使用的還是可用的或不可用的和未使用的呢?在記憶體使用百分比中顯示什麼更正確?

這適用於 CentOS 7.3 PC,執行 2 個 java 服務

但是 PostgreSQL 伺服器上的情況完全不同

[root@postgres_server1 ~]# free
             total        used        free      shared  buff/cache   available
Mem:      131753684     7364056    77736740    15598120    46652888   107942020
Swap:       2097148           0     2097148

used其中和 ( total- )之間的差異available要大得多:16447608 kb ~=15.7 GB

這取決於您的使用應該反映什麼。Infree的輸出:

  • “used”計算為“total-free-buffers-cache”,所以它反映了目前儲存有用數據的記憶體量,不包括記憶體;
  • “可用”應該是可以立即用於其他用途的物理記憶體量。

“總 - 可用”的含義類似於“目前正在使用且不可替換的物理記憶體”。這與“使用”之間的區別,即您提到的 5GB 和 15GB,是目前儲存在其他地方尚不可用的數據的物理記憶體量,臟緩衝區(因此您的 PostgreSQL 有更多數據等待訪問磁碟)。“可用”反映了程序可以請求的最大物理記憶體量而不會被迫交換(儘管沒有任何保證,如果一個程序要使用那麼多記憶體,它無論如何都不會交換,因為系統的其餘行為在時間)。

因此,您的兩個值都反映了已用記憶體,但定義略有不同。您使用哪一個取決於您(或您的要求)。“Available”比“used”更準確,所以如果你只想保留一個,它可能是一個更有用的值。

另一種思考方式是考慮價值觀回答了哪些問題:

  • “used”告訴您 128GiB 的 RAM 是否對您目前的工作負載有用;
  • “available”告訴你還有多少容量;
  • “總 - 可用”告訴您您真正需要多少物理 RAM(,如果您願意失去記憶體帶來的性能收益,您的下一個伺服器或虛擬機可能會小多少)。

沒有完美的折衷方案,這就是為什麼要free顯示這兩個值。

linux 記憶體管理系統中立即可用的記憶體以及如何跨發行版可移植地獲取可用記憶體量?提供有關“可用”的確切含義的更多詳細資訊。它不等同於“buff/cache”,因為後者包括不可回收的記憶體(因為它尚未寫入磁碟),還有其他可回收但不計入“緩衝區/記憶體”。

引用自:https://unix.stackexchange.com/questions/550853