1. 调整Swappiness参数
Swappiness参数(范围0-100)控制系统使用Swap的频率,值越低,系统越倾向于保留数据在物理内存中,减少Swap访问次数。默认值通常为60,可根据系统内存大小调整:
sudo sysctl vm.swappiness=10(将值设为10,适用于内存充足的系统);/etc/sysctl.conf文件,添加vm.swappiness=10,然后运行sudo sysctl -p使更改生效。2. 选择高性能存储设备
Swap的读写速度受存储设备性能影响极大。优先使用SSD(尤其是NVMe SSD)替代HDD,可显著提升Swap的IO吞吐量(SSD的随机读写速度比HDD快10倍以上)。若系统已有SSD,确保Swap分区或文件位于SSD上。
3. 优化Swap文件/分区大小
Swap大小需结合物理内存调整,避免过大或过小:
free -h、swapon --show命令监控Swap使用率(若长期超过50%,需扩容;若长期低于10%,可适当缩小);sudo fallocate -l 新大小 /swapfile→sudo chmod 600 /swapfile→sudo mkswap /swapfile→sudo swapon /swapfile,并更新/etc/fstab;若使用分区,需用fdisk/parted调整分区大小,再格式化启用。4. 使用Swapfile替代分区
Swapfile(交换文件)比分区更灵活,便于动态调整大小,且创建和管理更简单:
sudo fallocate -l 2G /swapfile(若fallocate不可用,用dd if=/dev/zero of=/swapfile bs=1G count=2);sudo chmod 600 /swapfile(防止未授权访问);sudo mkswap /swapfile→sudo swapon /swapfile,然后在/etc/fstab中添加/swapfile none swap sw 0 0,实现开机自动挂载。5. 启用ZRAM(压缩内存交换)
ZRAM通过在内存中创建压缩块设备来模拟Swap,减少对物理磁盘的依赖,提升Swap性能(尤其适合内存较小的系统):
sudo apt-get install zram-config→sudo systemctl enable zram-config→sudo systemctl start zram-config;6. 优化内核IO调度器
选择合适的IO调度器可提升Swap的IO效率,尤其对SSD设备:
cat /sys/block/sda/queue/scheduler(sda为Swap所在设备);echo noop | sudo tee /sys/block/sda/queue/scheduler(noop适用于SSD,deadline适用于传统磁盘);/etc/default/grub,在GRUB_CMDLINE_LINUX_DEFAULT中添加elevator=noop,然后运行sudo update-grub。7. 监控与减少Swap使用
定期监控Swap使用情况,及时发现异常并优化:
free -h(查看内存与Swap总量及使用率)、swapon --show(查看Swap设备详情)、vmstat 1(查看Swap in/out速率);sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches)。