Linux
交換記憶體,以及作業系統何時開始使用它
我們正在執行 Red Hat Enterprise Linux 版本 7,我們所有的機器都是虛擬機。
我們的記憶體資源是有限的,物理 RAM 需要花錢,所以我們正在考慮增加交換而不是增加記憶體。
這是一個好主意嗎?
其次,作業系統何時/從什麼時候開始使用交換?
不,這是個壞主意。
您不應該將交換視為一種可以擴展記憶體的機制。它是部分記憶體的儲存區域,這些部分不必保留在物理記憶體中,其內容也不存在於其他任何地方。請參閱為什麼 Linux 需要 VM 中的交換空間?詳情。
如果在您的虛擬機中執行的程序記憶體不足,您需要確定它們的實際工作集是什麼,無論是在名義操作還是在最壞的情況下。然後,假設您無法減少它們的記憶體使用量,您需要配置它們的記憶體設置以適應:RAM 分配、交換和核心配置(swappiness 等)。RAM 分配將直接影響每台主機可以執行的 VM 數量,如果您無法向主機添加更多記憶體,這應該是您的主要調整變數。(當然,這對成本方面沒有幫助……)根據您需要虛擬機的用途,另一種策略可能是使用容器,因為這樣可以減少成本。
作業系統通常在需要分配記憶體並且可用物理記憶體用完時開始使用交換,並且目前物理記憶體中使用最少的記憶體頁面沒有所謂的備份儲存(或者更確切地說,它們的備份儲存是交換)。當一個程序需要更多記憶體時,核心會首先尋找一些空閒記憶體;然後它會查看它可以擺脫的東西的分層列表——記憶體、緩衝區、映射的執行檔等。請注意,即使在沒有“可見”記憶體壓力的情況下也可以使用交換:總是有一些數據儲存在實際未使用的記憶體,最好儲存在交換中。