Linux-Kernel

如何告訴核心在記憶體分配請求期間釋放記憶體的記憶體,而不是 OOM 殺手終止應用程序

  • May 10, 2012

我正在使用以下核心版本執行 Ubuntu 10.04

Linux ip-10-0-1-119 2.6.32-343-ec2 #45-Ubuntu SMP 2 月 14 日星期二 18:18:17 UTC 2012 x86_64 GNU/Linux

記憶體狀態顯示記憶體正在使用 RAM 的最大份額。

ubuntu@ip-10-0-1-12:~$ free -m
            total       used       free     shared    buffers     cached
Mem:          7702       7657         44          0         24       6137
-/+ buffers/cache:       1494       6207
Swap:            0          0          0

我知道作業系統會自動管理它並在記憶體中保留最大的 RAM 份額,以最大限度地降低 I/O 成本。

問題出在重負載期間,當我們的應用程序需要記憶體時,如果物理 RAM 中沒有相同的記憶體量,OOM 殺手會終止應用程序。

我如何調整我的核心,以便如果我的應用程序有任何記憶體請求,核心應該釋放一些記憶體記憶體為我的應用程序騰出空間,而不是 OOM 殺手終止它?

通常,Linux 會為您的應用程序清除記憶體。您可以做的是從 OOM 殺手中排除您的應用程序。OOM 殺手將不會終止您的應用程序。

echo -17 > /proc/PID/oom_adj

PID 應該是您的程序的 PID。

引用自:https://serverfault.com/questions/370044