我如何告诉内核释放内存分配请求中的caching内存,而不是终止应用程序的OOM杀手

我正在运行Ubuntu 10.04以下的内核版本

Linux ip-10-0-1-119 2.6.32-343-ec2#45-Ubuntu SMP Tue Feb 14 18:18:17 UTC 2012 x86_64 GNU / Linux

内存状态显示caching正在使用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 

我知道操作系统自动pipe理它,并保持caching中的RAM的最大份额,以最大限度地减lessI / O的成本。

问题是在我们的应用程序需要内存时,如果在物理内存中没有相同数量的内存,OOM杀手会终止应用程序。

如何调整我的内核,以便如果有来自我的应用程序的任何内存请求,内核应该释放一些高速caching来为我的应用程序腾出空间,而不是OOM杀手终止它?

通常情况下,Linux将为您的应用程序清除caching。 你可以做的是从OOM杀手中排除你的应用程序。 OOM杀手不会终止你的申请。

 echo -17 > /proc/PID/oom_adj 

PID应该是你的程序的PID。