Вы смотрите free -h, видите гигабайты свободной памяти, и через минуту получаете «Killed process» в dmesg. Или наоборот — приложение вызывает malloc() на объём, который заведомо больше физической RAM сервера, и вызов молча успевает. Это не баг и не мистика: так работает overcommit памяти в Linux — ядро сознательно выдаёт обещания, которые не всегда способно сдержать. Разберём, зачем это сделано именно так, что происходит, когда обещание приходится исполнять, и как отличить безопасную ситуацию от той, что закончится убитым процессом.
Подробнее →