OOM Killer 設定の見直し
Ubuntu Desktop の OOM Killer 設定の見直しと、テストが呼びかけられています。OOM Killer
OOM Killer は Out-Of-Memory Killer の略称であり、システムのメモリーの空き容量が著しく低下した時に、動作しているプロセス(ソフトウェア)を終了させ、メモリーの空き容量を増やす仕組みです。2種類の OOM Killer
Ubuntu Desktop が導入している OOM Killer には2種類の実装があります。一つは Linux kernel の OOM Killer であり、もう一つは systemd-oomd の OOM Killer です。
Linux kernel の OOM Killer は、メモリーの空き容量が全く無く本当にもうどうしようもない時に発動する仕組みであり、最終手段・最後の砦として機能する OOM Killer です。
その一方で systemd-oomd の OOM Killer は予防措置的な OOM Killer であり、メモリーの空き容量が逼迫してきた時に発動する OOM Killer です。
言い換えると Linux kernel の OOM Killer を発動させないための OOM Killer と表現することもできます。
Ubuntu Desktop はこの二段構えでメモリーの空き容量の逼迫に対抗しています。
systemd-oomd の導入とその目的
元々 Ubuntu Desktop に systemd-oomd は導入されていませんでした。しかし以前紹介したように、Ubuntu 22.04 LTS で systemd-oomd が導入されることになりました。
これは空きメモリー不足により OS の応答性が著しく低下もしくは無反応になり、ユーザーが強制的に PC を再起動せざるを得ない状況がしばしばあったためです。
特にスラッシングが発生した時に著しい応答性の低下を経験したことのあるユーザーは、多いのではないでしょうか。
この状況を改善するため systemd-oomd を導入し、システムがメモリー不足に陥る前にユーザースペースで OOM Killer を実行してメモリーの空き容量を確保し、システムの応答性低下を緩和することになりました。
どのプロセスから終了させるのか問題
ここで出てくるのが、どのプロセスから終了させるのか問題です。終了させるプロセスを適切に選択しなければ、使い勝手が大きく低下してしまいます。
ユーザーは終了しても大して影響のないプロセスから終了して欲しいと思うものです。
例えばユーザー自身が自発的に起動したブラウザーや各種アプリなら、その影響は小さく抑えられるでしょう。
しかしその一方でユーザーが起動したアプリだけでなく、もしくはアプリよりも先に、GNOME Shell や D-Bus といったデスクトップを支えるプロセスまでもが終了してしまうと、もうそのデスクトップは機能しなくなり、ユーザーは再ログインを強いられてしまいます。
このような状況は以下のような報告に繋がります。
設定を見直した
というわけでこの課題に対処すべく、Ubuntu 26.10 で設定が見直されることになりました。目標
目標は可能な限りデスクトップセッションを維持することであり、そのためにデスクトップセッションを動かし続けるために必要なサービスよりも先にアプリを終了させることです。新しい設定方針
新しい設定方針は、以下のようになっています。- 重要なデスクトップサービスに従来よりも低い OOM スコアを設定し、Linux kernel の OOM Killer によって終了対象に選ばれる可能性を低くする。
- アプリケーションやバックグラウンドサービスには、従来通り高めのデフォルトスコアを設定し、終了対象として選ばれやすくする。
- ユーザーセッション全体を対象にした systemd-oomd による自動的なメモリ圧迫時の強制終了を無効化する。
これは systemd-oomd が Linux kernel に設定した OOM 優先度スコアを使用しないため、メモリ圧迫だけを理由に重要なデスクトップサービスを終了させてしまう可能性があったためです。


