NixOSでhibernateを使うならzramではなくzswapだ
Swap, ZRAM, Zswap and Hibernate on NixOS
NixOSでsuspend-then-hibernateを使うためのswap設定を解説。swapファイルとパーティションの違い、hibernate時のinitramfsの注意点に触れ、最終的にboot.zswap.enableとvm.swappiness=100の2行に落ち着くまでを振り返る。zramSwapを長年誤用していた経験も共有。
zramSwapは通常単にzramと呼ばれるもので、ディスクベースのswapを使う場合にはおそらく望ましくない。
HNでの議論
22- correct_horse
NixOSではないのですが、自分の好みのswappiness値について意見を述べたいと思います。0です。なぜか、1ヶ月の稼働時間(1日1回サスペンドする)があると、数時間ぶりにデスクトップ環境で何かをすると、まるでディスクからスワップアウトしているかのように、おそらく100msほどのマイクロスタッターが発生します。スワップをオフにしてから再びオンにすると(つまり、ページがディスクにスワップされなくなる)、すぐに直ります。新しいタブを開く、スーパーキーを押す、さらにはビデオゲームで特定の操作をすると、スタッターが発生します。インターネットでは0は良い値ではないと言われていますが、swappinessを5にしてもコンピュータの使用感は明らかに悪くなります。このコンピュータで使いたいものには十分なRAMがあるので、スワップは私にとってはサスペンドのためだけのものです。
- linsomniac
私も最近NixOS環境でzswapを有効にしましたが、問題なく動作しています。32GBのRAMと64GBのスワップがあるので、本当は必要ありませんが、害はありませんでした。
6月にNixOSに切り替えたときは問題を予想していましたが、素晴らしいの一言です。職場のUbuntu 26.04マシン用にdebパッケージをビルドするようなことでも、全く問題ありませんでした。
切り替える前に1、2年ほどNixOSをいじっていて、nixlangやさまざまな概念(SOPS、age、flakes)に多少慣れていました。しかし、切り替えを本当にスムーズにしてくれたのは、Claude Codeを使ってNixOSの設定を開発したことです。その方法なら何でも簡単にでき、問題があっても簡単に元に戻せます。
- seabrookmx
Ubuntu 26.04でzswap+zstdを使ってうまくいっています。Framework 13(AMD)で16GB、16GBのスワップファイルを設定しています(ext4ルートパーティション)。
マシンを32GBのRAMにアップグレードする予定でしたが、現時点では必要ないと感じています。現在のRAMの価格を考えると、明らかに素晴らしいことです!