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

1536
Stefan Seidel

У нас есть сервер приложений, который по прежним причинам все еще работает на 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.

2

1 ответ на вопрос

3
pwaller

oom killer prematureПохоже, быстрый поиск в Google позволяет предположить, что существует несколько причин, по которым убийца 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 

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

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

Похожие вопросы