摘要
正在生成中……
扩大swap分区
# 将现有swap移动到主内存,可能需要几分钟
sudo swapoff -a
# 创建新的swap文件,bs×count=最后生成的swap大小,这里设置2G
sudo dd if=/dev/zero of=/swapfile bs=512M count=4
# 设置权限
sudo chmod 0600 /swapfile
# 设置swap
sudo mkswap /swapfile
# 打开swap
sudo swapon /swapfile
# 检查设置是否有效
grep Swap /proc/meminfo # 或者htop看一下
# 设置永久有效
sudo gedit /etc/fstab
# 在末尾行加上
# /swapfile swap swap sw 0 0
温馨提示, 在执行这条命令时:
sudo dd if=/dev/zero of=/swapfile bs=512M count=4
如果你的系统物理内存少于512M,会遇到以下报错:
dd: memory exhausted by input buffer of size ....
而大多数人都是因为物理内存太少才会选择去给swap扩容,所以可以设置bs需要设定比物理内存略低的数值,然后更改count,使其达到目标容量。如 256M X 8
sudo dd if=/dev/zero of=/swapfile bs=256M count=8
控制使用swap的策略
Linux系统有个值控制物理内存使用率到多少时开始使用swap。
默认值swappiness=60,表示内存使用率超过100-60=40%时开始使用交换分区。
swappiness=0,表示最大限度使用物理内存,然后才是swap空间;
swappiness=100,表示积极使用swap分区,并把内存上的数据及时搬运到swap空间。
调整方式如下:
#查看参数值
cat /proc/sys/vm/swappiness
#临时调整
sysctl vm.swappiness = 10
#永久调整
sudo vim /etc/sysctl.conf
# 在末尾加上
# vm.swappiness=10
#重启
参考资料:
- https://zhuanlan.zhihu.com/p/480903179