vm.swappiness是控制匿名页换出积极性的权重参数,取值0–100,默认60;可通过cat /proc/sys/vm/swappiness查看,用sysctl或写入proc临时修改,通过/etc/sysctl.d/或sysctl.conf永久生效。

Linux 中调整 swappiness 就是告诉内核“多早、多愿意”把进程的匿名内存(比如堆、栈)换出到 swap。它不是开关,而是调节换出积极性的权重参数,取值范围 0–100,默认 60。
怎么看当前 swappiness 值
直接读取内核接口即可:
- cat /proc/sys/vm/swappiness
- 或用 sysctl 查看:sysctl vm.swappiness
输出类似 vm.swappiness = 60,说明当前是默认值。
临时修改(重启失效)
适合测试或紧急调优,立即生效:
- 用 sysctl 命令:sudo sysctl vm.swappiness=1
- 或写入 proc 接口:echo 1 | sudo tee /proc/sys/vm/swappiness
改完再查一次,确认已更新。该设置在下次重启后会恢复为默认值。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
永久生效(重启不丢)
需要把配置写进系统级参数文件:
- 编辑 /etc/sysctl.conf:sudo nano /etc/sysctl.conf
- 添加或修改这一行:vm.swappiness=1
- 保存后运行:sudo sysctl --system(推荐)或 sudo sysctl -p
注意:使用 sysctl --system 会加载所有 sysctl 配置片段(包括 /etc/sysctl.d/*.conf),更符合现代发行版规范。
按场景选合适的值
没有万能值,关键看负载类型和硬件条件:
- 数据库(MySQL/PostgreSQL)、Redis、Java 内存密集型服务:设为 1 或 0。避免匿名页频繁换入换出拖慢响应
- 桌面环境或开发机(Chrome + VS Code + Docker Desktop):默认 60 可用;若感觉后台进程被杀,可试 30~40
- Kubernetes/Docker 宿主机:建议 ≤ 10,防止内核 swap 与 cgroup 的 memory.swap.max 策略冲突
- ≤2GB 内存的小设备:可设 80~100,但务必配够 swap 空间(≥RAM×1.5),否则易 OOM
值为 0 不代表完全禁用 swap —— 内存真正耗尽时,内核仍可能 fallback 到 swap(尤其 5.8+ 内核),或触发 OOM killer。

















