LINUX.ORG.RU

Оповещение о нехватки памяти

 ,


0

2

Господа,

Уже несколько раз случалась ситуация, когда моя система внезапно начинала тормозить так, что даже мышь отказывалась шевелиться. В таких ситуациях, если проявить терпение и подождать 10-15 минут, можно войти в TTY1, запустить htop и увидеть, что дело в нехватке памяти, которая нагрянула внезапно.

Впорос: есть ли какой-то способ получать уведомления о том, что алярм, еще чуть-чуть и память полностью заполнится и все повиснет. Даже оффтопик в таких ситуациях сперва начинает кричать и предлагает закрыть самое жрущее приложение, а потом и сам делает это. Не самый лучший вариант, конечно, но помогает избежать хард-ресета системы с кучей открытых важных документов ценой прибития какого-нибудь Хрома, который легко можно перезапустить.

/proc/[0-9]*/oom_adj

anonymous
()

Alt+SysRq+F позволит призвать OOM Killer лично, если тот сам не хочет являться.

AITap ★★★★★
()

ОК, прочитал про механизм OOM Killer. По идее, должно происходить то же самое, что и в винде - должен автоматически прибиваться наиболее жрущий память процесс с самым низким приоритетом.

Вопрос - почему это не происходит?

У меня tmpfs на 2ГБ, htop и остальные утилиты показывают эту память, как занятую кешем, но в отличие от кеша, она не освобождается по первому требованию ядра. Она вообще никогда сама не освобождается. Может ли это быть причиной - ядро думает, что еще есть куча свободной памяти, из которой при необходимости можно выгнать кеш, и не запускает OOM Killer, но по факту этой памятью никак воспользоваться не может?

klazutin
() автор топика
Ответ на: комментарий от sergej

гугли copy-on-write и вообще про выделение памяти в юникс системах.

Обязательно почитаю, спасибо. Но сейчас вы можете мне сказать, почему ситуация oom в моей системе не обрабатывается, как должна?

klazutin
() автор топика
Ответ на: комментарий от trycatch

Я просто использую indicator-multiload, чтобы постоянно видеть объем занятой памяти.

Да, это понятно, что можно вручную следить. Но меня больше интересует, почему автоматический механизм не работает. А если у меня необслуживаемый сервер? Я же не должен проверять каждые пять минут, как у него дела с памятью.

klazutin
() автор топика
Ответ на: комментарий от klazutin

Она во всех системах так обрабатывается. Используй ulimit или какие-нибудь cgroups для ограничения прожорливости.

А то что юниксы при нехватке ресурсов обычно встают колом можно считать фичей.

sergej ★★★★★
()
Ответ на: комментарий от trycatch

а мне больше нравится когда всё нужная мне информация отображается сразу в виде простых и понятных цифр, а не в виде мелких картинок.

mm3 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.