配置swap之前,通过 free 和 df 查看 swap 和 磁盘空间情况,目的是通过配置swap后比较变化。
1、新建一个专门的文件用于swap分区
mkdir /developer/
cd /developer/
dd if=/dev/zero of=swap_file bs=1M count=2048
注:此文件的大小是count的大小乘以bs大小,上面命令的大小是2GB
2、通过mkswap命令将上面新建出的文件做成swap分区并激活
mkswap /developer/swap_file
3、设置开机自动启动
vim /etc/fstab
/developer/swap_file swap swap defaults 0 0
4、启用此交换分区的交换功能
swapon /developer/swap_file
注意:
1、千万不要开启大于实际内存几倍的swap分区。
2、SWAP分区内的数据内存频繁进行交换会导致CPU过高。mysql数据库在同一时刻点大量SQL扫描同一张表,虽然有索引,但还是触发大量数据加载到内存,并且期间还有vacuum操作,导致系统缓存不足,系统频繁进行数据交换。
3、SWAP开启后导致部分CPU性能损失, 单核服务器不建议开启, 因为会导致kswapd0进程的使用。
kswapd0进程的作用:它是虚拟内存管理中,负责换页的,操作系统每过一定时间就会唤醒kswapd ,看看内存是否紧张,如果不紧张,则睡眠,在 kswapd 中,有2 个阀值,pages_hige 和 pages_low,当空闲内存页的数量低于 pages_low 的时候,kswapd进程就会扫描内存并且每次释放出32 个free pages,直到 free page 的数量到达pages_high。通过阻止kswapd0进程过渡活跃地消耗CPU的方法是设置大页内存。