很多时候我们需要配置
swap
主要的原因是物理内存太贵了, 服务器也是一样, 当内存不够用时, 系统会卡死, 因此我们宁愿牺牲一点性能也要让系统正常运行。 当然, 在系统物理内存足够的条件下, 建议关闭swap
, 内存运行速度远大于硬盘, 而swap
实际上在硬盘上分配一些空间来充当内存的作用。
比如我在 /opt
文件夹创建一个 4G 名称叫 swapfile
的 swap 区。
下面 3 句随便选一句就行。
dd if=/dev/zero of=/opt/swapfile bs=1024 count=4194304
dd if=/dev/zero of=/opt/swapfile bs=1M count=4096
dd if=/dev/zero of=/opt/swapfile bs=1G count=4
mkswap -f /opt/swapfile
swapon /opt/swapfile
free -h
和 free -m
可以看到内存和 swap 使用情况。swapon -s
和 cat /proc/swaps
可以看到大小和位置。[root@nukixPC ~]# free -h
total used free shared buff/cache available
Mem: 1.7Gi 1.0Gi 261Mi 15Mi 515Mi 616Mi
Swap: 5.0Gi 183Mi 4.8Gi
[root@nukixPC ~]# swapon -s
Filename Type Size Used Priority
/dev/vda2 partition 1047548 187480 -2
/opt/swapfile file 4194300 0 -3
[root@nukixPC ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/vda2 partition 1047548 187480 -2
/opt/swap file 4194300 0 -3
添加到 /etc/fstab
vim /etc/fstab
在文本最后添加
/opt/swapfile swap swap defaults 0 0
swapoff /opt/swapfile
top
在 Linux 里面 swappiness
用来控制什么时候才使用 swap 区。
比如 swappiness=60
则 内存使用到 100-60=40%
的时候就会开始使用 swap 区。
swappiness=0
使用物理内存, 几乎不使用 swap 区。swappiness=100
使用物理内存的同时积极使用 swap 区。cat /proc/sys/vm/swappiness
sysctl vm.swappiness=60
打开文件 /etc/sysctl.conf
vim /etc/sysctl.conf
在文件末尾加上
vm.swappiness=60
立即生效(或者重启生效)
sysctl -p