Systemd
休眠到交換分區而不將其用作實際交換空間
多年來,我在沒有交換的情況下設置了我的 Linux 機器,因為它們有足夠的記憶體來做我需要的事情,我寧願一個程序在使用太多記憶體時被殺死,而不是變得越來越大並悄悄地減慢一切。
但是我發現我需要交換才能在筆記型電腦上使用休眠,所以我創建了一個交換分區並且休眠一直執行良好。
最近我發現機器進入待機而不是休眠狀態,經過調查發現交換分區中沒有足夠的空間進行休眠。這是因為我認為為休眠保留的交換分區實際上被用作正常的交換空間。
有什麼方法可以告訴 Linux 僅將給定的交換分區用於休眠,而不是在正常操作期間將其用於交換?
編輯:根據下面的問題,機器有 8GB 記憶體,交換分區也是 8GB,因為我只希望它用於休眠而不是實際交換使用,所以任何大於機器記憶體大小的東西都會被浪費。根本問題是因為 8GB 交換分區被用作附加記憶體,機器現在可以分配高達 16GB 的記憶體(8GB 物理 + 8GB 交換)。它最近使用了 10GB,當然不能休眠,因為 10GB 無法放入 8GB 交換分區。
有什麼方法可以告訴 Linux 僅將給定的交換分區用於休眠,而不是在正常操作期間將其用於交換?
從 中刪除或註釋相應的行/etc/fstab
。我的系統上的範例$ grep swap /etc/fstab /dev/mapper/NEO--L196--vg-swap_1 none swap sw 0 0
已刪除,因為
pm-hibernate
需要“啟動”交換分區才能工作保持交換啟動(所以不要管它
/etc/fstab
),但明確要求核心忽略它。這是通過將 sysctl 參數
vm.swappiness
設置為 0 來完成的(有效值為 0-100;更高將使核心交換更積極;預設值為 60)。為確保此設置在重新啟動後保持不變,請編輯
/etc/sysctl.conf
並添加一行vm.swappiness=0
.