Всем привет.
Девопсы настраивают OOM killer, чтобы процессы в контейнере не потребляли памяти больше заданного порога. Софт в контейнере - некоторая самопальная СУБД, которая все данные хранит в памяти. Если пользователь загружает данных в СУБД больше порога, OOM killer благополучно убивает процесс, и девопсы бегут к разработчикам разбираться, почему сервер в очередной раз упал :-)
В общем, чтобы девопсы отвалили, хочу в сервер добавить параметр максимального потребления ОЗУ, чтобы он знал что нельзя выделять памяти больше, чем стоит в ограничении.
Понимаю, что можно заменить аллокатор в new/delete, и перед выделением данных в динамической памяти проверять этот порог, но может есть готовые решения? хотя бы для линукса, допустим в glibc может какая функция есть, которая в глобальную переменную в malloc порог запишет?
Или может быть в настройках процессов можно искусственно ограничить процесс, чтобы при привышении порога malloc возвращал nullptr?