Freebsd
防止使用交換需要多少 RAM?
在我的系統中,總是有一些“空閒”和“非活動”記憶體可用,但有時系統會移動幾兆字節進行交換。每晚可能大約 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 “查看調整”)。其他有用的閱讀: