Linux swap优化可从以下方面入手:
-
评估是否需要swap
- 大内存(如≥64GB)且运行内存密集型应用时,可考虑禁用swap。
- 内存较小(如≤4GB)或系统易内存不足时,保留swap并合理配置。
-
调整swap大小
- 传统建议:swap大小为RAM的1-2倍,大内存系统可降低至4-8GB。
- 操作:通过
dd
创建swap文件(如sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
),或调整分区大小。
-
优化swappiness参数
- 控制内核使用swap的倾向,范围0-100,值越低越依赖物理内存。
- 临时设置:
sudo sysctl vm.swappiness=10
;永久设置:编辑/etc/sysctl.conf
添加vm.swappiness=10
。
- 推荐:桌面系统设10-20,服务器根据负载调整(如数据库服务器可设1-10)。
-
选择高效swap类型
- 优先使用zswap(内存中压缩缓存swap,减少磁盘IO)或zram(内存中压缩块设备),提升性能。
- 传统场景仍可使用swap分区或文件,优先选文件(灵活调整大小)。
-
监控与动态调整
- 使用
free -h
、vmstat
、top
等工具监控swap使用情况。
- 若swap使用率持续过高,需排查内存泄漏进程或进一步增加内存/swap。
-
特殊场景优化
- 容器/Docker环境:建议禁用swap(避免内存调度冲突)。
- SSD设备:降低swappiness,减少频繁IO对SSD寿命的影响。
注意:修改配置后需重启生效,生产环境建议先测试验证。