Linux 上的“有效使用”記憶體是什麼?“使用”還是(“總”-“可用”)?
我需要在 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
這取決於您的使用應該反映什麼。In
free
的輸出:
- “used”計算為“total-free-buffers-cache”,所以它反映了目前儲存有用數據的記憶體量,不包括記憶體;
- “可用”應該是可以立即用於其他用途的物理記憶體量。
“總 - 可用”的含義類似於“目前正在使用且不可替換的物理記憶體”。這與“使用”之間的區別,即您提到的 5GB 和 15GB,是目前儲存在其他地方尚不可用的數據的物理記憶體量,即臟緩衝區(因此您的 PostgreSQL 有更多數據等待訪問磁碟)。“可用”反映了程序可以請求的最大物理記憶體量而不會被迫交換(儘管沒有任何保證,如果一個程序要使用那麼多記憶體,它無論如何都不會交換,因為系統的其餘行為在時間)。
因此,您的兩個值都反映了已用記憶體,但定義略有不同。您使用哪一個取決於您(或您的要求)。“Available”比“used”更準確,所以如果你只想保留一個,它可能是一個更有用的值。
另一種思考方式是考慮價值觀回答了哪些問題:
- “used”告訴您 128GiB 的 RAM 是否對您目前的工作負載有用;
- “available”告訴你還有多少容量;
- “總 - 可用”告訴您您真正需要多少物理 RAM(即,如果您願意失去記憶體帶來的性能收益,您的下一個伺服器或虛擬機可能會小多少)。
沒有完美的折衷方案,這就是為什麼要
free
顯示這兩個值。linux 記憶體管理系統中立即可用的記憶體以及如何跨發行版可移植地獲取可用記憶體量?提供有關“可用”的確切含義的更多詳細資訊。它不等同於“buff/cache”,因為後者包括不可回收的記憶體(因為它尚未寫入磁碟),還有其他可回收但不計入“緩衝區/記憶體”。