On Wed, Mar 21, 2018 at 09:59:28PM +0100, Michal Hocko wrote: > From: Michal Hocko <mhocko@xxxxxxxx> > > David has noticed that THP memcg charge can trigger the oom killer > since 2516035499b9 ("mm, thp: remove __GFP_NORETRY from khugepaged and > madvised allocations"). We have used an explicit __GFP_NORETRY > previously which ruled the OOM killer automagically. > > Memcg charge path should be semantically compliant with the allocation > path and that means that if we do not trigger the OOM killer for costly > orders which should do the same in the memcg charge path as well. > Otherwise we are forcing callers to distinguish the two and use > different gfp masks which is both non-intuitive and bug prone. Not to > mention the maintenance burden. > > Teach mem_cgroup_oom to bail out on costly order requests to fix the THP > issue as well as any other costly OOM eligible allocations to be added > in future. > > Fixes: 2516035499b9 ("mm, thp: remove __GFP_NORETRY from khugepaged and madvised allocations") > Reported-by: David Rientjes <rientjes@xxxxxxxxxx> > Signed-off-by: Michal Hocko <mhocko@xxxxxxxx> I also prefer this fix over having separate OOM behaviors (which is user-visible, and not just about technical ability to satisfy the allocation) between the allocator and memcg. Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx>