Dockerプロセスをスワップさせない方法

dockerコマンドに --memory-swappiness=0 を付けて起動する

--memory-swappiness=0

このオプションを付けておけば、バックグラウンドでメモリ消費の多い処理を実行しても、そのDockerプロセスはスワップアウトされない。他のプロセスがスワップ・アウトされる。応答時間が重要なWebサーバーなどに付けておくと、メンテナンス時にいい感じで動いてくれる。

参考文献:

デフォルトでは、コンテナのカーネルは、アノニマス・ページ・メモリ上の何パーセントかをスワップ・アウトします。コンテナ向けのこのパーセントを指定するには --memory-swappiness で 0 ~ 100 までの値を設定します。 docs.docker.jp

ただ、このやり方だとZram使用時にはうまく動かなさそうだ。Zramにも全くスワップされなくなってしまうだろう。