尽管 PAE 内核有大量可用内存,但仍会终止 OOM

尽管 PAE 内核有大量可用内存,但仍会终止 OOM

我们有一个应用服务器,由于遗留原因,它仍然在带有 PAE 的 32 位内核上运行(Ubuntu 12.04 LTS)。该服务器有 24GB 的 RAM,如 free 的输出所示:

$> 免费-lmt
             已使用的、可用的、缓存的共享缓冲区总数
内存:24256 19468 4788 0 0 2382
低:189 146 42
最高:24067 19321 4745
-/+ 缓冲区/缓存:17085 7170
交换:19956 47 19908
总计:44212 19515 24697

但是,一旦实际内存使用量超过 16GB,进程就会被 OOM 终止程序(尤其是 Google Chrome)终止,并且 Java 的一些内存分配也往往会失败。我已经设置了

vm.overcommit_memory = 1

通过sysctl,但似乎没有帮助。这是一个dmesg 摘录它显示了一次 OOM 之后的输出。

答案1

快速谷歌搜索oom killer premature似乎表明有几个原因即使系统有足够的可用内存/交换空间,也可能调用 OOM killer。

一种可能的解释是内存碎片,特别是:

Normal: 2386*4kB 2580*8kB 197*16kB 6*32kB 4*64kB 0*128kB 1*256kB 1*512kB 1*1024kB 0*2048kB 0*4096kB = 35576kB

表明可用的正常大页面并不多。

恐怕这不能完全回答你的问题,但它可以为你指明一个可能的探究方向。

相关内容