Hi Michal, On 05/17/2016 10:57 AM, Michal Hocko wrote: > On Tue 17-05-16 10:24:20, Sebastian Frias wrote: > [...] >>>> Also, under what conditions would copy-on-write fail? >>> >>> When you have no memory or swap pages free and you touch a COW page that >>> is currently shared. At that point there is no resource to back to the >>> copy so something must die - either the process doing the copy or >>> something else. >> >> Exactly, and why does "killing something else" makes more sense (or >> was chosen over) "killing the process doing the copy"? > > Because that "something else" is usually a memory hog and so chances are > that the out of memory situation will get resolved. If you kill "process > doing the copy" then you might end up just not getting any memory back > because that might be a little forked process which doesn't own all that > much memory on its own. That would leave you in the oom situation for a > long time until somebody actually sitting on some memory happens to ask > for CoW... See the difference? > I see the difference, your answer seems a bit like the one from Austin, basically: - killing a process is a sort of kernel protection attempting to deal "automatically" with some situation, like deciding what is a 'memory hog', or what is 'in infinite loop', "usually" in a correct way. It seems there's people who think its better to avoid having to take such decisions and/or they should be decided by the user, because "usually" != "always". And people who see that as a nice thing but complex thing to do. In this thread we've tried to explain why this heuristic (and/or OOM-killer) is/was needed and/or its history, which has been very enlightening by the way. >From reading Documentation/cgroup-v1/memory.txt (and from a few replies here talking about cgroups), it looks like the OOM-killer is still being actively discussed, well, there's also "cgroup-v2". My understanding is that cgroup's memory control will pause processes in a given cgroup until the OOM situation is solved for that cgroup, right? If that is right, it means that there is indeed a way to deal with an OOM situation (stack expansion, COW failure, 'memory hog', etc.) in a better way than the OOM-killer, right? In which case, do you guys know if there is a way to make the whole system behave as if it was inside a cgroup? (*) Best regards, Sebastian (*): I tried setting up a simple test but failed, so I think I need more reading :-) -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>