Repolode
rfjakob

rfjakob/earlyoom

メモリとスワップ不足でシステムがフリーズする前に、最大のプロセスを終了する軽量なLinuxユーザー空間デーモン。

スター
4,351
フォーク
215
未解決の Issue
28
最終コミット
一昨日

これは何?

earlyoomは、利用可能なメモリと空きスワップを監視し、カーネル標準のOOM killerが作動する前にプロセスを終了するLinux向けの小さなデーモンです。カーネルのOOM killerは通常、スワップやキャッシュの解放を先に行い、システムがほとんど使いものにならなくなるまで待ちます。earlyoomはユーザー空間で動作し、「free」ではなく「available」のメモリ量を使って、最大で毎秒10回メモリを確認します。

デフォルトでは、利用可能なメモリと空きスワップがどちらも全体の10%を下回ると、earlyoomは最も高いoom_scoreを持つプロセスにSIGTERMを送ります。しきい値やSIGKILLを送る段階、終了対象の選び方は、--prefer、--avoid、--ignore、--sort-by-rssなどのコマンドラインオプションで調整できます。依存関係のないC製で、メモリに負荷がかかっても動作し続けるよう、mlockall()でメモリをロックします。

makeでソースからインストールしてsystemdまたはinit.dのサービスとして登録できるほか、Debian、Ubuntu、Fedora、Archのパッケージからもインストールできます。任意のd-bus通知と、プロセス終了の前後に実行するスクリプト(-Nおよび-P)を使って、終了時の処理を行えます。

主な機能

  • 01利用可能なメモリと空きスワップを最大で毎秒10回確認します。
  • 02設定可能なしきい値に基づき、まずSIGTERMを送り、その後SIGKILLを送ります。
  • 03oom_score、または--sort-by-rss指定時はRSSに基づいて終了対象を選びます。
  • 04--prefer、--avoid、--ignoreの正規表現で対象を制御できます。
  • 05任意のd-bus通知と、終了前後に実行するスクリプトに対応しています。
  • 06依存関係のない純粋なC製で、--dryrunモードも備えています。

ユースケース

  • ブラウザーやIDEのメモリリークでデスクトップやノートPCの応答が遅くなるのを防ぐ。
  • 暴走プロセスから共有Linuxサーバーやビルドマシンを保護する。
  • スワップの過剰な発生が起きやすい、メモリの少ないVMやシングルボードコンピューターで実行する。
  • メモリ不足でプロセスが終了した際に、アラートやクリーンアップスクリプトを実行する。

トピック

よくある質問

earlyoom とは?
メモリとスワップ不足でシステムがフリーズする前に、最大のプロセスを終了する軽量なLinuxユーザー空間デーモン。 earlyoomは、利用可能なメモリと空きスワップを監視し、カーネル標準のOOM killerが作動する前にプロセスを終了するLinux向けの小さなデーモンです。カーネルのOOM killerは通常、スワップやキャッシュの解放を先に行い、システムがほとんど使いものにならなくなるまで待ちます。earlyoomはユーザー空間で動作し、「free」ではなく「available」のメモリ量を使って、最大で毎秒10回メモリを確認します。
earlyoom は無料で使えますか?ライセンスは?
earlyoom は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
earlyoom は今もメンテナンスされていますか?
活発にメンテナンス中。earlyoom の最終コミットは 2026年10月19日 です。
earlyoom は何に使えますか?
ブラウザーやIDEのメモリリークでデスクトップやノートPCの応答が遅くなるのを防ぐ。 暴走プロセスから共有Linuxサーバーやビルドマシンを保護する。 スワップの過剰な発生が起きやすい、メモリの少ないVMやシングルボードコンピューターで実行する。 メモリ不足でプロセスが終了した際に、アラートやクリーンアップスクリプトを実行する。
earlyoom はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/rfjakob/earlyoom

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト