--- title: 内存优化完全指南 icon: simple-icons:linuxmint date: 2026-03-20 category: - Linux tag: - Linux Mint - 内存优化 - 性能调优 - zram - earlyoom --- # Linux Mint 内存优化完全指南 这篇记录一次真实的 Linux Mint 内存优化过程:从内存告急、Swap 打满,到切换纯 zram、调整内核策略、加上 OOM 保护,最终把系统稳定性和响应速度拉回到优秀状态。 ## 一 问题背景 ### 1.1 初始状态 排查时的核心数据: - **物理内存**: 29GB - **已使用**: 25GB (86%) - **可用内存**: 3.5GB - **Swap**: 15GB,几乎耗尽 ### 1.2 主要问题 | 问题 | 严重程度 | 影响 | |------|---------|------| | Swap 完全耗尽 | 🔴 严重 | 系统响应明显变慢 | | 可用内存过低 | 🔴 严重 | 高负载场景容易卡顿 | | 长时间残留会话 | 🟡 中等 | 持续吃内存、吃 CPU | | 文件 Swap | 🟡 中等 | 磁盘 IO 成为瓶颈 | ### 1.3 内存占用分析 常用定位命令: ```bash # 查看内存概览 free -h # 查看内存占用 TOP 10 进程 ps aux --sort=-%mem | head -11 ``` 观察到的主要内存占用: - IntelliJ IDEA: 约 4.9GB - VMware 虚拟机: 约 4GB - 多个 IDE/AI 工具常驻进程 - 多个 OpenCode 会话并行 --- ## 二 优化流程 ### 2.1 清理僵尸进程 #### 2.1.1 识别僵尸会话 判断标准: - 进程对应终端显示 `(deleted)` - 运行时间很长,但无人交互 - `w` / `who` 中找不到对应活跃终端 ```bash # 看会话是否还挂着真实终端 for pid in $(pgrep -f "\.opencode$"); do echo "=== PID: $pid ===" ps -p "$pid" -o pid,etime,%cpu,%mem,cmd --no-headers lsof -p "$pid" 2>/dev/null | grep -E "pts/|tty" | head -3 echo done # 优雅终止僵尸会话 kill -15 ``` 清理后,可用内存和 Swap 都会明显回升。 --- ### 2.2 从文件 Swap 切换到纯 zram #### 2.2.1 为什么选 zram 性能差异(体感非常明显): | 类型 | 速度 | 延迟 | 寿命影响 | |------|------|------|---------| | zram | 内存级 | <1ms | 无磁盘写入 | | 文件 Swap (SSD) | 磁盘级 | 10-100ms | 增加 SSD 写入 | | 文件 Swap (HDD) | 磁盘级 | 100-1000ms | 响应更慢 | zram 的关键收益: - 性能更高:比文件 Swap 快很多 - 压缩率高:常见 3:1 到 4:1 - 磁盘更友好:减少持续写入 #### 2.2.2 检查当前 zram ```bash zramctl swapon --show ``` 本文案例中,最终将 zram 配到物理内存的 80%,并保留 `zstd` 算法。 --- ### 2.3 调整内存策略参数 #### 2.3.1 关键参数 ```bash # 当前策略 sysctl vm.swappiness sysctl vm.vfs_cache_pressure ``` 本文做的策略调整: - `vm.swappiness=40`(默认 10 偏保守,zram 场景下可更积极) - 保持 `vfs_cache_pressure=100` #### 2.3.2 增加 OOM 保护 安装并启用 earlyoom,避免内存耗尽导致系统“假死”: ```bash sudo apt update sudo apt install -y earlyoom sudo systemctl enable --now earlyoom ``` --- ## 三 三个脚本(可复用) 为了复盘方便,把这次整理后的脚本放到博客目录: - `src/programming/linux/Linux_Mint/scripts/setup_zram_only.sh` - `src/programming/linux/Linux_Mint/scripts/optimize_memory_policy.sh` - `src/programming/linux/Linux_Mint/scripts/expand_swap.sh` ### 3.1 setup_zram_only.sh 用途:禁用文件 Swap,启用纯 zram(80%)。 ```bash ./src/programming/linux/Linux_Mint/scripts/setup_zram_only.sh ``` ### 3.2 optimize_memory_policy.sh 用途:把 swappiness 调到 40,并安装 earlyoom。 ```bash ./src/programming/linux/Linux_Mint/scripts/optimize_memory_policy.sh ``` ### 3.3 expand_swap.sh 用途:保留文件 Swap 的场景下扩容到 24G(备用方案)。 ```bash ./src/programming/linux/Linux_Mint/scripts/expand_swap.sh ``` --- ## 四 执行顺序建议 推荐顺序: 1. 先做僵尸进程清理(立刻见效) 2. 再切换纯 zram(性能提升) 3. 最后调策略和 OOM 保护(长期稳定) --- ## 五 验证清单 ### 5.1 配置验证 ```bash free -h swapon --show zramctl sysctl vm.swappiness systemctl is-active earlyoom ``` ### 5.2 目标状态 - 可用内存明显提升 - Swap 不再长时间打满 - zram 算法为 `zstd` - `vm.swappiness=40` - `earlyoom` 处于 `active` --- ## 六 本次优化结果 本文案例最终状态: - 内存从高压恢复到健康余量 - Swap 从几乎打满恢复到可控状态 - 系统在多工具并行场景下更稳定 - 交互延迟和卡顿体感明显改善 如果你也是 Linux Mint 开发机、工具常驻多、会话长时间运行,这一套流程可以直接复用。