Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754068AbcDFAzx (ORCPT ); Tue, 5 Apr 2016 20:55:53 -0400 Received: from mail-pf0-f180.google.com ([209.85.192.180]:36772 "EHLO mail-pf0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751907AbcDFAzw (ORCPT ); Tue, 5 Apr 2016 20:55:52 -0400 Date: Tue, 5 Apr 2016 17:55:39 -0700 (PDT) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Andrew Morton cc: Michal Hocko , Linus Torvalds , Johannes Weiner , Mel Gorman , David Rientjes , Tetsuo Handa , Joonsoo Kim , Hillf Danton , linux-mm@kvack.org, LKML , Michal Hocko , Hugh Dickins Subject: Re: [PATCH 09/11] mm, compaction: Abstract compaction feedback to helpers In-Reply-To: <20160405165826.012236e79db7f396fda546a8@linux-foundation.org> Message-ID: References: <1459855533-4600-1-git-send-email-mhocko@kernel.org> <1459855533-4600-10-git-send-email-mhocko@kernel.org> <20160405165826.012236e79db7f396fda546a8@linux-foundation.org> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2574 Lines: 65 On Tue, 5 Apr 2016, Andrew Morton wrote: > On Tue, 5 Apr 2016 13:25:31 +0200 Michal Hocko wrote: > > - if (is_thp_gfp_mask(gfp_mask)) { > > - /* > > - * If compaction is deferred for high-order allocations, it is > > - * because sync compaction recently failed. If this is the case > > - * and the caller requested a THP allocation, we do not want > > - * to heavily disrupt the system, so we fail the allocation > > - * instead of entering direct reclaim. > > - */ > > - if (compact_result == COMPACT_DEFERRED) > > - goto nopage; > > - > > - /* > > - * Compaction is contended so rather back off than cause > > - * excessive stalls. > > - */ > > - if(compact_result == COMPACT_CONTENDED) > > - goto nopage; > > - } > > + /* > > + * Checks for THP-specific high-order allocations and back off > > + * if the the compaction backed off > > + */ > > + if (is_thp_gfp_mask(gfp_mask) && compaction_withdrawn(compact_result)) > > + goto nopage; > > This change smashed into Hugh's "huge tmpfs: shmem_huge_gfpmask and > shmem_recovery_gfpmask". > > I ended up doing this: > > /* Checks for THP-specific high-order allocations */ > if (!is_thp_allocation(gfp_mask, order)) > migration_mode = MIGRATE_SYNC_LIGHT; > > /* > * Checks for THP-specific high-order allocations and back off > * if the the compaction backed off > */ > if (is_thp_allocation(gfp_mask) && compaction_withdrawn(compact_result)) > goto nopage; You'll already have found that is_thp_allocation() needs the order too. But then you had to drop a hunk out of his 10/11 also to fit with mine. What you've done may be just right, but I haven't had time to digest Michal's changes yet (and not yet seen what happens to the PF_KTHREAD distinction), so I think it will probably end up better if you take his exactly as he tested and posted them, and drop my 30/31 and 31/31 for now - I can resubmit them (or maybe drop 30 altogether) after I've pondered and tested a little on top of Michal's. Huge tmpfs got along fine for many months without 30/31 and 31/31: 30 is just for experimentation, and 31 to reduce the compaction stalls we saw under some loads. Maybe I'll find that Michal's rework has changed the balance there anyway, and something else or nothing at all needed. (The gfp_mask stuff was very confusing, and it's painful for me, how ~__GFP_KSWAPD_RECLAIM gets used as a secret password to say "THP" and how to angle compaction - or maybe it's all more straightforward now.) Many thanks for giving us both this quick exposure! Hugh