Ubuntu 中 Swapper 节能模式的实现思路
概念澄清
- Swapper并非一个可开关的“功能”,而是内核在**swap(交换分区/文件)**上执行换入/换出时的内核线程名称。所谓“节能”,通常是通过降低系统对 swap 的使用积极性(调低内核参数 vm.swappiness)、优化电源策略、减少磁盘 I/O 等手段,间接让系统更省电、更安静。
快速做法 降低 Swappiness 减少换页
- 查看当前值(默认多为60):
cat /proc/sys/vm/swappiness
- 临时设为更保守(桌面建议10-30,服务器1-10):
sudo sysctl vm.swappiness=20
- 永久生效:编辑
/etc/sysctl.conf,加入或修改 vm.swappiness=20,执行 sudo sysctl -p
- 说明:降低该值会让内核更倾向使用物理内存,从而减少 swap I/O;但不建议直接禁用 swap,以避免内存紧张时失去“缓冲”,导致进程被 OOM 终止或系统不稳定。
配合电源模式进一步省电
- 使用
powerprofilesctl 切换到更省电的模式(桌面环境可用):
- 查看当前模式:
powerprofilesctl status
- 设置为节能:
powerprofilesctl set power-saver
- 设置为均衡:
powerprofilesctl set balanced
- 设置为性能:
powerprofilesctl set performance
- 节能模式通常会降低CPU 主频/功耗与后台活动,配合较低的 swappiness 可进一步减少不必要的 swap 与磁盘 I/O,达到更好的“节能”效果。
监控与验证
- 观察内存与 swap 使用:
free -h、sudo swapon --show、cat /proc/swaps
- 观察换页与系统整体虚拟内存行为:
vmstat 1 10
- 观察内核换出/换入统计:
cat /proc/vmstat | egrep "pgpgin|pgpgout|pswpout|pswpin"
- 解读要点:降低 swappiness 后,
pgpgout/pswpout(换出)应明显减少;若仍频繁换页,说明物理内存可能偏紧,应结合内存占用与业务负载进一步排查或扩容。
进阶 仅在空闲时触发换页以减少能耗
- Linux 会在内存未用满时就提前换出不活跃页,以便在空闲时进行 I/O,提升整体响应并降低忙时卡顿。若希望更“保守”地换页以减少活动期能耗,可保持较低的 swappiness,让换页主要发生在空闲时段,由电源管理策略配合降频,达到节能与稳定的平衡。