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 EA0DEEE49A5 for ; Mon, 21 Aug 2023 21:20:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 694278E0012; Mon, 21 Aug 2023 17:20:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 61C7B280004; Mon, 21 Aug 2023 17:20:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3AB098E0015; Mon, 21 Aug 2023 17:20:23 -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 26FAA8E0012 for ; Mon, 21 Aug 2023 17:20:23 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id F3AC5B23E1 for ; Mon, 21 Aug 2023 21:20:22 +0000 (UTC) X-FDA: 81149380284.09.F53A2AE Received: from mail-qk1-f174.google.com (mail-qk1-f174.google.com [209.85.222.174]) by imf29.hostedemail.com (Postfix) with ESMTP id 17989120022 for ; Mon, 21 Aug 2023 21:20:20 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=cmpxchg-org.20221208.gappssmtp.com header.s=20221208 header.b=BaZjqyX2; spf=pass (imf29.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.174 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1692652821; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LRnUH0Y/cJ9krwZiEtlKN0GB1/YkkellcYchzKtezu4=; b=M75q54q9w7TL+CQYzPasvj8ktSBAzjhaLF/Bu1BA4PI/a/bN5I/Vyz1ddG+Cu9CsGCXODl bPK9nat2uF3A8aYEAq4h9/A8uR9T+v9+ZcGUWcXQ6qnxXzZIR5Dm+I3ZajXrILdUryiRZf bkIW5nok10WICtVgYChAhviXQ6r47J0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1692652821; a=rsa-sha256; cv=none; b=yzmGe6DpD0HQaD7occGytaOowpi/3/EAq32KQ8TDimGhH7xjECwsL/h72Tf75CkDlJXB/q R4prx+rqilVRsof2/biGVfR4Shm109MNtjEpQdvAiYCdloqry8dI6rf4tyoo2OIOaVXNwj 8tOAz3OrO2zeT5Ed2KZovSOkIvWoSrc= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=cmpxchg-org.20221208.gappssmtp.com header.s=20221208 header.b=BaZjqyX2; spf=pass (imf29.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.174 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org Received: by mail-qk1-f174.google.com with SMTP id af79cd13be357-76d83954c40so260118985a.1 for ; Mon, 21 Aug 2023 14:20:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20221208.gappssmtp.com; s=20221208; t=1692652820; x=1693257620; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=LRnUH0Y/cJ9krwZiEtlKN0GB1/YkkellcYchzKtezu4=; b=BaZjqyX2dFCUFHqFfRZTzPmnvFoqNb5X0rn7NZ3hKFilhQ/s+owk8mpWojzte/aQH7 9QMNYYFJfU5a9rS1ZTp/Fo6MCTQPlxVHMCpnNDbq91GtgGwfeTSLUUI7iLIggxAyq2W+ BlOYXIRJESm7JR707y2+hCIj0ZmzLlm/4nR1Gs2il2MivrVWlSMEfZQJXqXatATswdbK Rhxn/z/eFHLEaHygttvfaJNx4IlXlPMBAhZiaHzONRkgKLOkhX7SsPt7ifttzlabLAAb HSvnOCBlMT2LKoLEvu/l41zj71rCD3pXiejA8hVG/pVuqnuap7MNmckeGEQ8H88w8wAB mlTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692652820; x=1693257620; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=LRnUH0Y/cJ9krwZiEtlKN0GB1/YkkellcYchzKtezu4=; b=GFmz7LL1ACo4tKVjEnVYGtBK9K0cwRR17TJ/HR0Mw6HYg7Yi/rFW0yUTGwJnri/jxW VEnt4vM7mQUa3t6RiL9+Xkgy0gt2C21T9xrOS0djut3b+rvzU85xg0U9jzM935RARBM3 oKrWC0HcZwE265gu4A7evCLDyucU2pPpM9SeSvprPI4pIIxclewz57BIL7gWonWUfxwc KRgGzeRajGSQwwRgOpqmZaYveHcjnUmWHQvW4dupiTFrNBurOT+upKsllqzsS3TQKXth tjlj4X/YuAyidCZj257fe+Vg1CDtTFy+mPQCQVeEDFYCretde0MKM6b9QmVdmsNL3V2r WsxQ== X-Gm-Message-State: AOJu0YzAm3ayab6sirw3QbC5zn8u/ej/VL8/IlE3Z5kaSNMXkfkcG2zD NZ/nqShvYq32QHRcPZXTwXv3kA== X-Google-Smtp-Source: AGHT+IE+ONzVYzhjBw6oS/mHY7oaHz4X6cTo0zP2x+u/rlu2t8OLFTRCP9txXsMFV1DOXt1F+slDvw== X-Received: by 2002:a05:620a:31a7:b0:765:9f15:c324 with SMTP id bi39-20020a05620a31a700b007659f15c324mr9734068qkb.48.1692652820023; Mon, 21 Aug 2023 14:20:20 -0700 (PDT) Received: from localhost (2603-7000-0c01-2716-699c-6fe1-d2a8-6a30.res6.spectrum.com. [2603:7000:c01:2716:699c:6fe1:d2a8:6a30]) by smtp.gmail.com with ESMTPSA id k6-20020a05620a142600b0076c9cc1e107sm1502639qkj.54.2023.08.21.14.20.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Aug 2023 14:20:19 -0700 (PDT) Date: Mon, 21 Aug 2023 17:20:18 -0400 From: Johannes Weiner To: Zi Yan Cc: Andrew Morton , Vlastimil Babka , Mel Gorman , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 4/8] mm: page_alloc: fix up block types when merging compatible blocks Message-ID: <20230821212018.GB106501@cmpxchg.org> References: <20230821183733.106619-1-hannes@cmpxchg.org> <20230821183733.106619-5-hannes@cmpxchg.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Stat-Signature: mi9muaedosnmzknrdk5fggzhbegkqznz X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 17989120022 X-Rspam-User: X-HE-Tag: 1692652820-209657 X-HE-Meta: U2FsdGVkX193Fnz8z6dvAvNea2i0nknZHzoobd1qr9S56PJ+cihOhu2iLYgHtbUaalwOUvNIbZmFvpYgPbAG4OwoGdwUIUOAEwCP0vLd3CffenizbdJV9yTqDMLJ45BqsG9CQFuKZaPVOZ252baYLFmYdT0zqDL4afgJwv3rfY+XDEx3jlpFOEhhe+vFbsY5bLoNLikFpe3fk1Jsx9Lb7FBde8E4AXViOaoru828qo+WJ9hCwk5nSnGeYN4CZ1AGqLrD+ZWkftgwlS4PYIBixx27oG1mgi84yBIzfcQkTm2KPRBttTCM40mDDmU+0jDo9d7mHIfCWHn3znMZOTmM9Q75puK2MRe8bhTNau3eJwYEUglwLYaCC4vHle7g1vkcGfi86oukhJ/zPEt8ll9Qhnvrzr9QbqJzZ5kCqFne+bOjKEt3LqaDjI0rAVYJ+HrNIV5vaFvR3wHZf4vn14J+wBQG2MEZENGNSH+RHy8YOqdZJBwzR96ngCSlI3H2iF9Q67gYvO4JFPCL0zK1Po0lsbjTpbp6BZh7PLsFFOQXsOXsxdGdgyU4nKoYfDkLGQp5cDZCdCsmeSdXr3ofqWdoDNLj94RFucznTOImFfmhp0YNhkMlikO5Ino+Btwv3gzadASiAuOgdZHRM3ZjOZFJ0gXwM23rtJJ8QE23skcJ8K91wgGT6YOAnJiNToDI9Po031GNcaq6a9mKRwTZrJh4t3gPDbVq+7t9d8npqSMVqisHRRt7Sn0YrGgA9e+kmgRPkRuPyD3gXcLNzKW9TVXuJPHpNVWBKoXEADYyHuFRM48GVCk1vdkmU+edtOs3HxiMRJshsOz6//lkcvCfVXXWgUwCLdiAO4Feru95fijzLhtoD+AWh4ncBGhIpMT/Ci2vSU8qp2OuR6ZZ0WEW67mom9gWZ1YKKaMFKcX5i6Ix8iHWtddW+n/2v3DE4Ay+uR8qLcAMC+eI2GrDbwtPqd9 W/1LcBbH b3A1a8PfGfcncd650+xh7awF3Lrr4ejPa0kYf4of0sLOfWLR/5Fd1efau1rfhYaJ9kcJOsmW/Sr79QeR+tyKeGiVBFTk/eNmnXZCLDVHF1i4J9wokhJRQeZ1Wz9BGiVbRMMv11Bw/r39bbo9oCKGDLd+Vx32xFfqFv2dj4WweMe5YPDkUwW47x5z/xe4BMHsSfuIOMPhuT8dzJQrAUfu6G1rww6NkXlxN3CSA1tNJV7qVMjh5nGVy4i56ygCRVuTC6CipgzeH8UPUNAKXLpkmZ9O8yNrqQAuPKNtU2wQlxeQDieTCHU2rVM9F/glj1GciTcFDS7fob0l96wpvVIIthvPqykt7Ukpz0K6H9pJseXu2OsM1FAs1L+R1QW6+Xsd75DMgwfTYm2zusO9lu128agRpuGWJYUfl3ax4xwprmZJ28yL/f9GPW6PbDYl3xRkcezo0tnmrum0y0z2dNehF2rSofSfvjVpcUm99K51Rr4oeGsZc71YgR9wl9Q== 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 Mon, Aug 21, 2023 at 04:41:44PM -0400, Zi Yan wrote: > On 21 Aug 2023, at 14:33, Johannes Weiner wrote: > > > The buddy allocator coalesces compatible blocks during freeing, but it > > doesn't update the types of the subblocks to match. When an allocation > > later breaks the chunk down again, its pieces will be put on freelists > > of the wrong type. This encourages incompatible page mixing (ask for > > one type, get another), and thus long-term fragmentation. > > > > Update the subblocks when merging a larger chunk, such that a later > > expand() will maintain freelist type hygiene. > > > > Signed-off-by: Johannes Weiner > > --- > > mm/page_alloc.c | 37 ++++++++++++++++++++++--------------- > > 1 file changed, 22 insertions(+), 15 deletions(-) > > > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > > index a5e36d186893..6c9f565b2613 100644 > > --- a/mm/page_alloc.c > > +++ b/mm/page_alloc.c > > @@ -438,6 +438,17 @@ void set_pageblock_migratetype(struct page *page, int migratetype) > > page_to_pfn(page), MIGRATETYPE_MASK); > > } > > > > +static void change_pageblock_range(struct page *pageblock_page, > > + int start_order, int migratetype) > > +{ > > + int nr_pageblocks = 1 << (start_order - pageblock_order); > > + > > + while (nr_pageblocks--) { > > + set_pageblock_migratetype(pageblock_page, migratetype); > > + pageblock_page += pageblock_nr_pages; > > + } > > +} > > + > > Is this code move included by accident? Ah, yes, my bad. I used to call change_pageblock_range() at the end of the merge, before adding the coalesced chunk to the freelist, for which I needed this further up. Then I changed it to dealing with individual buddies instead, and forgot to drop this part. I'll remove it in the next version.