Ubuntu Desktopでsystemd-oomdの導入提案
現在開発中の「Ubuntu Desktop 22.04 LTS(開発コード:Jammy Jellyfish)」にて、「systemd-oomd」の導入が提案されています。systemd-oomd
「systemd-oomd」はユーザースペースで動作する「OOM Killer」です。「Linux kernel」で「OOM Killer」が発生する前にユーザースペースで「OOM Killer」を実行し、システムの応答性低下を緩和します。
「systemd-oomd」が適切に動作できるようにするには、利用可能なスワップ領域が確保されており、アプリは異なる「cgroups」でプロセスをスポーンする必要があります。
後者に関しては、例えば「systemd-run」でプログラムを実行したり、もしくはデスクトップ環境自身が異なる「cgroups」でプログラムを動作するなど、実行環境を配慮する必要があります。
また「systemd-oomd」は各「cgroup」のリソースの使用状況を追跡し、しきい値を超えた「cgroup」を終了させるため「cgroup v2」を利用します。
「Ubuntu」では「Ubuntu 21.10」から「cgroup v2」が採用されています。
Debianでパッケージ化された
「Debian」で「systemd-oomd」がビルドされるようになり、「systemd-oomd」パッケージを利用できるようになりました。Ubuntuにも反映
この変更を受け「Ubuntu」では「Ubuntu」の「systemd v249.9-0ubuntu2」パッケージにこれに関する変更が反映されました。以下のように「systemd-oomd」をインストールすれば、「systemd-oomd」を利用できるようになります。
sudo apt install systemd-oomd
Ubuntuでの設定
「Ubuntu」ではメモリーのしきい値を、以下のように設定しています。- MemoryPressureDuration:20sec
- MemoryPressureLimit:50%
GNOMEとcgroups
「GNOME」はアプリケーションを異なる「cgroups」で起動する機能を提供しています。「systemd-oomd」を導入することでメモリーが不足してきた状況でもシステムの応答性低下を緩和できるこの仕組みの導入が提案されています。