Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752736AbcD2Jl4 (ORCPT ); Fri, 29 Apr 2016 05:41:56 -0400 Received: from mail-wm0-f47.google.com ([74.125.82.47]:38354 "EHLO mail-wm0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751215AbcD2Jly (ORCPT ); Fri, 29 Apr 2016 05:41:54 -0400 Date: Fri, 29 Apr 2016 11:41:52 +0200 From: Michal Hocko To: Russell King - ARM Linux Cc: Andrew Morton , linux-mm@kvack.org, LKML , linux-arch@vger.kernel.org Subject: Re: [PATCH 04/20] arm: get rid of superfluous __GFP_REPEAT Message-ID: <20160429094152.GF21977@dhcp22.suse.cz> References: <1461849846-27209-1-git-send-email-mhocko@kernel.org> <1461849846-27209-5-git-send-email-mhocko@kernel.org> <20160428145545.GN19428@n2100.arm.linux.org.uk> <20160428150831.GK31489@dhcp22.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160428150831.GK31489@dhcp22.suse.cz> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1961 Lines: 46 On Thu 28-04-16 17:08:31, Michal Hocko wrote: > On Thu 28-04-16 15:55:45, Russell King - ARM Linux wrote: > > On Thu, Apr 28, 2016 at 03:23:50PM +0200, Michal Hocko wrote: > > > From: Michal Hocko > > > > > > __GFP_REPEAT has a rather weak semantic but since it has been introduced > > > around 2.6.12 it has been ignored for low order allocations. > > > > > > PGALLOC_GFP uses __GFP_REPEAT but none of the allocation which uses > > > this flag is for more than order-2. This means that this flag has never > > > been actually useful here because it has always been used only for > > > PAGE_ALLOC_COSTLY requests. > > > > I'm unconvinced. Back in 2013, I was seeing a lot of failures, so: > > > > commit 8c65da6dc89ccb605d73773b1dd617e72982d971 > > Author: Russell King > > Date: Sat Nov 30 12:52:31 2013 +0000 > > > > ARM: pgd allocation: retry on failure > > > > Make pgd allocation retry on failure; we really need this to succeed > > otherwise fork() can trigger OOMs. > > > > Signed-off-by: Russell King > > > > Maybe something has changed again in the MM layer which makes this flag > > unnecessary again, and it was a temporary blip around that time, I don't > > know. > > PAGE_ALLOC_COSTLY_ORDER is defined to order 3 since 2007 and even before > the code was doing > - if ((order <= 3) || (gfp_mask & __GFP_REPEAT)) > + if ((order <= PAGE_ALLOC_COSTLY_ORDER) || > + (gfp_mask & __GFP_REPEAT)) > do_retry = 1; > > So an order-2 allocation which is the case for this particular code now > will trigger the OOM killer and fail only when the current task is > killed by the OOM killer. Other than that order-2 is basically > GFP_NOFAIL. Have a look at __alloc_pages_slowpath() for more details. Does this explanation help? -- Michal Hocko SUSE Labs