虚拟记忆体(SWAP)
确认记忆体使用状况
free -m
$ free -m
total used free shared buff/cache available
Mem: 990 164 197 38 628 584
Swap: 0 0 0
$ free -m
total used free shared buffers cached
Mem: 992 867 125 20 63 516
-/+ buffers/cache: 287 704
Swap: 1023 0 1023
设定 Swap File
设定 4G 的 SWAP 档案
sudo -s
cd /var
fallocate -l 4G swapfile.1
chmod 600 swapfile.1
设定此档案只能被 root 读写,以防安全性问题
启用 SWAP
mkswap /var/swapfile.1
swapon /var/swapfile.1
查询目前 SWAP 路径
$ swapon -s
$ swapon -s
Filename Type Size Used Priority
/var/swapfile.1 file 4194300 0 -1
让 Swap file 重开机后也能自动启动
请确认您的 swap 档案路径为 /var/swapfile.1
,如果有自定义其他 swap 档案名称,请将 swap 档案路径改为您的路径,否则会导致无法开机
echo "/var/swapfile.1 none swap sw 0 0" >> /etc/fstab
使用 htop 监控记忆体使用状况
sudo apt-get install htop
设定 swappiness 调整 swap 使用优先权
swappiness
数值介于 0~100,越接近 100 则系统越常使用 swap,越接近 0 则系统会越常使用 RAM,预设为 60,为了系统效能,可以尽量将此设定值调低
查询 swappiness
cat /proc/sys/vm/swappiness
设定 swappiness
sysctl vm.swappiness=10
设定重新开机时 swappiness 数值
echo "vm.swappiness = 10" >> /etc/sysctl.conf
变更 Swap 大小
关闭 Swap
swapoff -a
重新设定 Swap 档案大小
设定 8G 的 SWAP 档案
sudo -s
cd /var
fallocate -l 8G swapfile.2
chmod 600 swapfile.2
启用 SWAP
mkswap /var/swapfile.2
swapon /var/swapfile.2
参考资料
- 在 Ubuntu VPS 上设定虚拟记忆体 (Swap) 来解决RAM不够用的问题 « 峰哥的技术日誌
- memory - How do I find out if I have a swap partition on my hard drive? - Ask Ubuntu
- Change swap size in Ubuntu - Server Management Tool