Freebsd

防止使用交換需要多少 RAM?

  • May 3, 2019

在我的系統中,總是有一些“空閒”和“非活動”記憶體可用,但有時系統會移動幾兆字節進行交換。每晚可能大約 100MB,但幾天的交換可能超過 4000MB。

如何確定係統所需的記憶體?

FreeBSD將記憶體分為 5 個列表

  • 有線(鎖定在記憶體中,不可分頁)
  • 活躍的(最近使用的)
  • 非活動(最近未使用)
  • 記憶體
  • 自由

其中一些具有最低免費目標免費級別,例如

Pool     Minimum Target
Free       0.7%    3%
Cache      3%      6%
Inactive   0%      4.5%

(來源:The Design and Implementation of the FreeBSD Operating System’,相當日期:2004 年涵蓋 FreeBSD 5.2 ——從那時起這些數字發生了變化,但我相信一般方法並沒有改變。)

pagedaemon 的任務是維護級別,並根據需要進行分頁。

從我這裡的 FreeBSD 9.0 VM 中,這些是一些相關的數字:

hw.availpages: 3138511
vm.stats.vm.v_inactive_target: 121342     # 3.9%
vm.stats.vm.v_free_target: 80895          # 2.6%
vm.stats.vm.v_free_reserved: 4011         # 0.1%
vm.stats.vm.v_free_min: 19221             # 0.6%
vm.stats.vm.v_cache_min: 80895            # 2.6%
vm.stats.vm.v_cache_max: 161790           # 5.1%

(我不確定它們是如何計算的,這取決於物理記憶體,大概是kern.maxusers)。

FreeBSD會主動換頁以增加可用記憶體,因此使用交換並不意味著您的系統處於壓力之下。檢查(並繪製圖表!)分頁率和其他負載指標(例如磁碟 I/O 和 CPU 滴答聲)要有用得多,這systat -io是一個開始。執行 locate/updatedb 是一夜之間改變記憶體使用的好方法。

即使有空閒記憶體也使用交換是正常行為,它有效地為空閒時可能的未來記憶體需求做準備,因此單獨使用交換不是確定 RAM 需求的可靠方法。FreeBSD 非常擅長告訴您何時需要調整某些內容(messages文件中的 grep “查看調整”)。

其他有用的閱讀:

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