由於看到 vultr 的 $2.5/month 方案就給他刷了下去,準備把 blog 轉過去,雖然記憶體只有 512MB 但是卻是 SSD 硬碟阿 !! 用來當 swap file 根本綽綽有餘
在這篇就記錄怎麼在 Ubuntu 16.04 實作 swap file
先查看目前剩餘的記憶體用量
$ free -h
total used free shared buff/cache available
Mem: 488M 52M 358M 14M 77M 392M
Swap: 0B 0B 0B
然後確認你的硬碟空間確實足夠
$ df -lh
開始建立你的 swap file,直接建一個 3G 的 swap file
$ sudo fallocate -l 3G /swapfile
只給 root 讀
$ sudo chmod 600 /swapfile
初始化為 swap
$ sudo mkswap /swapfile
掛載起來試試
$ sudo swapon /swapfile
確認 swapfile 有啟動
$ sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 3G 0B -1
確認掛載成功
$ free -h
total used free shared buff/cache available
Mem: 488M 53M 353M 14M 80M 391M
Swap: 3.0G 0B 3.0G
寫到 fstab 開機自動掛載 swapfile
$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
swap file 的效能調校
vm.swappiness 這個是控制 swap 和 ram 交換的頻率,當數值趨近於零時 kernel 不會將資料寫入磁碟,反之接近 100 會將每筆資料寫入磁碟,Ubuntu 16.04 預設是 10,但這邊可能頻繁需要使用 swap file,所以將他設為 60
$ sudo sysctl vm.swappiness=60 $ echo 'vm.swappiness=60' | sudo tee -a /etc/sysctl.conf
vfs_cache_pressure 是控制系統記憶體重新快取目錄與 inode 檔案的程度, 經常快取的成本相當高,預設是 100
$ sudo sysctl vm.vfs_cache_pressure=50 $ echo 'sysctl vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
重開機測試 OK。