影響Swap效能的設定

Posted by JSON on February 13, 2015

如果有使用VPS如 Digital OceanLinode 常會遇到記憶體不夠用的情形,除了砸錢升級外就是使用Swap,然而 進行Swap是很貴的行為,會拖慢系統的速度,透過調整下面介紹的幾個參數 ,多少可以減輕一些負擔

swappiness

swappiness參數用以調整進行Swap的頻率,值可以是0~100, 越低的值會降低系統進行Swap的頻率,越接近100則系統會經常地將data 送進Swap讓記憶體空間保持乾淨,實務上不要讓系統太倚賴Swap才能產生較好的效能。

透過以下指令可以得到目前swappiness的設定值

cat /proc/sys/vm/swappiness

預設值應為60,在一般電腦上不算太差,但在我們的VPS上會希望越接近0 越好,透過以下指令可以設定swapiness:

sudo sysctl vm.swappiness=10

這樣的設定再重開機後就沒用了,還要修改sysctl.conf檔案:

sudo vim /etc/sysctl.conf

於檔案底端加入以下設定後儲存

vm.swappiness=10

vfs_cache_pressure

vfs_cache_pressure控制系統記憶體重新快取目錄與inode檔案的程度, 經常快取的成本相當高,所以這個值不要太高比較好

透過以下指令得到目前系統的vfs_cache_pressure(預設應為100):

cat /proc/sys/vm/vfs_cache_pressure

透過以下指令將vfs_cache_pressure降低:

sudo sysctl vm.vfs_cache_pressure=50

同樣要修改/etc/sysctl.conf確保日後重開機仍以此設定值運行, 於檔案底端加入以下設定後儲存:

vm.vfs_cache_pressure=50