Linux-Kernel
如何告訴核心在記憶體分配請求期間釋放記憶體的記憶體,而不是 OOM 殺手終止應用程序
我正在使用以下核心版本執行 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。