web-dev-qa-db-ja.com

PAEカーネルに大量の空きメモリがあるにもかかわらずOOMキラー

レガシーの理由で、PAE(Ubuntu 12.04 LTS)を備えた32ビットカーネルで実行されるアプリケーションサーバーがあります。 freeの出力に見られるように、サーバーには24GBのRAMがあります。

 $> free -lmt 
キャッシュされた使用済みの空き共有バッファの合計
 Mem:24256 19468 4788 0 0 2382 
低:189 146 42 
高:24067 19321 4745 
-/ +バッファ/キャッシュ:17085 7170 
スワップ:19956 47 19908 
合計:44212 19515 24697 

ただし、実際のメモリ使用量が約16 GBを超えるとすぐに、プロセスはOOMキラー(特にGoogle Chrome)によって強制終了され、Java)からの一部のメモリ割り当ても失敗する傾向があります。セットする

vm.overcommit_memory = 1

sysctl経由ですが、役に立たないようです。これは dmesgの抜粋 で、OOMの1つの後の出力を示しています。

2
Stefan Seidel

oom killer prematureの簡単なグーグルは、 いくつかの理由 システムに十分なメモリ/スワップが利用可能な場合でも、OOMキラーが呼び出される可能性があることを示唆しているようです。

考えられる理由の1つは、特にメモリの断片化です。

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

利用可能な通常の大きなページがあまりないことを示唆しています。

これはあなたの質問に対する完全な答えではないのではないかと思いますが、考えられる1つの方向性を示す可能性があります。

3
pwaller