1. 调整swappiness参数,降低交换倾向
swappiness参数(范围0-100)控制内核使用交换空间的倾向,默认值通常为60。较低的数值(如10-20)会让系统更倾向于保留数据在物理内存中,仅在内存严重不足时才使用交换空间,从而减少交换带来的性能损耗。
sudo sysctl vm.swappiness=10立即生效;/etc/sysctl.conf文件,添加或修改vm.swappiness=10,然后运行sudo sysctl -p使配置生效。2. 使用SSD作为交换设备,提升IO速度
SSD的随机读写速度远快于传统机械硬盘(HDD),将交换空间放在SSD上能显著提高交换效率。若系统已有SSD,建议将交换分区或文件创建在SSD上(如/dev/sda1或/mnt/ssd/swapfile)。
3. 优化交换空间大小,匹配内存需求
交换空间大小需根据物理内存容量调整,避免过大或过小:
free -h或swapon --show查看),可适当增加交换空间(如新增交换文件)。4. 使用多个交换文件,提升并发性能
创建多个较小的交换文件(如2个2GB的交换文件)而非单个大交换文件,能让Linux内核更高效地并行处理交换请求,提升整体交换效率。
sudo fallocate -l 2G /swapfile1 && sudo chmod 600 /swapfile1 && sudo mkswap /swapfile1 && sudo swapon /swapfile1
sudo fallocate -l 2G /swapfile2 && sudo chmod 600 /swapfile2 && sudo mkswap /swapfile2 && sudo swapon /swapfile2
/etc/fstab实现开机自动挂载:/swapfile1 none swap sw 0 0/swapfile2 none swap sw 0 05. 调整内核相关参数,优化内存管理
除swappiness外,还可调整以下内核参数进一步优化交换性能:
vm.dirty_background_ratio:控制后台写入磁盘的脏页(修改后未写入磁盘的内存页)比例,默认值为10。降低该值(如5)可让系统更早将脏页写入磁盘,减少交换空间的占用;vm.dirty_ratio:控制强制写入磁盘的脏页比例,默认值为20。降低该值(如10)可避免大量脏页堆积导致内存压力过大。/etc/sysctl.conf文件,添加或修改对应参数,然后运行sudo sysctl -p生效。6. 监控交换使用情况,及时调整策略
定期监控交换空间的使用情况,能及时发现内存瓶颈并调整策略:
free -h命令查看内存和交换空间的使用量(如total、used、free);swapon --show命令查看交换分区的使用率(如Size、Used);top或htop命令监控进程的内存占用,找出占用内存过多的进程并进行优化(如关闭不必要的服务或优化程序代码)。7. 启用交换分区优先级,优化使用顺序
若系统有多个交换分区或文件,可通过设置优先级(pri参数)让系统优先使用速度更快的交换空间(如SSD上的交换文件)。
/etc/fstab文件,在交换分区或文件条目中添加pri=value(值越大优先级越高),例如:/dev/sda1 none swap sw,pri=100 0 0/swapfile none swap sw,pri=50 0 0/dev/sda1(假设为SSD)上的交换分区。