Процессы сжирают память и вешают систему

Доброго времени суток!

Есть такая проблема.
Есть машинка с 8ю ядрами и 8ю гигами памяти на борту, предназначенная для проведения ресурсоемких вычислений.
Своп отключен, так как если задача начинает свопиться, то говорить об эффективности вычислений смысла нет.
Итак. Бывают процессы, которые постепенно сжирают всю память. 8 гигов.
После этого система начинает подвисать. ПО ssh на нее зайти невозможно (out of memory).
Вообщем машина становится полностью недоступной.
Пробовал включать oom_killer в ядре, чтобы убивать процессы, которые сжирают всю память.
Но при этом убиваются и ряд других процессов, которые пытаются получить хоть какие-то ресурсы.
В последний раз в число таких "хороших" процессов попали sshd, crond и ряд подобных.
Причем ситуация еще осложняется тем, что может быть запущенно одновременно 8 процессов, которые делят между собой память.
В этом случае oom_killer работает вообще не понять как. Чаще всего вообще ничего не далает и система продолжает висеть.
Какие есть пути решения? Может быть можно как-то ограничивать память для процессов?
Или есть какие-то более правильные решения?

Чистая теория

Если я правильно понимаю, то у вас отключен swap и машина периодически
зависает по причине отсутствия доступной памяти, а выяснить куда делась
оперативная память вы не можете т.к. в это время к машине нет доступа.
Самое логично, это включить swap и при наличии замедления в работе
без проблем выяснить куда делась оперативная память.

Отключение swap не дает вам выигрыша в производительности, а только приводит
к проблемам.

Памяти больше поставить. Или

Памяти больше поставить.
Или включить swap.

ulimit не поможет?

ulimit не поможет?

ну вообще свап отключать

ну вообще свап отключать мягко говоря тупо. потому что свапится только то что

  • Давно не используется
  • Чему то не хватает памяти (скажем у поцесса паямть течет)

Так что идея с вырубанием свапа тупа по своей природе
К тому же политика свапинга настраивается. ( как читать в гугле на предмет swappines )

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

насколько я помню, достаточно

насколько я помню, достаточно давно swappines на автопилоте.

неправильное решение

, но поможет дальнейшему тестированию, т.к. не даст oom_killer убить жизненно важные процессы, такие как sshd:

    for pid in $(pidof sshd) ; do
            echo "disabling oom on pid $pid"
            echo -17 | sudo tee /proc/$pid/oom_adj > /dev/null
    done

подсмотрено тут и в свое время помогло спасти много времени при настройке очень дохленького на мозги и дисковое пространство VPS.

Ну а в целом, проблему надо решать:
а) увеличением памяти
б) включением свопа
с) переорганизацией загрузки сервера.

Да пребудет с тобой великий Linux.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".