Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
The Linux kernel Out of Memory (OOM) killer
Добрый день,
Сорри за оффтоп, но 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: "Так на чем мы остановились?"
|