On Thu 28-01-21 15:56:36, Cristopher Lameter wrote:
On Thu, 28 Jan 2021, Michal Hocko wrote:
If you kill the allocating process then yes, it would work, but your process might be the very last to be selected.
OOMs are different if you have a "constrained allocation". In that case it is the fault of the process who wanted memory with certain conditions. That memory is not available. General memory is available though. In that case the allocating process is killed.
I do not see this implementation would do anything like that. Neither anything like that implemented in the oom killer. Constrained allocations (cpusets/memcg/mempolicy) only do restrict their selection to processes which belong to the same domain. So I am not really sure what you are referring to. The is only a global knob to _always_ kill the allocating process on OOM.
Constrained allocations refer to allocations where the NUMA nodes are restricted or something else does not allow the use of arbitrary memory. The OOM killer changes its behavior.
Yes as described in the above paragraph.
In the past we fell back to killing the calling process.
Yeah, but this is no longer the case since 6f48d0ebd907a (more than 10 years ago.
Anyway this is not really important because if you want to kill the allocating task because there is no chance the fault can succed then there is a SIGBUS as already mentioned.