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 0413EC41513 for ; Thu, 6 Jun 2024 09:11:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 492856B0085; Thu, 6 Jun 2024 05:11:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 41B4F6B00A1; Thu, 6 Jun 2024 05:11:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2BC1F6B00A2; Thu, 6 Jun 2024 05:11:19 -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 09B146B0085 for ; Thu, 6 Jun 2024 05:11:19 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id AA28D141369 for ; Thu, 6 Jun 2024 09:11:18 +0000 (UTC) X-FDA: 82199895036.15.C293D6E Received: from m16.mail.126.com (m16.mail.126.com [117.135.210.7]) by imf25.hostedemail.com (Postfix) with ESMTP id D4F5AA000E for ; Thu, 6 Jun 2024 09:11:15 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=126.com header.s=s110527 header.b=nCO5UMrP; dmarc=pass (policy=none) header.from=126.com; spf=pass (imf25.hostedemail.com: domain of yangge1116@126.com designates 117.135.210.7 as permitted sender) smtp.mailfrom=yangge1116@126.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717665076; 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=fc/bMpgE3KzMCFW55h1T50uds9erffHp9ylfNmlmvJA=; b=PKEc2DSLPA2SZEQ9qdn/KLG4YvWrJdD42WypM868b5Kt9A6hPiCjNxSEDyMZCfA9Yy4LMq iRGAZwThJWDChnn68Zs8VJ1AZXC/CDKy+8McZu/Yj4qcaJsOv8ClIj2LamBMFt3N/FE6Cm Jnca5Zle4nVln1Ea5ivnCxFZaUwg6Hc= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=126.com header.s=s110527 header.b=nCO5UMrP; dmarc=pass (policy=none) header.from=126.com; spf=pass (imf25.hostedemail.com: domain of yangge1116@126.com designates 117.135.210.7 as permitted sender) smtp.mailfrom=yangge1116@126.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717665076; a=rsa-sha256; cv=none; b=RYyZ+lO6HV0aG+tKU4IadZ7DYJADYGyIDKfmB+eMpF7abSW3yFA7Is2aDhWkeuCsBCcniW 14Q4ySuzTZLpP/Q1GkXtemwoz8PBInWm6Qb4kuVT7GUWYcgse0uir1DfLgevPv9tNk1h3Z SkVMt1QULb5iPWwm1M4oK4+0Nq7EqnI= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=Subject:From:Message-ID:Date:MIME-Version: Content-Type; bh=fc/bMpgE3KzMCFW55h1T50uds9erffHp9ylfNmlmvJA=; b=nCO5UMrPVZ4GZhVXWNh6TcsxFF6bQCYDyq8ujEvhxpoyhawcHFDUWp9uMHURnI CRsWRO+b8EZQfwCukuYnPrxRJtZe+guW73AVlSR7FVCmRZXa5pSgnZT4D4EvpP9Q CaKMhBNL7+uDTrV6L1XCP4qwLKDD10zW4vkCIy/92rR0c= Received: from [172.21.21.216] (unknown [118.242.3.34]) by gzga-smtp-mta-g1-4 (Coremail) with SMTP id _____wC330AifWFmmhe2AQ--.40121S2; Thu, 06 Jun 2024 17:11:00 +0800 (CST) Subject: Re: [PATCH] mm/page_alloc: skip THP-sized PCP list when allocating non-CMA THP-sized page To: Baolin Wang , akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, liuzixing@hygon.cn, Johannes Weiner , Vlastimil Babka , Zi Yan 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> From: yangge1116 Message-ID: <1250569c-c428-5a0c-f1b7-fe5013eace3f@126.com> Date: Thu, 6 Jun 2024 17:10:58 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <7087d0af-93d8-4d49-94f4-dc846a4e2b98@linux.alibaba.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-CM-TRANSID:_____wC330AifWFmmhe2AQ--.40121S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxGFy7KFWUGFy5KrWfWF47XFb_yoW5Xr45pF WrC3WjyF4UX345A3s7tFn0krnI9ws7KF48Wr4rZr1UZwnIkr4xGr97tF129F1rZrZrAF40 vr4vgFyfZF4qya7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07bofH8UUUUU= X-Originating-IP: [118.242.3.34] X-CM-SenderInfo: 51dqwwjhrrila6rslhhfrp/1tbiGBb1G2VLbn5CgAAAsc X-Rspamd-Queue-Id: D4F5AA000E X-Stat-Signature: jj361x3jxbitow516fnbzsnxixe1aaxw X-Rspam-User: X-Rspamd-Server: rspam11 X-HE-Tag: 1717665075-262590 X-HE-Meta: U2FsdGVkX1/halZIpl1ayCiR21lK8tIXMz9bB3BpAglvw1kR/Dmu+rf2KDgPUPn85Ld6IVJBeCMr115wtEytbTBr2FM4Idr8z1FEsliGdTHTSGuZTGZvGk2+ZuuccS+wXizkzvgqhE8+j6ug2c+lIgffm1XyScXVqk6JWi8azS5RYXEGNxwn7Y7OHLtSboqoeQVbXe9FLMwkrKxr0ydci/k+DB74w+mjdn4F8o1f8vkwsn5x/ozuZaqs5ZAYhYE1VGt4cNsm9Awe4zESqs5Iu9K2MYLpe7S0aHJtIUl3ko3YyiVIiX2tcG8b746qD3JsT60Rmbi4oYekd/z11ALZKeOswtSUDxk76x2FaJevVh308KFkie5uZg+499ByvFjYiHFrbEnGkz46pHfMyimE/0+b1lUlhgxl0V80f/BlpBj7JUdDxRq8cnOMBj+hjg3e83fq2GrB1H4oPdDH+ShFw1Y1UHS5i3O7R8STrU3EmawqiVElGPqDMmg5Io2mBTGVOJFI1V/v/hiTPV54p7TztFHEii0Xw8m6KCjnP3Wb3RulIEBNm02h/T9p445tMJ715TLCmy1l02WYVUtTaUFxdYwsL6WogMg9EmoLrdrSvu4efwBXrl6CQabiZRSqo4xdHO2orWavN7+fmjv8BNSLQEAheTciMd7BtAloCXT+leESkOFqGck2xTR3Xdt7AVd3+DAgIrFtICsRc9ZRLshK6mGwrI73X+m3sUbLAturOKboCL7ismIHxwvd4Mfe7UjGWnWpk4wd7vgUcaUgXMzfjpFnyjfYjQmxc0u8fCZWxnVVsU1FNQeq67kLriUWOj+0DOXeoyxrXrU16GMS8JLfwZNTb9Ni5o1dQNYAcLBEh0FHeaD+HFwxaEfXLbQ96CTYYm8pYHuEeXOdWyPttkXQRkJx2CPyJqx88R4GpXXECnItU9ppRGIHKe08AD4eAB3zbfEglPt4o3NgdX/HJrA RGsHU/P6 N/bTPRv3rSy4pcsVVz1mX/5QaLeGc0/W3GS3RtlABRAoyXMmS0AqBuR1VfZlHVs+Odp5H2F6WwI40qaUNvwWV8yxVnGpuQPWCHXEx8TjE48x9+TaHgH0RpnvMBCXGOzm7VbAMenQsz9ePG5UNNmHYLPck5pSM1Ohdix+pPCM1WrgRuw7U32C9NCq4AUxJwteD9nfxRP9mzQ+tC6LW74b36ME/IW6L8JafCDscQepXI19NIEghqnAw24julkf9/i46wDP5LrwYKsP6t5VVmfGKKYmpl1a631MWH9mUyY6v69BBFsZUvdudJviGd6jCMA+QooKlVTAnEm7wEOmlPhbP35cYW89DhgNrKGn/T4T6IDIahlEUJjOhoZL2pQlGUxsTiMgFPyo16rz30SukRCrJvAacWBXDE5yenspJ6IJjDjB2fpNM7tpIgxWl2n8q8zJR58ZoGc8tVnb6m+V8ivbmGMMOYuCV8W2k8neMBscu0AVZUR24KNgSqUFecg== 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: 在 2024/6/6 上午11:06, Baolin Wang 写道: > > > On 2024/6/4 20:36, yangge1116 wrote: >> >> >> 在 2024/6/4 下午8:01, Baolin Wang 写道: >>> 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 != 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 >> migratetype 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. pcp_list may contains CMA and no-CMA pages, why only compare once, just increase one chance of using the pcp_list? > > 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 = list_first_entry(list, struct page, pcp_list); > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE > +               if (order == HPAGE_PMD_ORDER && > !is_migrate_movable(migratetype) && > +                   is_migrate_cma(get_pageblock_migratetype(page))) > +                       return NULL; > +#endif >                 list_del(&page->pcp_list); >                 pcp->count -= 1 << order; >         } while (check_new_pages(page, order));