The Linux kernel Out of Memory (OOM) killer

Denis Erygin erygin at corp.mail.ru
Fri Feb 29 14:23:02 MSK 2008


Добрый день,

Сорри за оффтоп, но OOM killer что-то разбушевался, убивает процессы при
достаточном наличии
свободной памяти на RHEL 4, процессы не текут. Кто-нибудь с этим уже
встречался?

Может ли это быть следствием прихода тысяч соединений
(выделяются системные буфера под сокет etc.)?

Навеяно борьбой с OOM:

init task -> malloc: "Просьба обеспечить выделение 257 Кб памяти."

malloc -> kernel: "Прошу выделить 257 Кб памяти в сегменте данных в связи
с производственной необходимостью."

kernel -> vm manager: "Предоставте 257 Кб резидентной памяти"

vm_manager -> kernel: "Предоставление 257 Кб физической памяти не
представляется
возможным в связи с отсутствием таковых. Сейчас попробуем чего - нибудь
найти."

vm_manager -> bdflushd: "С памятью облом. Что делать будем? Может почистим
кэши?"

ksoftirqd_CPU0 -> kernel: "Тут это... юзер кнопку нажал..."

kernel -> init task: "Эта, тут от тебя юзер чего - то хочет..."

init -> kernel: "Не дергайся! Подержит и отпустит."

kernel -> ksoftirqd_CPU0: "Забей на юзера."

bdflushd -> vm_manager: "Готово!"

kernel -> vm_manager: "Ну что там?"

vm_manager -> kernel: "Еще хуже стало. Может, на диск посвопимся?"

kernel -> kupdated: "Прошу принять на хранение swap-файл в размере 257
килобайт."

kupdated -> kernel: "Ваша просьба не может быть удовлетворена за недостатком
места."

kernel -> vfs: "Что еще за глюк? Было же место!"

vfs -> kernel: "Ничего не глюк. Вы еще прошлый swap-файл на 4 мега не
забрали.
А я, между прочим, не резиновый. И даже не stacker'ный."

ksoftirqd_CPU0 -> kernel: "Тут это... юзер опять кнопку давит..."

kernel -> ALSA: "Ну скажи ему что-нибудь, пусть отвяжется!"

ALSA -> юзеру: "Биип!"

vm_manager -> kernel: "Ну может можно там чего-нибудь перераспределить?"

kernel -> vm_manager: "Другим задачам тоже память нужна. Вам что,
kernel panic схлопотать охота?"

kernel -> OOM_killer: "Ну-ка выясни, кто там отожрал всю память,
и выкини их к MS-овской матери!"

ksoftirqd_CPU0 -> kernel: "Тут юзер Ctrl-Alt-Del жмет!"

kernel -> ksoftirqd_CPU0: "Да отруби ты этому зануде клавиатуру!
Мы тут делом заняты..."

OOM_killer -> kernel: "Опаньки!"

init task -> kernel: "Ну что там? Сколько памяти свободно?"

kernel -> init task: "320 физической и... ой, куда это kupdated делся?

kernel -> OOM_killer: "Ты что начистил, сволочь?"

OOM_killer -> kernel: "А чо я, чо я? Мне сказали - выкинуть, я и выкидываю!"

malloc -> kernel: "Это опять я. Прошу выделить 257 Кб памяти в сегменте
данных
в связи с производственной необходимостью."

kernel -> init task: "Не могу. У меня kupdated важные данные куда-то
поныкал,
а его прибили. И вообще, я с вами скоро паниковать начну!"

Кнопка Reset -> CPU: "Ну что? Доигрались?"

... ХОЛОДНЫЙ РЕСТАРТ...

kernel -> init: "Так на чем мы остановились?"







More information about the nginx-ru mailing list