ブラウザで多くのタブを開くと、システムが数分間応答しなくなります。マウスカーソルを移動したり、プロセスを強制終了したり、開いているタブを閉じたりすることができませんでした。当時は強制的にシステムをリセットせざるを得ませんでした。もちろん、私は OneTabを使用しています およびグレートサスペンダー 拡張機能ですが、あまり役に立ちませんでした。私はしばしばメモリを使い果たしました。これを修正するための解決策を探しているときに、 Early OOMに出くわしました 。疑問に思っている人にとっては、他に選択肢がまったくない場合、応答しないシステムで最大のプロセスを強制終了します。初期のOOMは、使用可能なメモリの量をチェックし、1秒間に10回スワップを解放します。両方が10%未満の場合、最大のプロセスが強制終了されます。
なぜ早いOOM?内蔵のOOMキラーを使ってみませんか?
先に進む前に、 Oとしても知られるOOMキラーについて簡単に説明します。 ut O f M エモリーキラー。 OOMキラーは、システムのメモリが非常に少ないときにカーネルが使用するプロセスです。 OOM killerの主なタスクは、カーネルが実行しようとしている残りのプロセスがスムーズに機能するために十分なメモリが解放されるまで、プロセスの強制終了を継続することです。 OOMキラーは、システムにとって最も重要でない最良のプロセスを選択し、最大メモリを解放してそれらを強制終了します。各プロセスのoom_scoreは/procで確認できます。 pidの下のディレクトリ セクション。
例:
$ cat /proc/10299/oom_score 1
プロセスのoom_scoreの値が高いほど、システムのメモリが不足しているときにOOMKillerによって強制終了される可能性が高くなります。
Early OOMの開発者は、カーネル内のOOMキラーに比べて大きな利点があると主張しています。前に述べたように、Linux oom killerは最高のスコアでプロセスを強制終了するため、Chromeブラウザーは常にoomkillerの最初の犠牲者になります。これを回避するために、EarlyOOMは/ proc / * / statusを使用します echo f> / proc / sysrq-triggerの代わりに 。彼はまた、oom killerを手動でトリガーすると、最新のLinuxカーネルではまったく機能しない可能性があると主張しています。
アーリーOOMのインストール
初期のOOMはAURで利用できるため、ArchLinuxおよびその派生物の任意のAURヘルパープログラムを使用してインストールできます。
Yayを使用する :
$ yay -S earlyoom
Early OOMデーモンを有効にして起動します:
$ sudo systemctl enable earlyoom
$ sudo systemctl start earlyoom
他のLinuxディストリビューションでは、以下に示すように手動でコンパイルしてインストールします。
$ git clone https://github.com/rfjakob/earlyoom.git $ cd earlyoom $ make $ sudo make install
初期のOOMを使用して応答しないLinuxシステムで最大のプロセスを強制終了する
次のコマンドを実行して、EarlyOOMを開始します。
$ earlyoom
ソースからコンパイルした場合は、次のコマンドを実行してEarlyOOMを起動します。
$ ./earlyoom
サンプル出力は次のようになります:
earlyoom 0.12 mem total: 3863 MiB, min: 386 MiB (10 %) swap total: 2047 MiB, min: 204 MiB (10 %) mem avail: 1770 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1771 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %) mem avail: 1784 MiB (46 %), swap free: 2047 MiB (99 %) [...]
上記の出力に示されているように、Early OOMは、使用しているメモリとスワップの量、最小値、使用可能なメモリの量、および空きのスワップの量を表示します。 Ctrlキーを押しながらCキーを押して手動で停止するまで、実行を継続することを忘れないでください。
メモリとスワップの両方が10%未満に達すると、システムがスムーズに実行するのに十分なメモリが得られるまで、EarlyOOMは最大のプロセスを自動的に強制終了します。要件に応じて最小パーセンテージ値を構成することもできます。
使用可能なメモリの最小値を合計のPERCENTに設定するには、次のコマンドを実行します:
$ earlyoom -m <PERCENT_HERE>
利用可能なスワップの最小値を合計のPERCENTに設定するには、次のコマンドを実行します:
$ earlyoom -s <PERCENT_HERE>
詳細については、ヘルプセクションを参照してください。
$ earlyoom -h earlyoom 0.12 Usage: earlyoom [OPTION]... -m PERCENT set available memory minimum to PERCENT of total (default 10 %) -s PERCENT set free swap minimum to PERCENT of total (default 10 %) -M SIZE set available memory minimum to SIZE KiB -S SIZE set free swap minimum to SIZE KiB -k use kernel oom killer instead of own user-space implementation -i user-space oom killer should ignore positive oom_score_adj values -d enable debugging messages -v print version information and exit -r INTERVAL memory report interval in seconds (default 1), set to 0 to disable completely -p set niceness of earlyoom to -20 and oom_score_adj to -1000 -h this help text
これで、メモリ消費量が最も多いプロセスについて心配する必要がなくなりました。