当操作系统的内存不足以放置正在运行的应用程序时,操作系统将内存中的某些内容移出到交换文件或虚拟内存文件中的计算机硬盘中。增加更多的内存到电脑有助于缓解内存瓶颈不足的情形。这个特性在Windows表现为虚拟内存,在Linux中则表现为swap分区和swap文件。本文描述的是使用磁盘文件用作交换文件,不涉及swap分区。供大家参考。
一、查看当前是否使用swap分区或swap文件
# more /etc/redhat-release ##当前环境
CentOS Linux release 7.4.1708 (Core)
# cat /proc/meminfo|grep -i swap ##查看是否启用swap
SwapCached: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
# free -m ## free命令也可以观察swap 使用情况
total used free shared buff/cache available
Mem: 3790 426 2805 1 558 3125
Swap: 0 0 0
# swapon -s ##查看swap是否开启
# df -h|grep -v tmpfs ##查看系统可用磁盘空间,用于确定将swap文件放在哪块磁盘或路径
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 2.2G 36G 6% /
二、创建swap文件及启用swap
# fallocate -l 4G /mnt/swapfile ##快速生成swap文件
# ls -hltr /mnt/swapfile
-rw-r--r-- 1 root root 4.0G Nov 22 16:19 /mnt/swapfile
可选的方案,这个方式相对较慢
# dd if=/dev/zero of=/mnt/swapfile2 bs=4096k count=1000
# chmod 600 /mnt/swapfile ## 权限设置
# mkswap /mnt/swapfile ##使用mkswap将文件设置为Linux交换区
Setting up swapspace version 1, size = 4194300 KiB #Author : Leshami
no label, UUID=fe4a83d2-3e3a-459d-b4d9-3750e51930fb #Blog : http://blog.csdn.net/leshami
# swapon /mnt/swapfile ##启用Linux交换区
# swapon -s
Filename Type Size Used Priority
/mnt/swapfile file 4194300 0 -1
配置OS启动时自动加载Linux交换区
# echo "/mnt/swapfile swap swap defaults 0 0">> /etc/fstab
三、swap使用频率设置
请注意,交换空间频繁使用的默认值是60(最大值是100)。
数字越高,内核使用的交换空间越频繁。当该值设置为0时,交换文件将只在操作系统已充分利用内存的情况下使用。
# vim /etc/sysctl.conf
vm.swappiness=10
# sysctl -p
# cat /proc/meminfo|grep -i swap
SwapCached: 0 kB
SwapTotal: 4194300 kB
SwapFree: 4194300 kB