Files
MyBlog/src/programming/linux/Linux_Mint/内存优化完全指南.md

4.6 KiB
Executable File
Raw Blame History

title, icon, date, category, tag
title icon date category tag
内存优化完全指南 simple-icons:linuxmint 2026-03-20
Linux
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 内存占用分析

常用定位命令:

# 查看内存概览
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 中找不到对应活跃终端
# 看会话是否还挂着真实终端
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 <PID1> <PID2>

清理后,可用内存和 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

zramctl
swapon --show

本文案例中,最终将 zram 配到物理内存的 80%,并保留 zstd 算法。


2.3 调整内存策略参数

2.3.1 关键参数

# 当前策略
sysctl vm.swappiness
sysctl vm.vfs_cache_pressure

本文做的策略调整:

  • vm.swappiness=40(默认 10 偏保守zram 场景下可更积极)
  • 保持 vfs_cache_pressure=100

2.3.2 增加 OOM 保护

安装并启用 earlyoom避免内存耗尽导致系统“假死”

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启用纯 zram80%)。

./src/programming/linux/Linux_Mint/scripts/setup_zram_only.sh

3.2 optimize_memory_policy.sh

用途:把 swappiness 调到 40并安装 earlyoom。

./src/programming/linux/Linux_Mint/scripts/optimize_memory_policy.sh

3.3 expand_swap.sh

用途:保留文件 Swap 的场景下扩容到 24G备用方案

./src/programming/linux/Linux_Mint/scripts/expand_swap.sh

四 执行顺序建议

推荐顺序:

  1. 先做僵尸进程清理(立刻见效)
  2. 再切换纯 zram性能提升
  3. 最后调策略和 OOM 保护(长期稳定)

五 验证清单

5.1 配置验证

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 开发机、工具常驻多、会话长时间运行,这一套流程可以直接复用。