LINUX.ORG.RU

TLDR; никак.

Отвечу недавней пастой из соседнего чата:

  1. Большинство приложений не обрабатывают ошибки выделения, это может приводить к неожиданному поведению.

  2. Трудно найти оптимальное значение overcommit ratio, хотя это может быть не проблема не сервере с предсказуемой нагрузкой. - Если выставить большой ratio, то получим тот же эффект, что и при наличии дефолтного оверкоммита, и будет приходить киллер. При низком overcommit ratio просто получим неполную утилизацию физической памяти. - Процессы будуть падать при полупустом свопе или при полупустой памяти. - Если нужно огараничить память, то лучше использовать контрольные группы и MemoryMax и MemorySwapMax - эти параметры ограничивают физическую память, а не виртуальную, в отличие от случая с запретом оверкоммита. Еще альтератива - юзерспейсный демон earlyoom - он сначала отправляет SIGTERM, завершая процессы по возможности более корректно

  3. Я знаю один способ отключения киллера - panic on oom. Разве есть другие? 2. оом киллер надо не отключать, а вызывать по возможности раньше. Не вызванный киллер - умершая система. Киллер - это лекарство от смерти. «если уж хочется жить без oom» - то я предпочитаю earlyoom - процессы завершаются по SIGTERM, до дедлоков с зависаниями не доходит дело.

Ограничение оверкоммита не всегда означает отключение киллера - многое еще зависит от overcommit ratio

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

hakavlad ★★★
()

но регулярно закрываются браузеры хром\фф

earlyoom -m 4 --prefer "^Web Content$"

Спрашивайте ответы, если все еще не все понятно.

hakavlad ★★★
()
Последнее исправление: hakavlad (всего исправлений: 1)

но регулярно закрываются браузеры хром\фф как исправить?

2 пути.

  1. vm.overcommit_ratio=1000

  2. vm.overcommit_memory=0 (или вообще 1)

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

раньше при overcommit_memory=OVERCOMMIT_GUESS браузеры отжирали всю память спустя какое то время, затем ловил замораживание системы
даже при установленном earlyoom браузеры будут закрываться когда отожрут много памяти

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

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

все равно не могу понять-свободно половина памяти но браузеры регулярно падают
если их кикает оом киллер то по каким параметрам? память для роста еще есть

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

даже при установленном earlyoom браузеры будут закрываться когда отожрут много памяти

Это нормально. Это лучше, чем зависание с потерей работы всей системы. см. https://www.opennet.ru/opennews/art.shtml?num=51231

Установка earlyoom - это лучше, чем ограничение оверкоммита.

hakavlad ★★★
()

24гб озу без своп

но регулярно закрываются браузеры хром\фф

Для современного браузера маловато будет.

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

половина памяти но браузеры регулярно падают если их кикает оом киллер то по каким параметрам?

При ограничении оверкоммита проги падают из-за невозможности выделить виртуальную память, а не из-за того, что их убивает киллер.

По дефолту оверкоммит разрешен, и программы обычно не падают при полупустом свопе.

Киллер приходит при исчерпании свободной физической памяти, хотя и не всегда.

hakavlad ★★★
()
Последнее исправление: hakavlad (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.