にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ

2021年12月10日

Ubuntu改造日記 メモリ+スワップ満杯フリーズ対策 EarlyOOM その112


こんにちは。
今日はメモリとスワップが一杯になった時に固まって動かなくなる対策
としてEarlyOOMを使用します。
メモリが一杯になるとスワップをガリガリし始めて
そのうち固まって動かなくなる最近のLinux。
そうなる前に内部プロセスを落としてフリーズしないようにします。
Fedoraでは標準でWorkstationに採用されています。
もちろんサーバでは使用しないように・・・w

●EarlyOOM
EarlyOOMとはメモリが足りなくなると、内部プロセスを
優先順位に基づき落としてメモリを開放し、フリーズを防ぐアプリです。
OOM Killerがその機能をしていましたが、コントロール性が悪いです。
それを先に制御しようというアプリです。

https://github.com/rfjakob/earlyoom

翻訳エンジンで訳すとこんな感じ

 Earlyoomは使用可能なメモリの量と空きスワップを1秒間に最大10回チェックします
 (空きメモリが多い場合はそれほど頻繁ではありません)。
 デフォルトでは両方が10%未満の場合、最大のプロセス(最大oom_score)
 を強制終了します。パーセンテージ値はコマンドライン引数を使用して構成できます。

という事で指定したもしくは大きいプロセスを
あるメモリ量の所で強制的に落としてフリーズを助けます。
主にサーバやエミュレータ、VMそしてブラウザです。
設定ファイルで自由に追加したり出来ます。

このアプリの良い所はフリーズ回避です。
Swapを使い尽くすとメモリが足りなくなりHDDの読み書き多発でフリーズ
する現象を回避します。SSDの延命にも良いかもしれません。
しかしOS内部でプロセスが死ぬので、再起動をおすすめします。
もちろんサーバには使えません。


●EarlyOOMのインストール
Ubuntuの場合は簡単です。

sudo apt install earlyoom
sudo systemctl enable earlyoom
sudo systemctl start earlyoom

手動で実行する際には

earlyoom

を端末で実行してください。
systemdに一応登録しておきます。
設定ファイルに落としたい

sudo nano /etc/default/earlyoom

編集します。
例えばこちらを読んで。

https://github.com/rfjakob/earlyoom/issues/57

設定ファイルに記載します。
Firefoxとかなら下記を、--preferオプションで落とす設定
--avoidオプションで落とさない設定に出来ます。
ーmが最小メモリ、ーsが最小スワップ、

EARLYOOM_ARGS="-m 15 -s 100 -r 0 --prefer '(firefox|Web\sContent)'

などを付けて保存します。
で再起動。
設定がちゃんと生きていて、systemdで起動できればOKです。

●まとめ
少ないメモリPC用です。
これを入れてからフリーズしにくくなりました。
が応急処置です。
OOM killerが起動する前に落としてメモリを確保する、設定出来る
そんな使い方が出来ます。
まあ問題はブラウザの使用メモリ量が多すぎる事でメモリリークしてませんかね?
異常を察知して落としてメモリを開ける、
そんなアプリです。
posted by kapper at 22:57 | Comment(0) | Ubuntu
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ