LINUX.ORG.RU
ФорумAdmin

Перезагрузка из-за переполнения ОЗУ


0

1

Ситуация: вычислительный кластер, на узлах запускается приложение в 20 потоков потребляющее много памяти. В один момент ОЗУ заканчивается и узлы тут же уходят в перезагрузку. Что бы пользовательское приложение уводило систему в перезагрузку мне кажется мало вероятным, более вероятным кажется, что систему выводит из строя либо какая-то служба (например, ganglia), либо драйвер Infiniband. Если что ОС Redhat 6, ОЗУ 64Гб, своп 2 Гб. Что можно сделать?

★★★★★
Ответ на: комментарий от vel

Вообще надо понять почему резко кончается память.

Память заканчивается, потому что прикладному процессу её мало (решается задача молекулярной динамики на кластере).

overcommit_memory=2

пошёл смотреть

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

overcommit_memory=2

Походу пока кандидат на решение, прикладной процесс слетел с :

Out of memory
Operating system error: Cannot allocate memory
Что в принципе правильно в моей ситуации.

Теперь бы понять как правильно настроить остальные параметры.

В идеале мне надо запретить пользовательским процессам тратить больше 62Гб из 64Гб имеющихся

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

Ты с этим поосторожней. Для начала сделай

vm.overcommit_ratio = 100
Не меньше.

Этот параметр регулирует размер выделяемой виртуальной памяти, которую приложения всегда берут с запасом. Например firefox может физически использовать 200Мб, но запросить виртуальной памяти на 1Гб. Поэтому по умолчанию (overcommit_memory=0) ядро может дать памяти больше чем физически доступно. Это, конечно, имеет свои минусы.

anonymous
()
Ответ на: комментарий от AlexVR

Данные по выделенной виртуальной памяти и лимиту выдачи

grep Commit /proc/meminfo

anonymous
()
Ответ на: комментарий от true_admin

Алгоритм чего?

Того, что считает ТС. Что бы не жрало так много. (И возможно что бы не текло.) Но это больше так, заметка на полях.

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

Того, что считает ТС. Что бы не жрало так много. (И возможно что бы не текло.) Но это больше так, заметка на полях.

Считает пакет espresso-quantum. И в данном случае дали слишком большую модель на вход. Такие ситуации могут случаться и мне нужен механизм защиты отрубающий приложения, а не систему.

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

Если обезопасить систему и ограничить приложение — то этот механизм — ulimits. Странно, что его ещё не упамянули.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

Вопрос только что лимитировать - число процессов или VA

Кстати, кроме ulimits есть еще и cgroups со своими лимитами памяти.

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

И средствами тюнинга oom killer-а. А ещё оно умеет заблаговременно отправлять процессу предупреждение что оно исчерпало «мягкий лимит» памяти и если не прекратит жрать в три горла то будет ему oom. Возможно espresso-quantum даже умеет ловить такие предупреждения и предпринимать какие-то разумные действия.

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

мне нужен механизм защиты отрубающий приложения, а не систему.

а) ulimit, limits.conf, или
б) конфигурирование средствами приложения, если это возможно.

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