Rhel
為什麼即使 vm.swappiness = 1,RHEL 也使用交換?
RHEL 7.2 記憶體使用,每個
free -m
:total used free shared buff/cache available Mem: 386564 77941 57186 687 251435 306557 Swap: 13383 2936 16381
我們看到使用的交換是 2936M
所以我們想通過以下方式將其減少到 min
echo 1 > /proc/sys/vm/swappiness sysctl -w vm.swappiness=1 echo "vm.swappiness = 1" >> /etc/sysctl.conf
10分鐘後我們再次檢查,但作業系統仍然使用交換
free -m
:total used free shared buff/cache available Mem: 386564 77941 57186 687 251435 306557 Swap: 13389 2930 16381
為什麼我們沒有採取的行動會立即產生影響?
我們是否需要重新啟動作業系統才能讓 swap 曾經是 0 ?
例子
我們執行
vmstat
:vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 85740 20255872 2238248 183126400 0 0 7 162 0 0 7 1 92 0 0
我們減少 vm.swappiness=1
並在 10 分鐘後執行 vmstat:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 85740 20255872 2238248 183126400 0 0 7 162 0 0 7 1 92 0 0
正如您之前被告知的(請參閱為什麼 swappiness 不起作用?),更改
swappiness
只會影響核心在需要釋放記憶體時做出的未來決策。減少它不會導致核心重新載入所有被換出的東西。您的
vmstat
輸出顯示交換沒有被積極使用,即您目前的工作負載確實不需要已換出的頁面。嘗試以您傾向於做的方式對核心對交換的使用進行微觀管理是沒有意義的。根據您的工作負載,決定是否需要支持頁面記憶體,
swappiness
進行相應調整,然後讓系統繼續執行。如果您真的想清除交換,請禁用它並重新啟用它:
swapoff -a && swapon -a