OOM killer apesar de muita memória livre no kernel do PAE

2

Temos um servidor de aplicativos que, por motivos legados, ainda é executado no kernel de 32 bits com o PAE (Ubuntu 12.04 LTS). O servidor tem 24GB de RAM, como pode ser visto na saída do free:

$> free -lmt
             total       used       free     shared    buffers     cached
Mem:         24256      19468       4788          0          0       2382
Low:           189        146         42
High:        24067      19321       4745
-/+ buffers/cache:      17085       7170
Swap:        19956         47      19908
Total:       44212      19515      24697
No entanto, assim que o uso real da memória aumenta em aproximadamente 16 GB, os processos são mortos pelo invasor OOM (notavelmente o Google Chrome), e algumas alocações de memória do Java também tendem a falhar. Eu já defini

vm.overcommit_memory = 1

via sysctl , mas parece não ajudar. Aqui está um trecho do dmesg que mostra a saída depois de um dos OOMs.

    
por Stefan Seidel 06.03.2013 / 11:54

1 resposta

3

Um rápido google para oom killer premature parece sugerir que existem algumas razões que o assassino da OOM pode ser invocado mesmo quando o sistema tem bastante memória / troca aparente disponível.

Uma possível explicação é a fragmentação da memória, em particular:

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

Sugere que não há muitas páginas grandes normais disponíveis.

Receio que esta não seja uma resposta completa para a sua pergunta, mas poderia indicar-lhe uma possível orientação de investigação.

    
por 06.03.2013 / 13:10

Tags