Skip to content

系统内存与 Swap 优化记录

🕒 Published at:

系统内存与 Swap 优化记录 ​

日期:2026年7月29日

背景 ​

系统配置:

  • CPU:多核 x86_64
  • 内存:16GB(系统识别约 15GB)
  • 存储:NVMe SSD 453GB
  • 桌面:KDE Plasma(Wayland)
  • 用途:日常开发(opencode、编译、浏览器)

问题: 传统磁盘 Swap 会频繁写入 SSD,影响寿命。同时系统存在大量开发工具缓存(npm 6.6G、rustup 2.4G 等),需要评估是否清理。

分析过程 ​

1. 磁盘使用情况 ​

/dev/nvme0n1p2  453G   38G  392G    9%

磁盘使用率仅 9%,空间充裕。

2. Swap 使用分析 ​

Filename                Type        Size        Used        Priority
/dev/nvme0n1p3          partition   16081916    996968      -2

Swap 分区 15GB,已用约 975MB。关键发现: 这不是内存不足导致的,而是 Linux 内核主动将冷数据换出,腾出内存给文件缓存。

3. 内存使用分析 ​

               total        used        free      shared  buff/cache   available
内存:          14Gi       7.6Gi       741Mi       1.1Gi       8.2Gi       7.4Gi
  • 程序实际占用:约 7.6G
  • 文件缓存:约 8.2G(加速文件操作)
  • 可用内存:约 7.4G

内存大户:

  • opencode × 5:共约 4.5G(每个约 900MB)
  • KDE 桌面:约 1.5G
  • 百度网盘:约 250MB

4. 开发工具缓存评估 ​

缓存大小保留好处
~/.npm6.6Gnpm install 秒装,离线也能装
~/.cache/go-build425MGo 编译快,跳过已编译的包
~/.cargo339Mcargo build 不用重新下载依赖
~/.rustup2.4GRust 工具链本体

结论: 磁盘空间充裕(使用率 9%),这些缓存本质是"用空间换时间",保留有益无害。

技术方案对比 ​

Swap 方案对比 ​

方案原理优势劣势适用场景
传统 Swap冷数据写入磁盘简单可靠,容量大磁盘 I/O 慢,磨损 SSD通用服务器
zram内存里压缩存储极速(微秒级),零磁盘写入容量硬上限,满则 OOM嵌入式/无磁盘/安全敏感
zswap压缩缓存层 + 磁盘 Swap自动分层,优雅降级需要磁盘 Swap 分区通用桌面/服务器

压缩算法对比 ​

算法压缩比CPU 开销推荐
lz42:1 ~ 3:1最低低配设备
zstd3:1 ~ 8:1略高主流推荐
lzo-rle2:1 ~ 3:1低折中选择

内核参数对比 ​

参数默认值zram 优化值说明
vm.swappiness60100~150更积极使用 zram
vm.page-cluster30zram 不需要连带读取
vm.vfs_cache_pressure10050保留更多文件缓存

最终配置 ​

1. 关闭磁盘 Swap ​

bash
# 关闭 swap
sudo swapoff /dev/nvme0n1p3

# 永久禁用(/etc/fstab 中注释掉)
# UUID=a8a96227-3dab-4118-8b25-36ee13a20aa7 none swap sw 0 0

保留分区: 16G swap 分区留着备用,极端情况可临时 swapon 救急。

2. 启用 zram ​

bash
# 安装
sudo apt install zram-tools

# 配置 /etc/default/zramswap
ALGO=zstd
PERCENT=50
PRIORITY=100

当前状态:

NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd        7.5G   0B   0B    0B      1     [SWAP]

3. 内核参数优化 ​

创建 /etc/sysctl.d/99-zram-optimize.conf:

ini
vm.swappiness = 100
vm.page-cluster = 0
vm.vfs_cache_pressure = 50

应用:

bash
sudo sysctl -p /etc/sysctl.d/99-zram-optimize.conf

优化效果 ​

内存布局 ​

14G 物理内存 + 7.5G zstd 压缩 ≈ 有效内存 20~30G

对比 ​

指标优化前优化后
Swap 类型磁盘 Swap(15G)zram(7.5G,zstd)
Swap 延迟毫秒级(SSD)微秒级(内存)
SSD 磨损有零
压缩比无3:1 ~ 8:1
vm.swappiness60100
vm.page-cluster30
vm.vfs_cache_pressure10050

启动服务优化 ​

禁用不必要的开机自启动服务,加快启动速度约 5 秒:

bash
sudo systemctl disable NetworkManager-wait-online.service
sudo systemctl disable apt-daily.service apt-daily.timer
sudo systemctl disable apt-daily-upgrade.service apt-daily-upgrade.timer
sudo systemctl disable docker.service docker.socket

其他优化 ​

桌面快捷方式 ​

将脚本统一到 ~/sh/ 目录,使用 toggle 模式(点击切换开/关,弹通知显示状态):

脚本功能
easytier-toggle.shVPN 开关
sleep-toggle.sh休眠开关
nfs-toggle.shNFS 挂载/卸载
proxy-shell-toggle.shShell 代理开关
proxy-kde-toggle.shKDE 代理开关

图标优化 ​

替换 emblem-symbolic-link.svg 为透明图片,去除桌面快捷方式右下角小箭头。

总结 ​

  1. zram 是现代 Linux 的最佳 Swap 方案:零磁盘写入,延迟微秒级,压缩比高
  2. zstd 算法是最佳选择:压缩率比 lz4 高一倍,CPU 开销对现代处理器微不足道
  3. 内核参数需要配合调整:swappiness、page-cluster、vfs_cache_pressure
  4. 开发缓存不需要清理:磁盘空间充裕,缓存提升开发效率
  5. 禁用不必要的启动服务:加快启动速度

参考资料 ​