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 B0278EEB58C for ; Mon, 11 Sep 2023 20:47:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2E7F96B02FB; Mon, 11 Sep 2023 16:47:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 297D56B02FC; Mon, 11 Sep 2023 16:47:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 160C06B02FD; Mon, 11 Sep 2023 16:47:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 06BAB6B02FB for ; Mon, 11 Sep 2023 16:47:56 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id C787B1CA67C for ; Mon, 11 Sep 2023 20:47:55 +0000 (UTC) X-FDA: 81225503310.12.06B19F6 Received: from mail-qv1-f41.google.com (mail-qv1-f41.google.com [209.85.219.41]) by imf04.hostedemail.com (Postfix) with ESMTP id D19BF40019 for ; Mon, 11 Sep 2023 20:47:53 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b="WfZ5M+/D"; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf04.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.219.41 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694465274; 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=3nc86XBgLo7ErF3UUFAsbqP+wWaEBHhyzI9ZZPJ5hAA=; b=lxFeQ1faOAfcu+eCQIVnhCxdXoJqrmbx0HhgG5lEIccZ3gjGVwo1605noraRP9hZozezXb Casr8Bz5VnaOQVR1zTTrUR3+NMOzOt6lEFm7kmEl2ri2QAGv4GTuesHqk3xTad6Lqrqxd/ ntjjzIGNdEwmOZ9CK1g97TacAQFR9WY= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b="WfZ5M+/D"; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf04.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.219.41 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694465274; a=rsa-sha256; cv=none; b=LwbWvXGvgJhU00kR5Tm8ZGaHimboMh5Ji9J5SmOkZ/rzlLc4V9xppueVcxZRi0HmU8cYKP 8UI+b9uTnWMkggZuEmoRcFSsM8bX7N/vK5oNiDjLZceA/vdxxQdbQMpu73WbqHGnjGtI/C 16D8GY3n1Xcc46CwinE3Nqv3uE5JOSo= Received: by mail-qv1-f41.google.com with SMTP id 6a1803df08f44-655cee6f752so17727306d6.0 for ; Mon, 11 Sep 2023 13:47:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1694465273; x=1695070073; darn=kvack.org; 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=3nc86XBgLo7ErF3UUFAsbqP+wWaEBHhyzI9ZZPJ5hAA=; b=WfZ5M+/D9/QCg9C++9mS3UZmgKwAfgJvuP4lnn13ZGF3eW5O4F+fVP2YYoJjN12oZw lEoIybezfdjefhvcsJPFhMDiwcxFRHJXgdkyBXCkY+iR24HiidPxddH6AeDqs7SNX71M tLOCDMVlt8Mrj+otILbgazSM0rMj6UzV4BuoTI43FCF+0fcY8HEI1aecsRrXUCbaqOwP fffHNnXG6VEjQl53pA+UPXIYAM859wdf+URdL9f13bMqyuVurJl6P8MpMRkLfhsogjgW jfZSJurxWylOs/N3MO+vXMDtz+8TEedehOdvcXZJl63tP+DqstyWIe/+Yhu0IcvBQ+0h mbtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694465273; x=1695070073; 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=3nc86XBgLo7ErF3UUFAsbqP+wWaEBHhyzI9ZZPJ5hAA=; b=eYu8acVEmIdKn2OmjRTWHR8CWuInNdemBBIi/apmIV3HF2xcZF1gwDZi8sDThwa/m3 ye/P7BfriuernXRK8kuT1IE+GZu3jlYrQS36gbyzMdcmtHR9/kHtS/SbldlLPedA4F4k QNLsGZ//inE+Mnn8+f83jjI/mM4HJj3lKR6t2cQ4B3WyfgVO6As1M751Q3p7prvX2HWc fKXP1GUJfxGUStQGqSf2eTBNQb4qgg0DKCGdHLC9KFUwrt+GqaP9UirLoOBFESnmNiZF p8TTt7+WNaMCsNdkrzhbyz0zrO3LqtWNPzT+vyJtKwrGDM1NA4PQBsygo/1JjnmzT3Fl mNwQ== X-Gm-Message-State: AOJu0YxreY0PcLKQkebzscJovN3JYrcY/TAar8M9aZUAspJ2P6S32KU4 fN1yArHfRn9YG5Jo+MSFxSzsYg== X-Google-Smtp-Source: AGHT+IEVhNYzRVmY9EXHxYD1+XBVn/eWB+0jTvTfNWuLbix5EQD4YubcV4K6gRAWBbRQLKJN2uxKHQ== X-Received: by 2002:a0c:ec09:0:b0:64f:5b21:f162 with SMTP id y9-20020a0cec09000000b0064f5b21f162mr10475558qvo.61.1694465272771; Mon, 11 Sep 2023 13:47:52 -0700 (PDT) Received: from localhost (2603-7000-0c01-2716-3012-16a2-6bc2-2937.res6.spectrum.com. [2603:7000:c01:2716:3012:16a2:6bc2:2937]) by smtp.gmail.com with ESMTPSA id u1-20020a0cdd01000000b0063d316af55csm3183284qvk.3.2023.09.11.13.47.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Sep 2023 13:47:52 -0700 (PDT) Date: Mon, 11 Sep 2023 16:47:51 -0400 From: Johannes Weiner To: Zi Yan Cc: Andrew Morton , Vlastimil Babka , Mel Gorman , Miaohe Lin , Kefeng Wang , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/6] mm: page_alloc: move free pages when converting block during isolation Message-ID: <20230911204751.GA134811@cmpxchg.org> References: <20230911195023.247694-1-hannes@cmpxchg.org> <20230911195023.247694-4-hannes@cmpxchg.org> <23206152-6E36-453B-B118-6BBAA913441B@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <23206152-6E36-453B-B118-6BBAA913441B@nvidia.com> X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: D19BF40019 X-Stat-Signature: q6ya93a8uc11tyuzm94cgrhfmy9h7z93 X-Rspam-User: X-HE-Tag: 1694465273-311997 X-HE-Meta: U2FsdGVkX18L6rAaGxpTa/pR/kBdw1GtNb8E5QEbws5YrVgznX+2bBuLGpruQdgFcSG1ne53FyY5g4AmmWCYLrymhvlvfIaBcKZ+Bn2CKBZkrIuw5f0CBxCc1BFROSwXiO5I3S+9EiwKPkgha8DenizOzjcS79hIR7BXzLOVXf1KQdH2sSyLvWhMCJOeFDJ2UDuxVGiEbiu+LNKo2SEwOK2Ot5V/CBwOEVGOV5fcn4u6XTBoK/G/27KPLKy4OKgE9C0EKbzzdC5/GGFitnS8KvhgaQF4gTu02yJz5pxMoX9whEI5WFcf8CJsyQKvvtbh/xFI/imdXZ/l9+BYF0m4oIQmofKjJvheJA+6r1dvpNq5dVj2Vyh876OrupfIPj/1N8/aprPllONOo9K5y4mine44n9WHyfWq/cX13qW69o6D7Dfc0pCBJbWx84szLtB5bMj1kkah/6ol0o1+/fLqjg75s9DLsif7geXh0EmXZ+z4kEXCrpOxt/7ypbtSP/lDsfiafTnXk4fmyppdl8xd+rsCS3rV5Tl/ruP3egoVVxvALzaV7KCPv84z7FffEcvZaJbfMgW1uEsDucULtQnfTkG8RyARnQuKrXDmhtPBQq4yJvIHzPUmTpiWqrI0wyRLG4szZDhbFUuX9TmKT9Loq4uQB9+O3s2BP8IAIRHDO5IcvU/LTqOO6nrAjq8XrZwj03H5SUN3mqg6nWmmpHNZcervzWg+FwItVV2Mbw5axElBKkI+8F2HO233q859b9yyCE7HlbTm5nsmaRM7BocWGcA/MwB/Qz6E+pvkT9YLgBWDjPEfoWe2p2P5Pk18txNFe2Et6uzJbZpUhr76Bg2xrrPj5w/QE4xWZc+673Q0MBwWD8EVUhEipikwUv7EjssM7EL/Du6kDTjRz6hQihOcXrvTA9q+NF4lG0Nzq6C7h1Yh/iOiQw23z02ciELQ9zD5Xj3vNcAAiGnHtNrhuLD dEHzR0Mo 3SlcfQHxJdPhUsNBpY7SbvV8ejHD5wo6jkpqmGf2w8WAbhTVQaMcSJJzvoRWPtT7m9Lsfu9OrioLDbLnj80h0Z7pvrrqSa4xgJC+bVyz32F1Dwc29R1ICfuwIpmCzCYb8ECreAIBEE9Zc02BtR4Tje8HAfS7sKzz6/TTdFxeG4/zgHvWXQY8FKiopdMGMkJyD77gSlzfMgCKr1GNwhQqo/tzQbfFYOEUDpNrDSojIt7UNIzYW15Ku98y/w2tXlN85Udff+YnjT2Ig0NwPzwQeOJ8IWXR5zYycFbRth2v5JwycLAYdFMW7/1cbFMYfErBth8oF30l0NyD9ZJDZYLAkAcUif5XSeR0BgCPpNZ0MebkYTlgJOmmz3c/B/nJbKja2QcTTwQhkj3UAlxedPFlmubstjOdo6vkyzyZredxEOrYOanOkDQiD3/E3c7bSUwAH6X6hnsQSDMtNIOjjLgGr4nFb7FyGV1LtF8OolbPXjsSJxg+m/4XQ8X4IXg== 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, Sep 11, 2023 at 04:17:07PM -0400, Zi Yan wrote: > On 11 Sep 2023, at 15:41, Johannes Weiner wrote: > > > When claiming a block during compaction isolation, move any remaining > > free pages to the correct freelists as well, instead of stranding them > > on the wrong list. Otherwise, this encourages incompatible page mixing > > down the line, and thus long-term fragmentation. > > > > Signed-off-by: Johannes Weiner > > --- > > mm/page_alloc.c | 5 ++++- > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > > index 3db405414174..f6f658c3d394 100644 > > --- a/mm/page_alloc.c > > +++ b/mm/page_alloc.c > > @@ -2548,9 +2548,12 @@ int __isolate_free_page(struct page *page, unsigned int order) > > * Only change normal pageblocks (i.e., they can merge > > * with others) > > */ > > - if (migratetype_is_mergeable(mt)) > > + if (migratetype_is_mergeable(mt)) { > > set_pageblock_migratetype(page, > > MIGRATE_MOVABLE); > > + move_freepages_block(zone, page, > > + MIGRATE_MOVABLE, NULL); > > + } > > } > > } > > > > -- > > 2.42.0 > > Is this needed? Yes, the problem is if we e.g. isolate half a block, then we'll convert the type of the whole block but strand the half we're not isolating. This can be a couple of hundred pages on the wrong list. > And is this correct? > > __isolate_free_page() removes the free page from a free list, but the added > move_freepages_block() puts the page back to another free list, making > __isolate_free_page() not do its work. OK. the for loop is going through > the pages within the pageblock, so move_freepages_block() should be used > on the rest of the pages on the pageblock. > > So to make this correct, the easies change might be move > del_page_from_free_list(page, zone, order) below this code chunk. There is a del_page_from_freelist() just above this diff hunk. That takes the page off the list and clears its PageBuddy. move_freepages_block() will then move only the remainder of the block that's still on the freelist with a mismatched type (move_freepages() only moves buddies).