From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965962AbdDSXYx (ORCPT ); Wed, 19 Apr 2017 19:24:53 -0400 Received: from mail-io0-f172.google.com ([209.85.223.172]:33401 "EHLO mail-io0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965908AbdDSXYu (ORCPT ); Wed, 19 Apr 2017 19:24:50 -0400 Date: Wed, 19 Apr 2017 16:24:48 -0700 (PDT) From: David Rientjes X-X-Sender: rientjes@chino.kir.corp.google.com To: Minchan Kim cc: Andrew Morton , Johannes Weiner , Mel Gorman , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [patch] mm, vmscan: avoid thrashing anon lru when free + file is low In-Reply-To: <20170419001405.GA13364@bbox> Message-ID: References: <20170418013659.GD21354@bbox> <20170419001405.GA13364@bbox> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) 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 On Wed, 19 Apr 2017, Minchan Kim wrote: > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 24efcc20af91..5d2f3fa41e92 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -2174,8 +2174,17 @@ static void get_scan_count(struct lruvec *lruvec, struct mem_cgroup *memcg, > } > > if (unlikely(pgdatfile + pgdatfree <= total_high_wmark)) { > - scan_balance = SCAN_ANON; > - goto out; > + /* > + * force SCAN_ANON if inactive anonymous LRU lists of > + * eligible zones are enough pages. Otherwise, thrashing > + * can be happen on the small anonymous LRU list. > + */ > + if (!inactive_list_is_low(lruvec, false, NULL, sc, false) && > + lruvec_lru_size(lruvec, LRU_INACTIVE_ANON, sc->reclaim_idx) > + >> sc->priority) { > + scan_balance = SCAN_ANON; > + goto out; > + } > } > } > Hi Minchan, This looks good and it correctly biases against SCAN_ANON for my workload that was thrashing the anon lrus. Feel free to use parts of my changelog if you'd like. Tested-by: David Rientjes