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.
HN 评论区
22- correct_horse
虽然没用 NixOS,但我想说说我偏好的 swappiness 值:0。不知为何,当我系统运行了一个月(每天休眠一次),在几小时内第一次操作桌面环境时,会出现大约 100 毫秒的微卡顿,仿佛正在从磁盘交换页面。重新开关 swap(意味着不再有任何页面被交换到磁盘)能立即解决此问题。打开新标签页、按下 Super 键,甚至在视频游戏中执行某些操作都会引发卡顿。我知道网上都说 0 不是个好值,但即使 swappiness 设为 5,我的电脑用起来也明显变差了。我的内存足够应对任何我想在这台电脑上做的事,所以 swap 对我来说只是为了休眠。
- linsomniac
我也最近在 NixOS 上启用了 zswap,运行一切正常。我有 32GB 内存和 64GB swap,其实并不需要它,但它也没带来任何负面影响。
我原本担心今年六月切换到 NixOS 会遇到一些问题,但体验简直棒极了。甚至像为工作中的 Ubuntu 26.04 机器构建 deb 包这类事也完全不成问题。
在正式切换之前,我已经摸索 NixOS 一两年了,对 nixlang 和各种概念(SOPS、age、flakes)有一定了解。但真正让这次切换变得顺畅的是使用 Claude Code 来开发 NixOS 配置。用这种方式做什么都很容易,而且任何问题都很容易回退。
- seabrookmx
在 Ubuntu 26.04 上使用 zswap+zstd 我也很顺利。我有一台 Framework 13(AMD 版),配备 16GB 内存,配置了一个 16GB 的 swap 文件(ext4 根分区)。
我原本计划将这台机器的内存升级到 32GB,但我觉得目前看来没必要。考虑到当前的内存价格,这显然很棒!