Может ли убийца OOM ядра Linux убить процесс, даже если доступно достаточно места для подкачки? Этот ссылка на сайт в разделе 13.2 предполагает, что если есть доступное пространство подкачки, то убийца OOM не убьет процесс.
Теперь я внес изменения в ядро Linux и полностью прекратил подкачку анонимных страниц, и, следовательно, всегда есть свободное пространство подкачки. Но все же я наблюдаю процессы убийства OOM.
Однако эта документация может быть устаревшей. Может ли кто-нибудь дать представление о том, какие проверки выполняются до того, как OOM действительно уничтожит процесс в последней версии ядра Linux (v-5.x.x)?
@wxz, AFAIK и в соответствии с тем, что я наблюдал, OOM не будет вызываться, если доступно достаточно места для подкачки. Но я хотел знать, какие именно политики в настоящее время используются в ядре Linux в отношении вызова OOM.
out_of_memory вызывается при сбое alloc_page. своп не проверяется.





Проверьте свою переменную
/proc/sys/vm/min_free_kbytes. По моему опыту, всякий раз, когда ваша свободная память падает ниже этой переменной, вызывается убийца OOM независимо от пространства подкачки.