ホームサーバーのコンテナがメモリ制限に達すると、キャッシュの回収や割り当ての停止からコンテナ単位のメモリ不足(OOM)キルに進行することがあります。
メモリ制限は単なるダッシュボードの警告ではありません。Linuxはプロセスメモリ、匿名ページ、およびコンテナのファイルキャッシュの多くをコントロールグループに割り当てます。使用量が設定された閾値に近づくと、カーネルはページの回収や新しい割り当ての制限を試みます。ハードリミットに達すると、グループが回復できるように1つ以上のプロセスを終了させることがあります。
メモリプレッシャーは通常、最終的なキルの前に始まる
コントロールグループv2はソフト保護レベル、回収と制限の境界、そしてハード最大値を使用できます。高い境界を超えると直接回収が強制され、コンテナが健全な状態でもリクエストが遅くなります。Netdataのcgroupメモリプレッシャーガイドはこれらの段階とそれを示すカウンターを区別しています。
この早期の遅延はホームサーバーで重要です。なぜなら、写真のインデクサー、データベース、メディアスキャナーはメモリ回収を待つ間CPUがアイドル状態に見えることがあるからです。ページキャッシュが減るとストレージの読み込みが増え、見かけ上のメモリ問題がディスク活動の増加やアプリの遅延として現れます。
ハードリミットは割り当てをOOM判定に変える
ハード最大値に達すると、回収できない割り当ては失敗するか、メモリコントロールグループ内でOOM処理が開始されます。詳細なcgroup OOM判定の議論は、結果が単純なユーザースペースの割合チェックではなく、割り当ての文脈やカーネルの動作に依存する理由を示しています。
選ばれたプロセスがコンテナのメインプロセスであれば、コンテナは終了します。再起動ポリシーがあればすぐに復帰し、キャッシュの再読み込み、データベースの再オープン、ログの生成を繰り返すループが発生します。サーバーは断続的に利用可能に見え、完全にダウンしているわけではありません。
| 段階 | カーネルの対応 | コンテナの症状 | ホストの症状 |
|---|---|---|---|
| 通常の余裕 | キャッシュと割り当てが進行 | 安定した遅延 | 予測可能なメモリ使用量 |
| 高いプレッシャー | 回収と制限が増加 | 長い停止とストレージ読み込み増加 | PSIとI/Oの上昇 |
| ハードリミット | 割り当て失敗またはOOM処理開始 | プロセス終了またはエラー返却 | OOMイベント記録 |
| 再起動ループ | ランタイムがワークロードを再作成 | 繰り返されるコールドスタート | CPU、ディスク、DNS、ログのバースト |
コンテナのメモリはアプリケーションヒープだけではない
サービスは控えめな言語ヒープを報告しても、そのコントロールグループにはネイティブ割り当て、子プロセス、共有メモリ、カーネル計上オブジェクト、ファイルバックキャッシュが含まれています。この違いが、オーケストレーターがアプリレベルのメトリクスが設定値に達する前にOOMイベントを報告する理由を説明します。
コンテナメモリ会計ガイドは、イベントレートやプレッシャーを現在の使用量とともに読むことを推奨しています。単一のスナップショットでは短い割り当てバーストや、監視がサンプリングする前に既にメモリを解放したキルを見逃すことがあります。
スワップは失敗の形を変えるが制限は変えない
グループにスワップが利用可能な場合、コールド匿名ページはRAMから移動し、OOMキルを遅らせることができます。代償はストレージの遅延です。データベースやウェブプロセスは生存しつつも、SSDやHDDからページをフォールトして戻すため応答が遅くなることがあります。
スワップが無効または別途制限されている場合、ハードリミットは早く到達し、失敗はより急激になります。実践的なcgroup OOM実験は、グループ設定が1つのプロセスか全ワークロードの終了かに影響する様子を示しています。
イベントとワークロードの形状から制限を診断する
コンテナの終了理由、再起動回数、メモリイベント、プレッシャーストール情報、現在およびピーク使用量、スワップ、アプリケーションログを確認してください。インポート、スキャン、バックアップ、AIモデルの読み込みと相関させます。ホストを測定せずに制限を上げると、同じ失敗が1つのコンテナからすべてのサービスに移ることがあります。
メディアと計算の混在ワークロードには、ホームNASリソース境界分析があり、1つのサービスのメモリプレッシャーがバックアップやファイルアクセスに影響を与える理由を説明しています。関連するAI NASメモリ計画の記事は、モデルの重み、キャッシュ、コンテナオーバーヘッドをまとめて割り当てるワークロードの背景を提供します。
よくある質問
OOMキルされたコンテナは常にその後高いメモリ使用を示しますか?
いいえ。プロセスをキルするとメモリは即座に解放され、再起動は低いベースラインから始まることがあります。イベントカウンター、終了ステータス、ピークや時系列メトリクスの方が後の単一スナップショットより信頼できます。
ホストにまだ空きRAMがあるのに1つのコンテナが制限に達することはありますか?
はい。コントロールグループのハードリミットは分離境界であり、カーネルはそのコンテナに割り当てられたグループ外にメモリがあってもこれを強制できます。
スワップを追加すればコンテナのメモリ制限は完全に解決しますか?
いいえ。スワップは終了を遅らせることはできますが、深刻な遅延やストレージトラフィックを増やす可能性があります。根本的な作業セット、リーク、バースト、または小さすぎる制限は依然として理解が必要です。
テック&AIハブ
もっと読む

時系列のダウンサンプリングはスマートホームの異常検知にどのような影響を与えるか?
バケット幅、集計、アンチエイリアシング、欠損データ、イベント期間、マルチスケール保持によって、スマートホームの異常検出再現率がどのように変化するかをご覧ください。

占有グリッドは弱いスマートホーム信号をどのように統合するのか?
空間セル、センサーモデル、対数オッズ更新、減衰、相関した証拠、しきい値が、弱いホームセンサー信号を在室推定に変える仕組みを学びましょう。

測光正規化はプライベートな顔クラスタリングにどのような影響を与えるか?
照明補正によって、顔の切り出し画像、埋め込み、クラスタ間距離、しきい値、過剰正規化、プライベート写真検索の評価がどのように変わるかをご覧ください。

