systemd-oomdの有効・無効を切り替えるには
「systemd-oomd」の有効と無効を切り替える方法を紹介します。systemd-oomd
以前何度か紹介したように「Ubuntu Deskrop 22.04 LTS」で「systemd-oomd」が導入されました。従来はメモリー不足によりOSの応答性が著しく低下し、もしくは無反応になり、ユーザーはPCを強制的に再起動せざるを得ませんでした。
この状況を改善するため「systemd-oomd」を導入し、システム的にメモリー不足に陥る前にユーザースペースで「OOM Killer」を実行してメモリーの空き容量を確保し、システムの応答性低下を緩和することになりました。
アプリがいきなり終了する
メモリーの空き容量が残り僅かになると「systemd-oomd」が動作し、ユーザーが起動しているアプリを必要なだけ終了させます。ユーザー視点で見ると、アプリがいきなり終了することになります。
これによりユーザーの環境によってはアプリが頻繁に終了するようになり、以下のように大きな影響を受けるユーザーから不具合が報告されました。
この状況を改善するため、以下のように「systemd-oomd」の動作条件が見直されました。
ユーザーの事情や都合もある
「systemd-oomd」によりOSの応答性が著しく低下するケースを大きく回避できるようになるとはいえ、ユーザーにとってアプリの突然の終了は都合が悪いこともあるでしょう。その状況によっては「systemd-oomd」を無効化したくなるかもしれません。
アプリの終了をログで確認するには
「systemd-oomd」によりアプリが終了すると、その旨がログに出力されます。以下のいずれかの方法で終了したアプリの情報を確認できます。
1.syslogで確認するには
「syslog」で「systemd-oomd」によって終了したアプリを確認するには、「端末」で以下のコマンドを実行します。grep -a 'systemd-oomd.*Killed' /var/log/syslog
以下のように終了したアプリの情報が出力されます。
Jul 21 07:23:19 ubuntu-vb-2204 systemd-oomd[659]: Killed /user.slice/user-1000.slice/user@1000.service/app.slice/snap.firefox.firefox.6b90c94f-de98-44b6-acb6-e1e636843af9.scope due to memory pressure for /user.slice/user-1000.slice/user@1000.service being 81.38% > 50.00% for > 20s with reclaim activity
このログの例ではSnap版firefoxが「systemd-oomd」によって終了したことが分かります。
2.journalctlで確認するには
「journalctl」で「systemd-oomd」によって終了したアプリを確認するには、「端末」で以下のコマンドを実行します。journalctl -u systemd-oomd
「systemd-oomd」自身のログ及び終了したアプリの情報が出力されます。
終了したアプリの情報は、上記と同じです。
systemd-oomdの状態を確認するには
「systemd-oomd」が起動しているかどうか、有効かどうかを確認する方法です。systemd-oomdの状態を確認
「systemd-oomd」の状態を確認するには、「端末」で以下のコマンドを実行します。systemctl status systemd-oomd
systemd-oomdが動作している場合
「systemd-oomd」が動作している場合、以下のように「Active: active」と出力されます。動作していれば「systemd-oomd」によるアプリの終了が行われます。
これがデフォルトの状態です。
systemd-oomdが動作していない場合
「systemd-oomd」が動作していない場合、以下のように「Active: inactive」と出力されます。動作していなければ「systemd-oomd」によるアプリの終了は行われなくなります。
systemd-oomdが有効化されている場合
「systemd-oomd」そのものが有効化されている場合、以下のように「Loaded: loaded」と出力されます。「systemd-oomd」が有効化されている場合、PC起動時に「systemd-oomd」が起動するようになります。
systemd-oomdが無効化されている場合
「systemd-oomd」そのものが無効化されている場合、以下のように「Loaded: masked」と出力されます。「systemd-oomd」が無効化されている場合、PC起動時に「systemd-oomd」は起動しなくなります。
systemd-oomdの有効・無効を切り替えるには
「systemd-oomd」の有効と無効を切り替える方法です。1.現在動作中のsystemd-oomdを停止するには
現在動作中の「systemd-oomd」を停止するには、「端末」で以下のコマンドを実行します。sudo systemctl stop systemd-oomd
これにより「Active: inactive」になり、「systemd-oomd」によるアプリの終了は行われなくなります。
ただし「systemd-oomd」そのものは有効なため、PC起動時に「systemd-oomd」が起動し再度「systemd-oomd」によるアプリの終了が行われるようになります。
つまりこの状態でPCを再起動すると「Active: active」になります。
2.systemd-oomdを無効化するには
「systemd-oomd」そのものを無効化するには、「端末」で以下のコマンドを実行します。sudo systemctl mask systemd-oomd
これにより「Loaded: masked」になり、PC起動時に「systemd-oomd」が起動しなくなります。
もちろん「systemd-oomd」によるアプリの終了も行われなくなります。
3.systemd-oomdを有効化するには
「systemd-oomd」そのものを有効化するには、「端末」で以下のコマンドを実行します。sudo systemctl unmask systemd-oomd
これにより「Loaded: loaded」になり、PC起動時に「systemd-oomd」が起動するようになります。
もちろんその時は「systemd-oomd」によるアプリの終了も行われるようになります。
つまり無効化するにはどうすれば良い?
「systemd-oomd」を無効化するには、上記の「1.」と「2.」を実行してください。最終的に「systemd-oomd」の状態を確認すると、以下のようになります。