Centos

在 AlmaLinux 8 或 CentOS 7 上,vm.swappiness=0 是否意味著 Swap 被完全禁用?

  • October 20, 2022

多年來,我vm.swappiness=1在 sysctl.conf 中遇到的問題一直存在,但即使有足夠的 RAM 可用(就記憶體而言,可能幾乎已滿,雖然通常仍然有 4GB 空閒,但“可用”仍然相當免費) ,swap 一直在使用,有時幾乎滿了。

除非絕對必要,否則我根本不想使用交換。

我剛剛在 2019 年的這個答案中讀到:

swappiness=0 告訴核心盡可能長時間地避免將程序交換出物理記憶體

但是,我還在2012 年的這個答案中讀到:

交換= 0:

  • 核心版本 3.5 及更高版本:禁用交換性。
  • 早於 3.5 的核心版本:盡可能避免將程序從物理記憶體中交換出來。

所以我很困惑……vm.swappiness=0完全禁用交換,還是在絕對必要時仍然使用交換?

我的伺服器的核心版本:

  • 4.18 (AlmaLinux 8)
  • 3.10 (CentOS 7)

完全禁用交換的唯一方法是首先不設置它。

設置vm.swappiness為 0 將導致核心只使用交換作為最後的手段;它目前被記錄為

在 0 時,核心將不會啟動交換,直到空閒和文件支持的頁面數量小於區域中的高水位線。

據我所知,設置swappiness為 0 從未完全禁用交換,因此如有必要,您將在兩個環境中看到交換。

它並沒有完全禁用交換,至少不是以您可能考慮的方式。如果您使系統休眠,它將使用交換。當您重新啟動系統時,您可能會發現某些交換仍在使用中。幾天前我發現了這一點。我swappiness設置為0沒有使用交換,當我恢復系統時,我發現交換仍然使用 512K。這是在5.14.21

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