From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-23.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 74215C433C1 for ; Sat, 20 Mar 2021 04:05:22 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id CE79B61966 for ; Sat, 20 Mar 2021 04:05:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CE79B61966 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 3A12F8D0005; Sat, 20 Mar 2021 00:05:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 352318D0002; Sat, 20 Mar 2021 00:05:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1F1E38D0005; Sat, 20 Mar 2021 00:05:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0060.hostedemail.com [216.40.44.60]) by kanga.kvack.org (Postfix) with ESMTP id 0506C8D0002 for ; Sat, 20 Mar 2021 00:05:20 -0400 (EDT) Received: from smtpin28.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id A4B62181C77AE for ; Sat, 20 Mar 2021 04:05:20 +0000 (UTC) X-FDA: 77938912800.28.267C9DE Received: from mail-qt1-f201.google.com (mail-qt1-f201.google.com [209.85.160.201]) by imf28.hostedemail.com (Postfix) with ESMTP id 298E0200024B for ; Sat, 20 Mar 2021 04:05:19 +0000 (UTC) Received: by mail-qt1-f201.google.com with SMTP id s14so9986450qtw.20 for ; Fri, 19 Mar 2021 21:05:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=MEqC6ND18f4uwCsg8PPVWMozf20ktbFfNKIjRayWFO0=; b=NIKXYG/RsuJnMyNHvqF7tnxKhcVoSDiqmPW+ZlhZtZ5jGoQIYxuSs8p2n23MfmIIZA JQ9rolZMIkRv2LOIBB1leKBmazwJgUeqIz4QvsD5vNGDMecfCIh1VHGB9Dw/6ioxByOD N+pReeldiKfNQeWcgLUps/j1vwqNDpkGOhZfIrs+Dp6lC1VGp3QBOHPL4J2TqTM+r/3h 4TPZ9u35WukhcIQ6uv0Xsp4+u4Giwu6HygmtcAjgnfHa6LUuVuEqwGyJTVXo0dSaBiGP AZVDpnpyMz63+Mf4QNbtRKhcdVG2jFHfboHxLnoyJo5EcdS11VFfOKmKvm46uiO44LP2 B+ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=MEqC6ND18f4uwCsg8PPVWMozf20ktbFfNKIjRayWFO0=; b=bOTIdhRwIf1hCh1gWhbRwdJbOfKEqVoSxQXReesBbdQ8DFAy8CmOmEPodKUTyLD9UI sMx8zbz51yULe9e8/yZ+szwxDi6oTNvzSxZ25l6OWdcHxRjDJDhjcXd9gYDHmcFfioG9 LC648HAuIWYnpK/EIi8eHzBN54wajVmeNQU7wuGeky3DviWExEb4ZBA6urhqto185nyE Kpx1oZ96uuspbTZhxkB8OBi8KRjKNBCKdbqiYHi4U6D3pYWb6fGHjl/0F5nmlTcPHCD5 avN3tTPI5XATJshq+oC13BV7UOfe+E9+PAdgr08g7kUQotbVDMo2Y2SsUB12DdGUG3tz 1w/w== X-Gm-Message-State: AOAM531jo+U33UYPyUY6NmwE5PJOUooqTKiwkDlXHyukl/9kzZqw7Sv0 paXYgoA1cSwwxfQMJYYByl5P34n4j221 X-Google-Smtp-Source: ABdhPJxHyEYhUNSnHZwiqkOA7JsVxIg3O8auDaAGmgRwFkhTvF83gN65N9zAcBslomWDJ8ZmBvcSOa6eCsBw X-Received: from gthelen2.svl.corp.google.com ([2620:15c:2cd:202:39de:1aa5:57c4:5867]) (user=gthelen job=sendgmr) by 2002:a0c:bdaf:: with SMTP id n47mr12191600qvg.48.1616213119212; Fri, 19 Mar 2021 21:05:19 -0700 (PDT) Date: Fri, 19 Mar 2021 21:05:17 -0700 In-Reply-To: <20210305000002.D171810D@viggo.jf.intel.com> Message-Id: Mime-Version: 1.0 References: <20210304235949.7922C1C3@viggo.jf.intel.com> <20210305000002.D171810D@viggo.jf.intel.com> Subject: Re: [PATCH 07/10] mm/vmscan: add helper for querying ability to age anonymous pages From: Greg Thelen To: Dave Hansen , linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, Dave Hansen , rientjes@google.com, ying.huang@intel.com, dan.j.williams@intel.com, david@redhat.com, osalvador@suse.de Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 298E0200024B X-Stat-Signature: moethiyxou7xucrnhf515zqc1ezmic3o Received-SPF: none (flex--gthelen.bounces.google.com>: No applicable sender policy available) receiver=imf28; identity=mailfrom; envelope-from="<3f3RVYAcKCMYs5tqxqzs00sxq.o0yxuz69-yyw7mow.03s@flex--gthelen.bounces.google.com>"; helo=mail-qt1-f201.google.com; client-ip=209.85.160.201 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1616213119-210357 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Dave Hansen wrote: > From: Dave Hansen > > Anonymous pages are kept on their own LRU(s). These lists could > theoretically always be scanned and maintained. But, without swap, > there is currently nothing the kernel can *do* with the results of a > scanned, sorted LRU for anonymous pages. > > A check for '!total_swap_pages' currently serves as a valid check as > to whether anonymous LRUs should be maintained. However, another > method will be added shortly: page demotion. > > Abstract out the 'total_swap_pages' checks into a helper, give it a > logically significant name, and check for the possibility of page > demotion. Reviewed-by: Greg Thelen > Signed-off-by: Dave Hansen > Cc: David Rientjes > Cc: Huang Ying > Cc: Dan Williams > Cc: David Hildenbrand > Cc: osalvador > --- > > b/mm/vmscan.c | 28 +++++++++++++++++++++++++--- > 1 file changed, 25 insertions(+), 3 deletions(-) > > diff -puN mm/vmscan.c~mm-vmscan-anon-can-be-aged mm/vmscan.c > --- a/mm/vmscan.c~mm-vmscan-anon-can-be-aged 2021-03-04 15:35:58.935806422 -0800 > +++ b/mm/vmscan.c 2021-03-04 15:35:58.942806422 -0800 > @@ -2517,6 +2517,26 @@ out: > } > } > > +/* > + * Anonymous LRU management is a waste if there is > + * ultimately no way to reclaim the memory. > + */ > +bool anon_should_be_aged(struct lruvec *lruvec) Should this be static? > +{ > + struct pglist_data *pgdat = lruvec_pgdat(lruvec); > + > + /* Aging the anon LRU is valuable if swap is present: */ > + if (total_swap_pages > 0) > + return true; > + > + /* Also valuable if anon pages can be demoted: */ > + if (next_demotion_node(pgdat->node_id) >= 0) > + return true; > + > + /* No way to reclaim anon pages. Should not age anon LRUs: */ > + return false; > +} > + > static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc) > { > unsigned long nr[NR_LRU_LISTS]; > @@ -2626,7 +2646,8 @@ static void shrink_lruvec(struct lruvec > * Even if we did not try to evict anon pages at all, we want to > * rebalance the anon lru active/inactive ratio. > */ > - if (total_swap_pages && inactive_is_low(lruvec, LRU_INACTIVE_ANON)) > + if (anon_should_be_aged(lruvec) && > + inactive_is_low(lruvec, LRU_INACTIVE_ANON)) > shrink_active_list(SWAP_CLUSTER_MAX, lruvec, > sc, LRU_ACTIVE_ANON); > } > @@ -3455,10 +3476,11 @@ static void age_active_anon(struct pglis > struct mem_cgroup *memcg; > struct lruvec *lruvec; > > - if (!total_swap_pages) > + lruvec = mem_cgroup_lruvec(NULL, pgdat); > + > + if (!anon_should_be_aged(lruvec)) > return; > > - lruvec = mem_cgroup_lruvec(NULL, pgdat); > if (!inactive_is_low(lruvec, LRU_INACTIVE_ANON)) > return; > > _