NixOS 的 Swap、ZRAM 与休眠配置指南

Swap, ZRAM, Zswap and Hibernate on NixOS

我在使用 NixOS 时,发现 Swap、ZRAM 和 Zswap 的配置常被混淆。为了支持 KDE 的“挂起到内存再休眠”功能,我详细梳理了桌面和笔记本的最佳实践。文章对比了 Swap 分区与 Swap 文件的优劣,指出 Swap 文件在加密系统中可能增加休眠复杂度。我纠正了之前误用 zramSwap 的错误,最终采用 Chris Down 推荐的 Zswap 配合磁盘 Swap 方案,并将 vm.swappiness 设为 100 以优化 SSD 性能。通过调整压缩算法从 lz4 到 zstd,我实现了更高效的内存溢出管理,最终将复杂的配置精简为寥寥数行。

Just because it's a couple of lines does not make it any less important.
  1. correct_horse

    虽然没用 NixOS,但我想说说我偏好的 swappiness 值:0。不知为何,当我系统运行了一个月(每天休眠一次),在几小时内第一次操作桌面环境时,会出现大约 100 毫秒的微卡顿,仿佛正在从磁盘交换页面。重新开关 swap(意味着不再有任何页面被交换到磁盘)能立即解决此问题。打开新标签页、按下 Super 键,甚至在视频游戏中执行某些操作都会引发卡顿。我知道网上都说 0 不是个好值,但即使 swappiness 设为 5,我的电脑用起来也明显变差了。我的内存足够应对任何我想在这台电脑上做的事,所以 swap 对我来说只是为了休眠。

  2. linsomniac

    我也最近在 NixOS 上启用了 zswap,运行一切正常。我有 32GB 内存和 64GB swap,其实并不需要它,但它也没带来任何负面影响。

    我原本担心今年六月切换到 NixOS 会遇到一些问题,但体验简直棒极了。甚至像为工作中的 Ubuntu 26.04 机器构建 deb 包这类事也完全不成问题。

    在正式切换之前,我已经摸索 NixOS 一两年了,对 nixlang 和各种概念(SOPS、age、flakes)有一定了解。但真正让这次切换变得顺畅的是使用 Claude Code 来开发 NixOS 配置。用这种方式做什么都很容易,而且任何问题都很容易回退。

  3. seabrookmx

    在 Ubuntu 26.04 上使用 zswap+zstd 我也很顺利。我有一台 Framework 13(AMD 版),配备 16GB 内存,配置了一个 16GB 的 swap 文件(ext4 根分区)。

    我原本计划将这台机器的内存升级到 32GB,但我觉得目前看来没必要。考虑到当前的内存价格,这显然很棒!

同日更多故事

2026-09-23