From: Chris Li <chrisl@kernel.org>
To: Kemeng Shi <shikemeng@huaweicloud.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
akpm@linux-foundation.org, baolin.wang@linux.alibaba.com,
mgorman@techsingularity.net, david@redhat.com,
willy@infradead.org
Subject: Re: [PATCH 1/2] mm/page_alloc: remove track of active PCP lists range in bulk free
Date: Tue, 15 Aug 2023 10:45:28 -0700 [thread overview]
Message-ID: <ZNu5uHhYI4QxR4au@google.com> (raw)
In-Reply-To: <20230809100754.3094517-2-shikemeng@huaweicloud.com>
Hi Kemeng,
Can you confirm this patch has no intended functional change?
I have a patch sitting in my tree for a while related to this
count vs pcp->count. The BPF function hook can potentially change
pcp->count and make count out of sync with pcp->count which causes
a dead loop.
Maybe I can send my out alone side with yours for discussion?
I don't mind my patch combined with yours.
Your change looks fine to me. There is more can be done
on the clean up.
Chris
On Wed, Aug 09, 2023 at 06:07:53PM +0800, Kemeng Shi wrote:
> After commit fd56eef258a17 ("mm/page_alloc: simplify how many pages are
> selected per pcp list during bulk free"), we will drain all pages in
> selected pcp list. And we ensured passed count is < pcp->count. Then,
> the search will finish before wrap-around and track of active PCP lists
> range intended for wrap-around case is no longer needed.
>
> Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
> ---
> mm/page_alloc.c | 15 +++------------
> 1 file changed, 3 insertions(+), 12 deletions(-)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 96b7c1a7d1f2..1ddcb2707d05 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -1207,8 +1207,6 @@ static void free_pcppages_bulk(struct zone *zone, int count,
> int pindex)
> {
> unsigned long flags;
> - int min_pindex = 0;
> - int max_pindex = NR_PCP_LISTS - 1;
> unsigned int order;
> bool isolated_pageblocks;
> struct page *page;
> @@ -1231,17 +1229,10 @@ static void free_pcppages_bulk(struct zone *zone, int count,
>
> /* Remove pages from lists in a round-robin fashion. */
> do {
> - if (++pindex > max_pindex)
> - pindex = min_pindex;
> + if (++pindex > NR_PCP_LISTS - 1)
> + pindex = 0;
> list = &pcp->lists[pindex];
> - if (!list_empty(list))
> - break;
> -
> - if (pindex == max_pindex)
> - max_pindex--;
> - if (pindex == min_pindex)
> - min_pindex++;
> - } while (1);
> + } while (list_empty(list));
>
> order = pindex_to_order(pindex);
> nr_pages = 1 << order;
> --
> 2.30.0
>
next prev parent reply other threads:[~2023-08-15 17:45 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-09 10:07 [PATCH 0/2] Two minor cleanups for pcp list in page_alloc Kemeng Shi
2023-08-09 10:07 ` [PATCH 1/2] mm/page_alloc: remove track of active PCP lists range in bulk free Kemeng Shi
2023-08-15 17:45 ` Chris Li [this message]
2023-08-17 2:22 ` Kemeng Shi
2023-08-17 7:51 ` Chris Li
2023-08-09 10:07 ` [PATCH 2/2] mm/page_alloc: remove unnecessary parameter batch of nr_pcp_free Kemeng Shi
2023-08-15 17:46 ` Chris Li
2023-08-17 2:43 ` Kemeng Shi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZNu5uHhYI4QxR4au@google.com \
--to=chrisl@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=david@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=shikemeng@huaweicloud.com \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.