Michal Hocko wrote: > On Wed 29-04-15 08:55:06, Johannes Weiner wrote: > > What we can do to mitigate this is tie the timeout to the setting of > > TIF_MEMDIE so that the wait is not 5s from the point of calling > > out_of_memory() but from the point of where TIF_MEMDIE was set. > > Subsequent allocations will then go straight to the reserves. > > That would deplete the reserves very easily. Shouldn't we rather > go other way around? Allow OOM killer context to dive into memory > reserves some more (ALLOC_OOM on top of current ALLOC flags and > __zone_watermark_ok would allow an additional 1/4 of the reserves) and > start waiting for the victim after that reserve is depleted. We would > still have some room for TIF_MEMDIE to allocate, the reserves consumption > would be throttled somehow and the holders of resources would have some > chance to release them and allow the victim to die. Does OOM killer context mean memory allocations which can call out_of_memory()? If yes, there is no guarantee that such memory reserve is used by threads which the OOM victim is waiting for, for they might do only !__GFP_FS allocations. Likewise, there is possibility that such memory reserve is used by threads which the OOM victim is not waiting for, for malloc() + memset() causes __GFP_FS allocations. -- 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>