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 X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2D918C4742C for ; Mon, 2 Nov 2020 16:39:51 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 940F722268 for ; Mon, 2 Nov 2020 16:39:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Gg8NJGKq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 940F722268 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id F22716B005D; Mon, 2 Nov 2020 11:39:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id ED4156B0068; Mon, 2 Nov 2020 11:39:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DC2EC6B006C; Mon, 2 Nov 2020 11:39:49 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0119.hostedemail.com [216.40.44.119]) by kanga.kvack.org (Postfix) with ESMTP id ACF5A6B005D for ; Mon, 2 Nov 2020 11:39:49 -0500 (EST) Received: from smtpin15.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 355561EF1 for ; Mon, 2 Nov 2020 16:39:49 +0000 (UTC) X-FDA: 77440039698.15.sort79_0b0d9ac272b1 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin15.hostedemail.com (Postfix) with ESMTP id 8FC0A1814B0CA for ; Mon, 2 Nov 2020 16:39:48 +0000 (UTC) X-HE-Tag: sort79_0b0d9ac272b1 X-Filterd-Recvd-Size: 6716 Received: from mail-ej1-f68.google.com (mail-ej1-f68.google.com [209.85.218.68]) by imf40.hostedemail.com (Postfix) with ESMTP for ; Mon, 2 Nov 2020 16:39:47 +0000 (UTC) Received: by mail-ej1-f68.google.com with SMTP id p5so19796644ejj.2 for ; Mon, 02 Nov 2020 08:39:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=B/opXhjxVMn7dgQCgM7LMi0cf/+TlZIo/peykaGDUVo=; b=Gg8NJGKq96Wv5WC/mk6lOMHNlv2IEakY+2VmUyrKm82ZxPIM1gk4glArjTsiA7w3NL baoFCODuW1dfrDl1CYxJ1zcmV3PxBE2pSY5e1xAcv1wDyt5v6T/31bj+YSWilYtzQ/9S QaWlbLEnwzrd2wzKDMzwqRA103H097kNusfaa1cLgUpAFVyl+WCVTOUwdr5mSpQZAmkV oG6GEH0wGBPgRFxmfJy0z8b4vnDCGkUUxZJKbLj1/E9WJaX+bQiyRmtMNd5zEr58cr1N /OdhlDaxW7QS1e7Ryc+EnfOys6nuDZ+aWkFb3fmXSMG2ChjAlCScWoU+wcpfLc0V3bOY bmbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=B/opXhjxVMn7dgQCgM7LMi0cf/+TlZIo/peykaGDUVo=; b=Gf5iRJjnYqXZ7xweF3bmY0G7HNpGTp7Ck6CcankmM29AAPJz1znTZYPwbKhn/Eguln AfohGAIdy6ZWwoDUvuwo7P+xklOe4zHefdhxwXdahKW1TnHolugosweMN3AuC1LqYBSn CtB0UPfp/XSFcnF1b5SY/Es9a8kWNhPjvFDDS25nS7Gk2efyJ2H9XAKnQ++mVqnhkjX3 mTOCdTaeDscP+aIsL+tw2fX95lpdG17B/TD7hU6fp6JoAPDeu7pr3NCZCa7mcKOC+7G3 S2xQJclJWBNWpgjyilyIG1jq/nOhEZOdzmG/Q37zTX0ChDaCqbkGb+Uzz/+dFVV2dFDw s4Mw== X-Gm-Message-State: AOAM533TyjHbyS0Tb4TuoyiHJM4hVR8A3rLSX3com6DU1oOy76hRtyUu FLS/g0yX/7Or7fypSVy+fxgNXenzEEwJsy83QcA= X-Google-Smtp-Source: ABdhPJzYWyBWQeE/ZzYre2IhqnKkQJMMpFCMDRwy6L0pz6BdCd/4La6FwRYvJMyInwzd05osDe4AVvuF1oGKfm7UOZA= X-Received: by 2002:a17:906:814:: with SMTP id e20mr3050113ejd.514.1604335186678; Mon, 02 Nov 2020 08:39:46 -0800 (PST) MIME-Version: 1.0 References: <20201029200435.3386066-1-zi.yan@sent.com> <20201030094308.GG1478@dhcp22.suse.cz> <6CAAB1FC-2B41-490B-A67A-93063629C19B@nvidia.com> <20201030133625.GJ1478@dhcp22.suse.cz> In-Reply-To: From: Yang Shi Date: Mon, 2 Nov 2020 08:39:33 -0800 Message-ID: Subject: Re: [PATCH] mm/compaction: count pages and stop correctly during page isolation. To: Vlastimil Babka Cc: Zi Yan , Michal Hocko , Andrew Morton , Linux MM , Rik van Riel , Linux Kernel Mailing List , Minchan Kim Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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, Nov 2, 2020 at 5:03 AM Vlastimil Babka wrote: > > On 10/30/20 7:55 PM, Yang Shi wrote: > > On Fri, Oct 30, 2020 at 11:39 AM Zi Yan wrote: > >> > >> On 30 Oct 2020, at 14:33, Yang Shi wrote: > >> > >> > On Fri, Oct 30, 2020 at 6:36 AM Michal Hocko wrote= : > >> >> > >> >> On Fri 30-10-20 08:20:50, Zi Yan wrote: > >> >>> On 30 Oct 2020, at 5:43, Michal Hocko wrote: > >> >>> > >> >>>> [Cc Vlastimil] > >> >>>> > >> >>>> On Thu 29-10-20 16:04:35, Zi Yan wrote: > >> >>>>> From: Zi Yan > >> >>>>> > >> >>>>> In isolate_migratepages_block, when cc->alloc_contig is true, we= are > >> >>>>> able to isolate compound pages, nr_migratepages and nr_isolated = did not > >> >>>>> count compound pages correctly, causing us to isolate more pages= than we > >> >>>>> thought. Use thp_nr_pages to count pages. Otherwise, we might be= trapped > >> >>>>> in too_many_isolated while loop, since the actual isolated pages= can go > >> >>>>> up to COMPACT_CLUSTER_MAX*512=3D16384, where COMPACT_CLUSTER_MAX= is 32, > >> >>>>> since we stop isolation after cc->nr_migratepages reaches to > >> >>>>> COMPACT_CLUSTER_MAX. > >> >>>>> > >> >>>>> In addition, after we fix the issue above, cc->nr_migratepages c= ould > >> >>>>> never be equal to COMPACT_CLUSTER_MAX if compound pages are isol= ated, > >> >>>>> thus page isolation could not stop as we intended. Change the is= olation > >> >>>>> stop condition to >=3D. > >> >>>>> > >> >>>>> Signed-off-by: Zi Yan > >> >>>>> --- > >> >>>>> mm/compaction.c | 8 ++++---- > >> >>>>> 1 file changed, 4 insertions(+), 4 deletions(-) > >> >>>>> > >> >>>>> diff --git a/mm/compaction.c b/mm/compaction.c > >> >>>>> index ee1f8439369e..0683a4999581 100644 > >> >>>>> --- a/mm/compaction.c > >> >>>>> +++ b/mm/compaction.c > >> >>>>> @@ -1012,8 +1012,8 @@ isolate_migratepages_block(struct compact_= control *cc, unsigned long low_pfn, > >> >>>>> > >> >>>>> isolate_success: > >> >>>>> list_add(&page->lru, &cc->migratepages); > >> >>>>> - cc->nr_migratepages++; > >> >>>>> - nr_isolated++; > >> >>>>> + cc->nr_migratepages +=3D thp_nr_pages(page); > >> >>>>> + nr_isolated +=3D thp_nr_pages(page); > >> >>>> > >> >>>> Does thp_nr_pages work for __PageMovable pages? > >> >>> > >> >>> Yes. It is the same as compound_nr() but compiled > >> >>> to 1 when THP is not enabled. > >> >> > >> >> I am sorry but I do not follow. First of all the implementation of = the > >> >> two is different and also I was asking about __PageMovable which sh= ould > >> >> never be THP IIRC. Can they be compound though? > >> > > >> > I have the same question, can they be compound? If they can be > >> > compound, PageTransHuge() can't tell from THP and compound movable > >> > page, right? > >> > >> Right. I have updated the patch and use compound_nr instead. > > > > Thanks. Actually I'm wondering what kind of movable page could be > > compound. Any real examples? > > Looks like there's currently none. Compaction also wouldn't work properly= with > movable pages with order>0 as the free page scanner looks for order-0 pag= es > only. But it won't hurt to use compound_nr() anyway. Thanks, yes this is what I thought otherwise we have troubles in migration path too. > > >> > >> =E2=80=94 > >> Best Regards, > >> Yan Zi > > >