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 52571C433FE for ; Wed, 20 Apr 2022 20:43:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 61FE76B0071; Wed, 20 Apr 2022 16:43:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5CFEF6B0073; Wed, 20 Apr 2022 16:43:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4973E6B0074; Wed, 20 Apr 2022 16:43:23 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.25]) by kanga.kvack.org (Postfix) with ESMTP id 3721F6B0071 for ; Wed, 20 Apr 2022 16:43:23 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 0221520F98 for ; Wed, 20 Apr 2022 20:43:22 +0000 (UTC) X-FDA: 79378432686.06.99FC81E Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf07.hostedemail.com (Postfix) with ESMTP id 90BD040023 for ; Wed, 20 Apr 2022 20:43:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=sc6vMSh29FXFMOxHdh8/k5TpOxZ+/Ckh32u1TBe7ffY=; b=uVaWmWoxPOVjgn/PAs+FuiZZ3Y jthciLPP8g1gBgzFSoW8ORucEXldJYp5fXeGkqj04+Cl6Y/oFsf8iXHVqK7U9zrsYOGjcpuHr/O1h XhYFQ+ZphcoObyohah3E6WimoJWzuvn4H6N2Kgb6Oax331yePFQUGFGFuladE+IC6S6xdmu4NnmZO Jzka/tzLRlykNOjTLc6VMY/XknG3VlVJOKQvRMSZeon6i3zEVa0IElUN5rRjCVKj17YMVm6gF9NdZ gmE2wjAJQr/LIGGnJ+GwSaQfqZBfjv/dT3HyPoofpjxgLFVUquVXDH6imv3mIFiz4sjpnrf3bwot6 xbyNPm3A==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhHAH-004R5x-Id; Wed, 20 Apr 2022 20:43:05 +0000 Date: Wed, 20 Apr 2022 21:43:05 +0100 From: Matthew Wilcox To: Mel Gorman Cc: Nicolas Saenz Julienne , Marcelo Tosatti , Vlastimil Babka , Michal Hocko , LKML , Linux-MM Subject: Re: [PATCH 1/6] mm/page_alloc: Add page->buddy_list and page->pcp_list Message-ID: References: <20220420095906.27349-1-mgorman@techsingularity.net> <20220420095906.27349-2-mgorman@techsingularity.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220420095906.27349-2-mgorman@techsingularity.net> X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 90BD040023 X-Stat-Signature: 1mi6b4tught5zzepummj6seucetariqt Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=uVaWmWox; dmarc=none; spf=none (imf07.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org X-HE-Tag: 1650487401-669470 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: On Wed, Apr 20, 2022 at 10:59:01AM +0100, Mel Gorman wrote: > The page allocator uses page->lru for storing pages on either buddy or > PCP lists. Create page->buddy_list and page->pcp_list as a union with > page->lru. This is simply to clarify what type of list a page is on > in the page allocator. Hi Mel, No objection to this change, and I certainly don't want to hold up fixing this (or any other) problem in the page allocator. I would like to talk about splitting out free page management from struct page. Maybe you'd like to discuss that in person at LSFMM, but a quick sketch of a data structure might look like ... struct free_mem { unsigned long __page_flags; union { struct list_head buddy_list; struct list_head pcp_list; }; unsigned long __rsvd4; unsigned long pcp_migratetype_and_order; unsigned long buddy_order; unsigned int __page_type; atomic_t _refcount; }; Am I missing anything there? (Would you like to use separate types for pcp and buddy? That might be overkill, or it might help keep the different stages of "free" memory separate from each other)