温馨提示×

Ubuntu Swapper如何调整参数以适应不同需求

小樊
46
2025-10-18 01:58:56
栏目: 智能运维

Ubuntu Swapper参数调整指南(适配不同需求)

一、调整Swap空间大小(适配内存需求变化)

Swap空间是物理内存的扩展,其大小需根据物理内存容量和使用场景调整,避免过大(浪费磁盘空间)或过小(无法应对内存不足)。

  1. 查看当前Swap状态
    使用sudo swapon --show查看已启用的Swap分区/文件,或free -h查看Swap总大小及使用率。
  2. 创建/调整Swap文件(推荐)
    • 创建新Swap文件(如需扩大):
      sudo fallocate -l 4G /swapfile # 创建4GB Swap文件(若fallocate不可用,用`dd if=/dev/zero of=/swapfile bs=1M count=4096`) sudo chmod 600 /swapfile # 设置严格权限(仅root可读写) sudo mkswap /swapfile # 格式化为Swap空间 sudo swapon /swapfile # 启用Swap文件 
    • 调整Swap文件大小(如需缩小/扩大):
      先禁用Swap:sudo swapoff /swapfile
      修改文件大小(如扩大至8GB):sudo fallocate -l 8G /swapfile
      重新格式化并启用:sudo mkswap /swapfile && sudo swapon /swapfile
    • 删除Swap文件(如需移除):
      sudo swapoff /swapfile && sudo rm /swapfile,并从/etc/fstab中删除对应条目。
  3. 调整Swap分区大小(若使用分区)
    若Swap空间为分区(如/dev/sda3),需使用LVM(逻辑卷管理)或fdisk调整:
    • LVM方式(推荐,灵活):
      sudo swapoff /dev/vgubuntu/swap_1 # 关闭Swap分区 sudo lvextend -L +2G /dev/vgubuntu/swap_1 # 扩大2GB(根据需求调整数值) sudo mkswap /dev/vgubuntu/swap_1 # 重新格式化 sudo swapon /dev/vgubuntu/swap_1 # 启用 
    • 非LVM方式(需重新分区):
      使用fdisk /dev/sdX删除旧分区、创建新分区(类型为82,Linux swap),然后格式化并启用。
  4. 永久生效
    将Swap文件/分区添加到/etc/fstab,确保重启后自动启用:
    • Swap文件:添加/swapfile none swap sw 0 0
    • Swap分区:添加UUID=xxxx none swap sw 0 0UUID通过sudo blkid获取)。

二、调整Swappiness参数(控制Swap使用倾向)

Swappiness(默认值60)决定了内核将内存数据换出至Swap空间的倾向,数值越高,越积极使用Swap(可能导致性能下降);数值越低,越优先使用物理内存(适合内存充足的场景)。

  1. 查看当前Swappiness值
    cat /proc/sys/vm/swappiness # 临时查看(重启失效) 
  2. 临时调整Swappiness(立即生效,重启后恢复默认):
    sudo sysctl vm.swappiness=10 # 将值设为10(推荐范围:10-30,内存充足可设为1-10) 
  3. 永久调整Swappiness(重启后仍有效):
    编辑/etc/sysctl.conf文件,添加或修改以下行:
    vm.swappiness=10 
    保存后运行sudo sysctl -p使更改生效。

三、调整Swap优先级(多Swap场景优化)

若系统有多个Swap分区/文件,可通过优先级(pri参数)控制其使用顺序:数值越高,优先级越高(内核优先使用高优先级Swap)。

  1. 临时设置优先级
    禁用现有Swap,再启用并指定优先级(如设为10):
    sudo swapoff /dev/sdXY && sudo swapon -p 10 /dev/sdXY # 适用于分区 sudo swapoff /swapfile && sudo swapon -p 10 /swapfile # 适用于文件 
  2. 永久设置优先级
    /etc/fstab中对应行添加pri=value,例如:
    /dev/sdXY none swap sw,pri=10 0 0 # 分区 /swapfile none swap sw,pri=10 0 0 # 文件 
    保存后重启系统或运行sudo swapon -a使更改生效。

四、监控Swap使用情况(适配优化验证)

调整参数后,需定期监控Swap使用情况,确保配置符合需求:

  1. 查看Swap使用详情
    sudo swapon --show # 显示Swap分区/文件及使用量 free -h # 显示内存与Swap总用量及使用率 
  2. 实时监控Swap活动
    使用vmstat命令查看Swap换入换出频率(si=换入内存,so=换出内存):
    vmstat 1 5 # 每1秒刷新1次,共5次 
    si/so值持续较高,说明Swap使用频繁,可能需要扩大Swap空间或降低Swappiness。

注意事项

  • Swap空间并非越大越好:一般建议为物理内存的1.5-3倍(如8GB内存设为12-24GB),但内存充足(≥16GB)且不运行大型程序的用户,可设为2-4GB。
  • 优先使用SSD:将Swap放在SSD(尤其是NVMe SSD)上,可显著减少交换延迟,提升性能。
  • 避免过度调整Swappiness:若设为0,系统仅在内存耗尽时使用Swap,可能导致内存耗尽时系统崩溃;若设为100,会频繁使用Swap,降低性能。

0