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 20618C2BA18 for ; Mon, 17 Jun 2024 10:44:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 84B686B015D; Mon, 17 Jun 2024 06:44:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 784A06B016A; Mon, 17 Jun 2024 06:44:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5FE4E6B016E; Mon, 17 Jun 2024 06:44:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 40D5A6B015D for ; Mon, 17 Jun 2024 06:44:01 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id BE53BC153B for ; Mon, 17 Jun 2024 10:44:00 +0000 (UTC) X-FDA: 82240045440.13.180D45F Received: from mail-vs1-f51.google.com (mail-vs1-f51.google.com [209.85.217.51]) by imf10.hostedemail.com (Postfix) with ESMTP id ED61FC000B for ; Mon, 17 Jun 2024 10:43:58 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CfyR4cyZ; spf=pass (imf10.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.217.51 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718621035; a=rsa-sha256; cv=none; b=KDNybFo16UMg80JAw3c96ODSklKfgVNgypjIfz/GcDscKGcz9S8siumXpS0WNIlAgVZgNL 8QidY8bxs5Ir46yaWjELBuwLcrTYEna6vIb0ijf/unQjkaPZhBh+5RQfs9o8ltLkadiE0p 2Fkl+W90WYqk6TA2drnWH66ovIYgi+g= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CfyR4cyZ; spf=pass (imf10.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.217.51 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718621035; 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=v4nLkqlsqvsKsWqeWur6tKtmzT9Q8xCH7R5hLwg3FSc=; b=WteN7BFp3/scozPQqDGnJuNG69FSX+9jtQIZa7vCuCwbvRyUd/spFlvZ/qDe4eTF9BGfpK Smqh+VZ1Z8VMBWriTI3u5V+KSpNNEfJ1INarabKRlRFSYWDdcaINMGOBtLwsnm57YiQdtQ NncAvcL0o4nXwoh/NWE7jUKkYeT+8g0= Received: by mail-vs1-f51.google.com with SMTP id ada2fe7eead31-48c52d0fe6bso1294889137.1 for ; Mon, 17 Jun 2024 03:43:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718621038; x=1719225838; darn=kvack.org; 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=v4nLkqlsqvsKsWqeWur6tKtmzT9Q8xCH7R5hLwg3FSc=; b=CfyR4cyZD4FZIDYOfw2JzmQA6NRuWuPrsuROG0Cj1uJEIrXEfkyVSeqlwFzj19cesw sOAAhuvpXm97cE2HGQ0q6ZZNoqEMffZ054uDS8nf2gLroidcF0Bz3rY31/nFKqeimV8d dgqKYPXS6aFM2phHdHt6go3zmXA5cIAnbO0ki/fiMMnG/2whErqgWXfjyXNnqbfIdxbH ctGY+FHHhsDrL1Q78Hvo74ycPk9fvYhW0qjVmNS926bd+ULnzyt3pMaP+ed/5lUxpcb8 ZGZ9tVQTr+27Ht5e6xo1+e77GeNnxuiVIuLPEp25Ij2M/8vHXh6HGQMEC8OpjlQXo849 ccNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718621038; x=1719225838; 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=v4nLkqlsqvsKsWqeWur6tKtmzT9Q8xCH7R5hLwg3FSc=; b=nvyu8y4ea+P6np+z2pnO33tv8q12f/2W6okISPZQF8+0Xnfc2hl2ZZ34Ap3x2zRcKW VAGktHh6uN42Riiv55rEoklGPjmfJTnOIITxmhrJkTokcEnk9Rr8D+TtRJaiDsBuZUt2 eZr0PXKHSP0Z33V0gFUzkWMNEqnfY/17587GEgkxa/U6wAQyv6W7T5ZccjIKGVnWffpl E6EfGynuaEHQdpRgV5wf4eMZzyXmx69XUNYZvG/pVKCXWBAWVFZvAoHImH7tHqLlLM+n jBYQyzR/I9Md97xXCWj51HNxWfN7hNXV0nr6apdmcp1BdrA5J6TqdCWxl7j592/CaBts Vj+g== X-Forwarded-Encrypted: i=1; AJvYcCUS/HaUqiHScr3j87uJEZgRU6LNeQTrzuDNgjj4awkQQ+bzTSerKBZn2Xfly34ljXTEEBOe2WmjMs1Por5Elllt46w= X-Gm-Message-State: AOJu0YwVBH6GePDLkvxq6YccK2ntEM9Cd49oWVQpM5OqueL5EdYRdwHT MAZLIRlF8BRrp2mmPvIvdIh2pTE3LOk4/4svHGMa0I2P6XrKns89KE+zssHJAZ0EPtxkF6ugDUS 6WelpjYA3kg8pZCq1BNwO1NLwbMU= X-Google-Smtp-Source: AGHT+IH94ZfxSyz3r9dp5aCDfWRtBxC24cxXWsg1H700/hxN/YUb4p1hkU4K61N59jhQte6xW3NcDlk3+KA9Xq3w0CY= X-Received: by 2002:a05:6102:3569:b0:48d:9fde:2b7 with SMTP id ada2fe7eead31-48dae3b4095mr10148163137.27.1718621037914; Mon, 17 Jun 2024 03:43:57 -0700 (PDT) MIME-Version: 1.0 References: <1717492460-19457-1-git-send-email-yangge1116@126.com> <82d31425-86d7-16fa-d09b-fcb203de0986@126.com> <7087d0af-93d8-4d49-94f4-dc846a4e2b98@linux.alibaba.com> In-Reply-To: <7087d0af-93d8-4d49-94f4-dc846a4e2b98@linux.alibaba.com> From: Barry Song <21cnbao@gmail.com> Date: Mon, 17 Jun 2024 22:43:47 +1200 Message-ID: Subject: Re: [PATCH] mm/page_alloc: skip THP-sized PCP list when allocating non-CMA THP-sized page To: Baolin Wang Cc: yangge1116 , akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, liuzixing@hygon.cn, Johannes Weiner , Vlastimil Babka , Zi Yan Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: gx3k6poec4tp9rauxge4psu75i5nrwhg X-Rspamd-Queue-Id: ED61FC000B X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1718621038-714259 X-HE-Meta: U2FsdGVkX19kLcPnZdCOWUQMVW2zd5s0MaVpUrGk+0hlFHyXCJg0f04BxyvSC+c+PxOSwcQfJuiI1mMtoD9l3I/cHBBcBnYlh1fqxkc/X77+VxrWP1ST7//dsLKhXj/qGeFn9OwvwfFrMsI2KxJxwwaR+fRQsClM/FNWW0A3UiPMmaUw7QOmkgWzoM45Rg7n5jBOfoHuTohDrStW1oKu5kiHjOZevoP6Jtmv5wFv+u7t2ZwL/NTs1IFs9ILL+fPTHpDpeWFUpROm9J6HqLSYsOlgd1BBb1BXqkO9D6ycOUNnmrJVvLshtoqUjtjmbM6b/mhfsbRKxlyAAkdjlXorV6ZLfKHxLrVtg7HwSMGigjLeS0cVOI2Nm4/M0IoRfxCt/6SY/RsO/SLzRyoi2sA1paBhXDnMsNZTWdV9i2lU/pwOQ0JDE9y6SX7lrS7OMvgifMhFPOQbLnAY9VyMeNK/2i1LN+miI8Z1AiwAsKQL4bEUQ+v2HC6BecJw+oBV8kl8Al9XsTgMoLbppe6Af9FFQz2k9J2FzyZo/0ZCPJ+/ieSU7DgbeJhIY0YSMUlUlP8m6BNzWgr16YEiUR6YfK/xbVlpo2s1q24HR/9wp8YFXbwc0GCmUYQH0KEG3sdEBZrgnAYpmZCzC0wip8Pw4cmy6gsRqKekD/h4TS/pSYQDMEf1LNu0x1el+sDzCAD8uy3Uv6YatNCRfN1mbggkdDmfoEs1Mag8LwV6mv8Qn9Zsj9jJ1hFXpSur/HD3hY0NTnLCcuI9AYkwFZ6oviq9f+6R5YsmuTqB1seTaUsfGquHZgCkwiN/FCW6L848kSetLqmoSgb26KoaAqsk+UaPmI/eOS6XzeqpwMZLHWC7AOZQ6Ms5Edf2FCu5/yloT21ir3MpsiF31FsAGwilaVCiqo1HljwbNs1bpZfVnGozAQxRS0Q26kAULBnvmC6tDZtjCewzOdZg9F4Bqz19HJdZtR0 nicuqMKi tuDRrRZScuuzI/Vk25BUiXG+ViUZI52xrThnt6rFHaefEFit1FtFRb6TJji/uzLel0UpXFblejMa8aPlfMvXMIyO07YtHhzK1lvfVHWtv6IfVXRhffE0QVDlbL6ks5/056AMqwwlgNS+laTRdUjs7yWj7STGFIUxGFwJwZgw788kZyNjPnwrFsrg9Q0fOReEDay580Z4cBPypiYu+L/hsXqE4JwpgLMVf05KFbb36DoIciXWzT2zdHvgrZWqadozQKFX4DnuiKbYaiJ5JkhBQtEK3VOoPGaYJDkVpy55OjvLNZ99HXhimC8mhY9NdFIpp7R4T1gJi+leUO8z3Hk6muvRxqND/0q+acqL8zKYWy8RRejy0nQ+8BYKXn5+b/7TsbnbF 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: List-Subscribe: List-Unsubscribe: On Thu, Jun 6, 2024 at 3:07=E2=80=AFPM Baolin Wang wrote: > > > > On 2024/6/4 20:36, yangge1116 wrote: > > > > > > =E5=9C=A8 2024/6/4 =E4=B8=8B=E5=8D=888:01, Baolin Wang =E5=86=99=E9=81= =93: > >> Cc Johannes, Zi and Vlastimil. > >> > >> On 2024/6/4 17:14, yangge1116@126.com wrote: > >>> From: yangge > >>> > >>> Since commit 5d0a661d808f ("mm/page_alloc: use only one PCP list for > >>> THP-sized allocations") no longer differentiates the migration type > >>> of pages in THP-sized PCP list, it's possible to get a CMA page from > >>> the list, in some cases, it's not acceptable, for example, allocating > >>> a non-CMA page with PF_MEMALLOC_PIN flag returns a CMA page. > >>> > >>> The patch forbids allocating non-CMA THP-sized page from THP-sized > >>> PCP list to avoid the issue above. > >>> > >>> Fixes: 5d0a661d808f ("mm/page_alloc: use only one PCP list for > >>> THP-sized allocations") > >>> Signed-off-by: yangge > >>> --- > >>> mm/page_alloc.c | 10 ++++++++++ > >>> 1 file changed, 10 insertions(+) > >>> > >>> diff --git a/mm/page_alloc.c b/mm/page_alloc.c > >>> index 2e22ce5..0bdf471 100644 > >>> --- a/mm/page_alloc.c > >>> +++ b/mm/page_alloc.c > >>> @@ -2987,10 +2987,20 @@ struct page *rmqueue(struct zone > >>> *preferred_zone, > >>> WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1)); > >>> if (likely(pcp_allowed_order(order))) { > >>> +#ifdef CONFIG_TRANSPARENT_HUGEPAGE > >>> + if (!IS_ENABLED(CONFIG_CMA) || alloc_flags & ALLOC_CMA || > >>> + order !=3D HPAGE_PMD_ORDER) { > >> > >> Seems you will also miss the non-CMA THP from the PCP, so I wonder if > >> we can add a migratetype comparison in __rmqueue_pcplist(), and if > >> it's not suitable, then fallback to buddy? > > > > Yes, we may miss some non-CMA THPs in the PCP. But, if add a migratetyp= e > > comparison in __rmqueue_pcplist(), we may need to compare many times > > because of pcp batch. > > I mean we can only compare once, focusing on CMA pages. > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 3734fe7e67c0..960a3b5744d8 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2973,6 +2973,11 @@ struct page *__rmqueue_pcplist(struct zone *zone, > unsigned int order, > } > > page =3D list_first_entry(list, struct page, pcp_list); > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE > + if (order =3D=3D HPAGE_PMD_ORDER && > !is_migrate_movable(migratetype) && > + is_migrate_cma(get_pageblock_migratetype(page))) > + return NULL; > +#endif This doesn't seem ideal either. It's possible that the PCP still has many non-CMA folios, but due to bad luck, the first entry is "always" CMA. In this case, allocations with is_migrate_movable(migratetype) =3D=3D false will always l= ose the chance to use the PCP. It also appears to incur a PCP spin lock/unlock. I don't see an ideal solution unless we bring back the CMA PCP :-) > list_del(&page->pcp_list); > pcp->count -=3D 1 << order; > } while (check_new_pages(page, order)); >