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 C939BC25B76 for ; Thu, 6 Jun 2024 03:06:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 26F6C6B009C; Wed, 5 Jun 2024 23:06:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 21DE46B009D; Wed, 5 Jun 2024 23:06:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 10C796B009F; Wed, 5 Jun 2024 23:06:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id E7B7F6B009C for ; Wed, 5 Jun 2024 23:06:34 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 4AB29C064D for ; Thu, 6 Jun 2024 03:06:34 +0000 (UTC) X-FDA: 82198975908.10.5E6ACC3 Received: from out30-133.freemail.mail.aliyun.com (out30-133.freemail.mail.aliyun.com [115.124.30.133]) by imf13.hostedemail.com (Postfix) with ESMTP id 457F320004 for ; Thu, 6 Jun 2024 03:06:29 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=F2nKgBw2; dmarc=pass (policy=none) header.from=linux.alibaba.com; spf=pass (imf13.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.133 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717643192; 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=5YZZSmIQT3EnCQ697u4wLeqAC6O9xFWtLOr4ccPxfkw=; b=yaPUYOOeeZp/BkCpgBYsKcA+8YlrYHf81bMOa3DMqGWeQsKK7xWUrz+5CGe+EvF9/HahF8 eN1mG6gNv7fnagn+kZWUmjGJaxHR+MjyvSYje2/U7KQKwteK6HQDQHR5KE/DpzZkQDMJO2 e6VaRwiJwCcekez9dugdeECyNu6Luu4= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=F2nKgBw2; dmarc=pass (policy=none) header.from=linux.alibaba.com; spf=pass (imf13.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.133 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717643192; a=rsa-sha256; cv=none; b=MOASjn1f4cWWHAQ+/Ldi8MA4czquoV4bJh/sE0Kgk23Upc65pjB5Kf7h/07arz8Pq9njm5 +I8Gcw+qiUrYO9iMjfDVkxumQZmQNGAte6BsxCXy6XelgW35hJeA2Cwnma6GlqI5QoKmzG rlEc5v0xkpIKj45T5p22L4xxbszjNa4= DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1717643186; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; bh=5YZZSmIQT3EnCQ697u4wLeqAC6O9xFWtLOr4ccPxfkw=; b=F2nKgBw2cO4iSoPnVZ8jovlVanivtnFpbQEjvzTAmHYIqcFChiVUmZ08/DY4oCslfDWlqrZOGOpV4s2KrcfoPKZ+fqVeFfCF3UyoqQdHh3CjnLfZc4lEn0JI97QThzk/RAWYNHDbQqqfDJgdi/pCiBCcZnmznzFHDmLxxDaHNfk= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R331e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037067112;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=8;SR=0;TI=SMTPD_---0W7wm0mE_1717643184; Received: from 30.97.56.72(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0W7wm0mE_1717643184) by smtp.aliyun-inc.com; Thu, 06 Jun 2024 11:06:25 +0800 Message-ID: <7087d0af-93d8-4d49-94f4-dc846a4e2b98@linux.alibaba.com> Date: Thu, 6 Jun 2024 11:06:23 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm/page_alloc: skip THP-sized PCP list when allocating non-CMA THP-sized page To: yangge1116 , 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> From: Baolin Wang In-Reply-To: <82d31425-86d7-16fa-d09b-fcb203de0986@126.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 457F320004 X-Stat-Signature: upse9tkm89oeigparecz1anoidszcjsi X-HE-Tag: 1717643189-489931 X-HE-Meta: U2FsdGVkX19yd4g55x5Yny4A2lhASYhf9hL4j9zJYZr93ezpvol5ahQdUE+MKbrrZxPDTuxoc+leDoMSaK4zcO8NR0PXtkVT4WH6vmZ6wtjFQ134o5CTuryMVwCT9cOv7G+P3G3i02YzoeWJZPhmc78Mhy1otBARbHGevhpDrRlFX4C5ifm7L3FrraNRup7/9j6nEaTgEL0TkJPXwUumOGBynTJbrXZlPjfX2jTBuxzsGIptIjthlwKM3AmhniJs6sia240IDARehObdiKCjxSA7687ceMuFyG/WoG/dtLcLE0tAEWB9gGqeW+zTScA0yqOjn/yi9/B0xRRsuFCh/0yBqp00RphtKFAi36HfB1n7Vy+V9S385EhNzKVL6EUnNLb+mwCQsKCJgmEk5MCsqxApMUD6+zKGiBPDPsxu4iFtsdNYtsn0hNt7cIbatYP7VWKyMV1iLAd01KvqbTRpaK5UigwfkfDs1lOTDSA4qo2FYISMil2Xlg+S/zym8Qh2yYRIwlVEtVX3oy9Em1Lc9jxEOdfnWMV27Rc30dWmZK+kd8b+O0o6mLDT7O5pwbYTsjbQkAmGBoZlhJUcXVDCnGZNv5aOePWUTN9T9M/MwAhMxLTmCqO9yvnI15qvyQtkorqEHCiH9OMdZVS2I39g2P3/arfU3jaoIRpKMU/1S0Q/nW7NRike+Nj7mbobazG2BfET+taRoyD6V0sVxQnaMII9r8V+pEPKzyc5U19otGSzz6amgfbOw8Qr3WYGo87DwAKArUay21nsgbw4F9uBZxa1Txy+3nmwEjNbKga5rx53PNQsrA3COVjZ6NBO8jrQS4vwehgRAJpi4T9wcmxr0qIVDLYfCCRCae9GXEi2ZRTVjd/YZa6semC0oQXwfanUg7Htl0pefgpzMN5IZDHZK8x02KWARKROZiwDfB8dbCPDu4MtN3qCUZoieYoWpEVO6F6818JdmsOikpY1nQ0 SsXhziN9 tT9FART9GHg1jboQbYYUPWAZ/Q/Y1lp3dj8Azmv5aLZ0nmlwaybdUFUFRpuNQhhdaaF+IzmWFPMuAnLm/F5zO7FAouT3ZQ70zODMAPe4Vow+HCh0D7AEDvG+2dTAWVocbT/N4TlMyKn1Xuhi9MHGajLBeBmU8T0e7JRVL6qvvQ2F3YXsGG0qy4Sa32ldxNFP4VyPukQ8PF5wBWt1pHAzRTQe6bWY+C26XIbLwhPjss/2WPlxkLP/DhqJntjucoSRCOzh4AD2QChX7FvOjwlGAICRhK06NfcpOF6ogkZZKZSuFVGHiFzAyH/jN2331sFvXaX9a5lKivvM+JdsovxewemOuqwcSneghByDEdHabKc5qnEsZzzoZLm0iXLCA185lXe9FQkZMSStqYe4= 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 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. 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));