On Thu 18-05-17 11:57:55, Cristopher Lameter wrote: > On Thu, 18 May 2017, Michal Hocko wrote: > > > > Nope. The OOM in a cpuset gets the process doing the alloc killed. Or what > > > that changed? > > !!!!! > > > > > > > At this point you have messed up royally and nothing is going to rescue > > > you anyways. OOM or not does not matter anymore. The app will fail. > > > > Not really. If you can trick the system to _think_ that the intersection > > between mempolicy and the cpuset is empty then the OOM killer might > > trigger an innocent task rather than the one which tricked it into that > > situation. > > See above. OOM Kill in a cpuset does not kill an innocent task but a task > that does an allocation in that specific context meaning a task in that > cpuset that also has a memory policty. No, the oom killer will chose the largest task in the specific NUMA domain. If you just fail such an allocation then a page fault would get VM_FAULT_OOM and pagefault_out_of_memory would kill a task regardless of the cpusets. > Regardless of that the point earlier was that the moving logic can avoid > creating temporary situations of empty sets of nodes by analysing the > memory policies etc and only performing moves when doing so is safe. How are you going to do that in a raceless way? Moreover the whole discussion is about _failing_ allocations on an empty cpuset and mempolicy intersection. -- Michal Hocko SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html