选择合适的Swap大小
Swap大小需结合物理内存和系统需求调整。一般建议为物理内存的1-2倍,但需避免过度依赖:若物理内存充足(如16GB及以上且日常使用无需大量虚拟内存),可适当减小Swap大小(如4GB);若内存较小(如4GB及以下),可保持1-2倍以应对内存压力。需确保硬盘有足够空间,避免因Swap过大导致磁盘空间不足。
优先使用交换文件而非分区(现代Ubuntu推荐)
交换文件(Swap File)灵活性更高,无需修改分区表,创建和管理更便捷。推荐使用fallocate命令快速创建(如sudo fallocate -l 4G /swapfile),若fallocate不可用,可用dd命令替代(sudo dd if=/dev/zero of=/swapfile bs=1M count=4096)。创建后需设置严格权限(sudo chmod 600 /swapfile),防止未授权访问。
优化swappiness内核参数
vm.swappiness控制内核将内存数据移至Swap的频率,默认值60(内存使用40%时开始Swap)。降低该值可减少Swap使用,提升性能:
10或更低(sudo sysctl vm.swappiness=10);/etc/sysctl.conf文件(echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf)以实现永久生效。调整Swap优先级(多Swap场景)
若系统有多个Swap空间(如同时使用交换文件和交换分区),可通过优先级(Priority)控制数据写入顺序。优先级数值越小,优先级越高(如-p 1比-p 10优先级高)。调整方法:
sudo swapoff -a);sudo swapon -p 1 /dev/sdXN或sudo swapon -p 1 /swapfile)。定期监控Swap使用情况
通过以下命令定期检查Swap状态,判断是否需要调整:
free -h:查看内存和Swap总用量及剩余空间;swapon --show:查看当前启用的Swap设备及大小;vmstat 1 5:监控Swap in/out速率(若si/so列频繁变化,说明Swap使用频繁);sar -W 1 5:查看Swap换入换出详情。考虑硬盘类型对Swap的影响
zram(内存中的压缩块设备,无需磁盘IO)或zswap(内存中的压缩缓存,减少磁盘访问)技术优化性能。确保Swap开机自动启用
无论是交换文件还是分区,都需添加到/etc/fstab文件以实现开机自动加载。例如:
/swapfile none swap sw 0 0;/dev/sdXY none swap sw 0 0(/dev/sdXY为分区路径,如/dev/sda2)。sudo cp /etc/fstab /etc/fstab.bak)。