Fedoraプロジェクトは1月5日(米国時間)、2020年春にリリース予定の「Fedora 32」において「EarlyOOM」パッケージをデフォルトでインストール/有効化することを明らかにした。
- Changes/EnableEarlyoom
- rfjakob /earlyoom -GitHub
EarlyOOMは物理メモリおよびスワップ領域が不足した場合、特定のしきい値に応じてもっともメモリを占有するプロセスを終了させる、ユーザスペースで動くデーモン。利用可能なメモリおよびスワップ領域をつねに監視し、それぞれ10%を下回るとSIGTERMを、5%を下回るとSIGKILLを、もっとも占有するプロセスに対して送信し、プロセスを強制終了させる。
Fedoraプロジェクトでは、デスクトップ(Fedora Workstation)環境におけるユーザエクスペリエンス向上の観点から、メモリのハングアウトを防ぐ方法に関して2019年夏ごろから議論が続いていた。デスクトップワークロードの中にはメモリを大量に、しかも急速に消費するケースがいくつかあり、たとえば「webkitGTK」をソースからビルドする場合などがそれにあたる。こうしたケースでカーネルのOOMキラーがうまく作動しないことが多く、メモリ不足によるシステムのハングアップが起こりやすい。
作業中にデスクトップがフリーズしてしまう事態はユーザエクスペリエンスに大きく影響するため、ワーキンググループにおいていくつかの解決策が提案されてきたが、システム全体の復旧が速く、またプロセスの終了のみを行うSIGKILの前に、プロセスに終了の指示を行うSIGTERMを送信することで、ユーザに対して段階的なシャットダウンを選択可能にできること、さらにカーネルのOOMキラーのトリガではなく、ユーザスペースのデーモンであり、他のパッケージとの依存関係がない点も、実装のしやすさという点で評価されたようだ。
もっとも今回のEarlyOOMのデフォルト実装はデスクトップ版のみに限定されている。EarlyOOM自体もデスクトップでの使用を前提に開発されており、他のエディションではよほど要望が増えない限り実現はなさそうだ。