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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id E267BC77B73 for ; Wed, 24 May 2023 20:41:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 465636B0074; Wed, 24 May 2023 16:41:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3EEB66B0075; Wed, 24 May 2023 16:41:11 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2689C900002; Wed, 24 May 2023 16:41:11 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 1247D6B0074 for ; Wed, 24 May 2023 16:41:11 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id C3EB0C089D for ; Wed, 24 May 2023 20:41:10 +0000 (UTC) X-FDA: 80826318300.08.1435AC3 Received: from mail-yw1-f173.google.com (mail-yw1-f173.google.com [209.85.128.173]) by imf10.hostedemail.com (Postfix) with ESMTP id B0109C001E for ; Wed, 24 May 2023 20:41:07 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=b2oYxAQq; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf10.hostedemail.com: domain of surenb@google.com designates 209.85.128.173 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684960867; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ZaeuqwRXMmjwIv+MzH1VKtLd8xBGD/U8uHJPJ3TiuKw=; b=AZHVzlIXCyW201NVHkvxjABx5dd8g1YdbU0/zWqkqNni4AbKL/Lo+GlrPjwI5hK/GQq2Nj /cyCP5zWT/mOug7YKaC/EyoSVRep7rZbE+ffL7D0VmKuCfGwHysoqoOzatUUGTEtiEM9eX zT+rIfXaKDj/ubFk3uHqn6iHbHMQkZo= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=b2oYxAQq; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf10.hostedemail.com: domain of surenb@google.com designates 209.85.128.173 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684960867; a=rsa-sha256; cv=none; b=o81TRJJnLZZ8eETJ3u7KAgN0jVGji/tl7qBStcAJ2iwOcopgKjufenyJTwOxJhZN0l3iCc 1ydmI4Yj3fNiqyhoQhALOeRYmJ/ms/j7M2kgCQ2VLhG+Rx/EianosUwa9Gw5lNgombCB/J HUdBbZEP2rLCyQO9+2qnXQ3cQhf5kDU= Received: by mail-yw1-f173.google.com with SMTP id 00721157ae682-561b43fc896so14366107b3.0 for ; Wed, 24 May 2023 13:41:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684960867; x=1687552867; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=ZaeuqwRXMmjwIv+MzH1VKtLd8xBGD/U8uHJPJ3TiuKw=; b=b2oYxAQqtU8lrdsYWg6PDR59VUfe7xzKzDJbfxNCli96hM18KUxeur87MzSzyj7sbX zf9KqAoWarqU+0hAayr5B6cvS8wFOmrulCxntn9QjlWk6q1UBb5Vhy0wYrb7yaxneP28 7TVbWk3Q9R6wXBXTlYRYMEOw7HF9j2yN5e/vHkmYT4IfaBll9VZOu4jlKVfr6Y7eMBdm bC3ZNxzxSwuxBUlQujA8qOGkA2jmej3AQ8vGQyp7auZixplwNNGvxsEHHvfjhDsHdR/p Hxv+BX8BwaXBAfudRfF7pcZnNMPoklAkU+xqH60mBM+o+llpFzf90b2LVX/Ee7Qvi4Os KcpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684960867; x=1687552867; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZaeuqwRXMmjwIv+MzH1VKtLd8xBGD/U8uHJPJ3TiuKw=; b=I1DIpYkfWf7Jj26N+T/Ctmhz3Xi7gZ29Zzms69KA2NuFqSCuTnoHLdfWGns1XK9WZd Q0QnD4YlMyF8cmB2DI4KHbodMwLa6WZ0T0wd4f9OlEI4njyegYmQXvKgWugE1JbGWJ7i AfIjVV0zY4EGMmBi38RR9yPW4QX6SUF8Fke0dSuJF8sayMtSmsinkr/cb7NNkBvI8GZR 2WXlrHP2tEGHcYqMfvgrn+9jhJEqGA+Aeg6vxvFmfhx3tY2NNxL3j+t1Bjv4LpU9Gxmy /joPvp26um++1NAQ2x61I+17DgkS44WcPmcz4u/+gXzy2Cn9BbXTUOCDH1b1n/pY0OlR AO9g== X-Gm-Message-State: AC+VfDysufE4TG6IGYdyYJYaVastFlKvtS0Z2FUXcHbA+dsH7OyKT/oW fIbdEURBlOJjlxmrcqLeLC+ljRepg8KCIuNptP8jKQ== X-Google-Smtp-Source: ACHHUZ4vsyhloQdsa7Qaf624yhT2vvr5oHRywPWiSMcBfyEWln0VwqyYUWUyaZZ2GrLBFCN7sHf3tSrDPfIS0jL1b54= X-Received: by 2002:a0d:d890:0:b0:561:4bcc:464f with SMTP id a138-20020a0dd890000000b005614bcc464fmr21350731ywe.36.1684960866564; Wed, 24 May 2023 13:41:06 -0700 (PDT) MIME-Version: 1.0 References: <1684919574-28368-1-git-send-email-zhaoyang.huang@unisoc.com> In-Reply-To: <1684919574-28368-1-git-send-email-zhaoyang.huang@unisoc.com> From: Suren Baghdasaryan Date: Wed, 24 May 2023 13:40:52 -0700 Message-ID: Subject: Re: [PATCH] mm: deduct the number of pages reclaimed by madvise from workingset To: "zhaoyang.huang" Cc: Andrew Morton , Johannes Weiner , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Zhaoyang Huang , ke.wang@unisoc.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: B0109C001E X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: 8rjraa95ggdw5pouyfp6ks34atgeik5h X-HE-Tag: 1684960867-597400 X-HE-Meta: U2FsdGVkX1+uH6/bLQ+F/Oo4n4hvjHpDObAE2V0VP7Yn4S7NUWD33ZrxrVamo8PubPtnhpfE6exq84jn8UHmV0/ZQbziGytDd5KlED2AGoeufX4pxoMC/Fa841Y4MF1d5bb3+fZUTwlS09ihB7NQVt3SqlBrhZ2yLjiGo40FZwS5E9DOPmCWgQCO/7qYX+xqhw7u7ygJE47Zq+6FxvDdLxf+vcoTqXBzerQ3hJp/M6k2jItL3n0zEeLMnu/xLwf1OvM8JMshLx/Gydk67XGVxMZZdCQZxtTDb2L7AIv6bCETQDfUiu4gGqWiIM5sXQkWX54EkeWYxRglScvIWv5Mymy0+qC4+5sj9CDuWMX7+PpKuHvbcRO+/CRJPu5tpjcBhgXfg4pPi4IBD4le36u25xGAnvleJ3T1lhUX1MdzQnIqMHeThNKauGgxPWSSKPfYxkc1YD6T7Sq+rKkVf3Ucl6ZO9qQXkmghkdtEawnXNZpelUCD9+NgLcyY6Pk5xPR+CZXittJFXkOdljhq8ZpyAtz2x01TvFEkuSzNm06KLH5IKIynoom8gdO6OrVclSzNMa7qIJWYVUyVokqX6oB+xgu4ShsDe8oETnWB4scqzGw483lhOAKLn/CZBl8RqDq1oMdBfiVH8/6YAinjQlpoh1LwiYL8Tkk7x4KZJp2/tCF5obUGFtn78QeiIr9fi6turQ7LXJnjs3gI0P2iNwucl71SoZppI4Q9sVziLXdrqmIUeUmVUkA74OXGxzODoFfsIxzf5iXXAPgPWOOJquDuR+aRuareOIwy/kE3BPQfBnS3lYcvL+CESRY2I2yRHasHPWvb+RZ+gmjEfZvZ5GA4Q6NQlfeujG0Z5b97iMxpD1lJ+4t8uUcHeP6HJBVC6KdKVPeUhrr+QTtk1fgB28qp5/XlwvQ+WMs0a3QmZ5uDELIyOBZv1N7R70/IvppnhyWRpYBwNSR+wY8muBRIJA1 UO++A/os uA2792nltBmb7CNKdI9tKNRVt3J+qSsWYzT0BlsvZIp8zZO0YBVptPFyTQQIH3UIlIXen+P5YL3+wGmwciwTUpOrvNV8BEqf57PoQrEKktnk+oTo+i3ehlnKtO/NQ5FosK6VW1nY40nhdY1GLiTSqGufaTXwiZOxDzrt2zHom2PFcNgB2oSHO2MBF7NmOfeDYFt/iFA6fjxIhA1NXRwy+xt5+Zo0qKIXp4WXWjxAu7C6Qo0Ir7Bo/0cYcpxApZhMpSVjqaW+kYF68+9HNw8SV65hAlPCpZVx/QukPwSEoLuSC6IFeUk4fjy2dGdsHxzs9ZGrj97tAv9HR+Lcq4O1ikQ0+jw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, May 24, 2023 at 2:13=E2=80=AFAM zhaoyang.huang wrote: > > From: Zhaoyang Huang > > The pages reclaimed by madvise_pageout are made of inactive and dropped f= rom LRU > forcefully, which lead to the coming up refault pages possess a large ref= ault > distance than it should be. These could affect the accuracy of thrashing = when > madvise_pageout is used as a common way of memory reclaiming as ANDROID d= oes now. Doesn't workingset_eviction() in the following call chain already handle nonresident page aging?: reclaim_pages reclaim_folio_list shrink_folio_list __remove_mapping workingset_eviction workingset_age_nonresident > > Signed-off-by: Zhaoyang Huang > --- > include/linux/swap.h | 2 +- > mm/madvise.c | 4 ++-- > mm/vmscan.c | 8 +++++++- > 3 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/include/linux/swap.h b/include/linux/swap.h > index 2787b84..0312142 100644 > --- a/include/linux/swap.h > +++ b/include/linux/swap.h > @@ -428,7 +428,7 @@ extern unsigned long mem_cgroup_shrink_node(struct me= m_cgroup *mem, > extern int vm_swappiness; > long remove_mapping(struct address_space *mapping, struct folio *folio); > > -extern unsigned long reclaim_pages(struct list_head *page_list); > +extern unsigned long reclaim_pages(struct mm_struct *mm, struct list_hea= d *page_list); > #ifdef CONFIG_NUMA > extern int node_reclaim_mode; > extern int sysctl_min_unmapped_ratio; > diff --git a/mm/madvise.c b/mm/madvise.c > index b6ea204..61c8d7b 100644 > --- a/mm/madvise.c > +++ b/mm/madvise.c > @@ -420,7 +420,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *p= md, > huge_unlock: > spin_unlock(ptl); > if (pageout) > - reclaim_pages(&page_list); > + reclaim_pages(mm, &page_list); > return 0; > } > > @@ -516,7 +516,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *p= md, > arch_leave_lazy_mmu_mode(); > pte_unmap_unlock(orig_pte, ptl); > if (pageout) > - reclaim_pages(&page_list); > + reclaim_pages(mm, &page_list); > cond_resched(); > > return 0; > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 20facec..048c10b 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -2741,12 +2741,14 @@ static unsigned int reclaim_folio_list(struct lis= t_head *folio_list, > return nr_reclaimed; > } > > -unsigned long reclaim_pages(struct list_head *folio_list) > +unsigned long reclaim_pages(struct mm_struct *mm, struct list_head *foli= o_list) You would also need to change Damon usage of reclaim_pages() here: https://elixir.bootlin.com/linux/v6.4-rc1/source/mm/damon/paddr.c#L253 > { > int nid; > unsigned int nr_reclaimed =3D 0; > LIST_HEAD(node_folio_list); > unsigned int noreclaim_flag; > + struct lruvec *lruvec; > + struct mem_cgroup *memcg =3D get_mem_cgroup_from_mm(mm); > > if (list_empty(folio_list)) > return nr_reclaimed; > @@ -2764,10 +2766,14 @@ unsigned long reclaim_pages(struct list_head *fol= io_list) > } > > nr_reclaimed +=3D reclaim_folio_list(&node_folio_list, NO= DE_DATA(nid)); > + lruvec =3D &memcg->nodeinfo[nid]->lruvec; > + workingset_age_nonresident(lruvec, -nr_reclaimed); > nid =3D folio_nid(lru_to_folio(folio_list)); > } while (!list_empty(folio_list)); > > nr_reclaimed +=3D reclaim_folio_list(&node_folio_list, NODE_DATA(= nid)); > + lruvec =3D &memcg->nodeinfo[nid]->lruvec; > + workingset_age_nonresident(lruvec, -nr_reclaimed); > > memalloc_noreclaim_restore(noreclaim_flag); > > -- > 1.9.1 >