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=-12.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 0BFE4C433E0 for ; Tue, 9 Mar 2021 00:15:00 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 752A1614A7 for ; Tue, 9 Mar 2021 00:14:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 752A1614A7 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 0A0678D0094; Mon, 8 Mar 2021 19:14:59 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0501B8D007F; Mon, 8 Mar 2021 19:14:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E32CB8D0094; Mon, 8 Mar 2021 19:14:58 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0069.hostedemail.com [216.40.44.69]) by kanga.kvack.org (Postfix) with ESMTP id C3CA98D007F for ; Mon, 8 Mar 2021 19:14:58 -0500 (EST) Received: from smtpin22.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 858CC1EF3 for ; Tue, 9 Mar 2021 00:14:58 +0000 (UTC) X-FDA: 77898415476.22.810A24F Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) by imf22.hostedemail.com (Postfix) with ESMTP id 2CBEDC0001EE for ; Tue, 9 Mar 2021 00:14:56 +0000 (UTC) Received: by mail-ed1-f47.google.com with SMTP id w9so17325333edt.13 for ; Mon, 08 Mar 2021 16:14:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=yUB3jp73XK4SAneJ1S8s1LTi7ahcluSZc6auK97PcQI=; b=QykJj0vYvhQmts0pIy+A4Qt6Pjibu8bZoP1PN1A/jHUPOUgk9i8sFS+MU7Ggy6Q6Aw ifGuJ29sMKqKs/YX1RDA+VYqhzf60T2HxmzwFFZSNtKV3kPzkpXoD1frqGZCcy9KYbj6 0eu90B4UOopBnUzYTozx2D96uhSls4DTc/ZR9CyIUngyvY73CbcUuOulBRvY+QFVKV4/ 4RynYbQyxF78//Z8M5KneWbE9XHb3WhZEKDmUcu0cftSEgqo/zhYi5EBV7i/RKADId23 FD6PzqrB76YNivvfpoCgiSTNhd1SNFEy9fM7V/1xdba7rIn5llmp8hyeIWqwMIh2dx6x hU1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=yUB3jp73XK4SAneJ1S8s1LTi7ahcluSZc6auK97PcQI=; b=Q0CzyVYc5NwlsAw0gEVt4MPkFWLbV/9nHpj/dcpuvDH0LaBGlLPRtvCDaEk4pGBrqA ZqfQM25ox1HJacn1aQRJrkA+2TEuArqtU2nabYm/iouDGTg46PBvImr6OEzDNb/EFzMw GcPzm9MrnhY9mFIj2k6EdGmS+3XuXbWaEaQ+X4eG59+w+sDk/o3kCYJMHRBPmY3O8clK TLAjO1yEesY1ZLgrg42tfCAAK6exyJStSbpKHWWBaCj6gX9VdL6HKcthnmzx4Pj3BTm6 n4ppwjgPll4gp5t48kkkTbmWr2wDNeuPlDwHv/8BgBlaMA7TZ7WKstPfnzeKIdFWqTf3 p9cw== X-Gm-Message-State: AOAM533zLgo+54+WzA6S21yNt4/hEYiI2/BJljOayknRozLoP6LxJjAG Ron3ipPnCDUqnmP/s6cvq6v5QHqXFpZBvsVL8dI= X-Google-Smtp-Source: ABdhPJwAZ9Gu4Mkmbmz3iAeQ075ICY/IWk1U0j4xtGyghi+zOeZFzliOGslqaZmXlUDpsMDX+wmHUTPH0utLNvWAmIg= X-Received: by 2002:a50:bec3:: with SMTP id e3mr1094426edk.290.1615248897079; Mon, 08 Mar 2021 16:14:57 -0800 (PST) MIME-Version: 1.0 References: <20210304235949.7922C1C3@viggo.jf.intel.com> <20210305000002.D171810D@viggo.jf.intel.com> In-Reply-To: <20210305000002.D171810D@viggo.jf.intel.com> From: Yang Shi Date: Mon, 8 Mar 2021 16:14:45 -0800 Message-ID: Subject: Re: [PATCH 07/10] mm/vmscan: add helper for querying ability to age anonymous pages To: Dave Hansen Cc: Linux Kernel Mailing List , Linux MM , David Rientjes , Huang Ying , Dan Williams , David Hildenbrand , Oscar Salvador Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: 7j31uhrhthkmhwfb4ee4iszsrjtiaodi X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 2CBEDC0001EE Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf22; identity=mailfrom; envelope-from=""; helo=mail-ed1-f47.google.com; client-ip=209.85.208.47 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1615248896-475717 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: On Thu, Mar 4, 2021 at 4:01 PM 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: Yang Shi > > 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) > +{ > + 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; > > _ >