1. 调整Swappiness内核参数
Swappiness是控制内核使用Swap空间的关键参数,取值范围为0-100(默认通常为60)。值越低,系统越倾向于保留数据在物理内存中,减少Swap操作;值越高,系统越容易将内存数据换出到Swap。建议根据系统内存情况调整:
sudo sysctl vm.swappiness=10;/etc/sysctl.conf文件,添加vm.swappiness=10,然后运行sudo sysctl -p使配置生效。2. 选择合适的Swap存储介质
Swap的存储介质直接影响I/O性能:
3. 优化Swap文件大小
Swap大小需根据物理内存容量合理设置,避免过大或过小:
free -h或swapon --show查看),可增大Swap文件大小(如从4GB增至8GB);若很少使用Swap,可减小Swap大小以释放磁盘空间。4. 使用Swap文件替代Swap分区(推荐)
相较于传统Swap分区,Swap文件更灵活,便于动态调整大小,且创建和管理更简单:
sudo fallocate -l 4G /swapfile # 使用fallocate创建(推荐,速度快)
sudo chmod 600 /swapfile # 设置权限(仅root可访问)
sudo mkswap /swapfile # 格式化为Swap文件系统
sudo swapon /swapfile # 启用Swap文件
/etc/fstab文件,添加/swapfile none swap sw 0 0,保存后重启系统即可自动启用。5. 使用zram压缩内存作为Swap
zram是Linux内核提供的压缩内存驱动,可将部分内存压缩后作为Swap使用,既节省磁盘空间,又能提升Swap性能(避免磁盘I/O瓶颈):
sudo apt update && sudo apt install zram-config # Ubuntu 22.04及以上版本可直接安装
sudo systemctl enable --now zramswap.service # 启用zram服务
swapon --show,若看到/dev/zram0(或类似设备),则表示zram Swap已启用。6. 监控Swap使用情况
定期监控Swap使用状态,及时发现性能瓶颈:
free -h(显示内存和Swap的总大小、已用空间、剩余空间);swapon --show(显示当前启用的Swap设备/文件及其大小、优先级);vmstat 1 5(每秒刷新一次,关注si(Swap In,从Swap读取到内存的数据量)和so(Swap Out,从内存写入Swap的数据量)列,数值过高表示Swap使用频繁)。7. 避免过多Swap分区
若系统有多个Swap分区,内核会以轮询方式分配Swap操作,可能导致磁盘I/O负载不均衡。建议: