OOM killer, несмотря на большое количество свободной памяти на ядре PAE

У нас есть сервер приложений, который по прежним причинам все еще работает на 32-битном ядре с PAE (Ubuntu 12.04 LTS). Сервер имеет 24 ГБ ОЗУ, как видно из вывода free:

$> free -lmt
             общее количество использованных свободных общих буферов в кеше
Память:         24256      19468       4788          0          0       2382
Низкий: 189 146 42
Высокая:        24067      19321       4745
-/+ буферы / кэш:      17085       7170
Обмен:        19956         47      19908
Итого:       44212      19515      24697

Однако, как только реальное использование памяти превышает примерно 16 ГБ, процессы убиваются OOM-убийцей (в частности, Google Chrome), и некоторые выделения памяти из Java также имеют тенденцию к сбою. Я уже установил

vm.overcommit_memory = 1

с помощью sysctl, но это, похоже, не помогает. Вот выдержка из dmesg, которая показывает выходные данные после одного из OOM.

1 ответ

Быстрый Google для oom killer premature Похоже, есть несколько причин, по которым убийца OOM может быть вызван, даже если в системе достаточно видимой памяти / подкачки.

Одним из возможных объяснений является фрагментация памяти, в частности:

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

Предполагает, что не так много обычных больших страниц.

Боюсь, это не полный ответ на ваш вопрос, но он может указать вам одно из возможных направлений расследования.

Другие вопросы по тегам