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 CEA1AC4345F for ; Wed, 24 Apr 2024 22:32:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3251D8D0035; Wed, 24 Apr 2024 18:32:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2D56A8D0031; Wed, 24 Apr 2024 18:32:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 19D008D0035; Wed, 24 Apr 2024 18:32:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id F00778D0031 for ; Wed, 24 Apr 2024 18:32:27 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 7628E802F0 for ; Wed, 24 Apr 2024 22:32:27 +0000 (UTC) X-FDA: 82045875534.10.9BDD6F0 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) by imf13.hostedemail.com (Postfix) with ESMTP id B37332000F for ; Wed, 24 Apr 2024 22:32:24 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=eiEaV8tP; spf=pass (imf13.hostedemail.com: domain of shy828301@gmail.com designates 209.85.218.52 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713997944; a=rsa-sha256; cv=none; b=3p0nA/vIS6d0AHXqnr6Z62kLgG02wYUOnAhXzD0lKXejZ3Hp2cmW/6lfDXdwXpsLRdv6yW KpHi3/UsUyCT+MpisFE7LdvlTJZCvXi8nW6VKjYNRG+SVDK2Pl+c1hpw8qwViihIV+X2ZQ M1ZENzC51PAllZdKb9dzbMJYD0nW0Qg= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=eiEaV8tP; spf=pass (imf13.hostedemail.com: domain of shy828301@gmail.com designates 209.85.218.52 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713997944; 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=a1VSqOGp+cTDD3FwVgodoOnkI+tY2YGNCkhcEt2wmrs=; b=Ihz1BpFWxCWop2cJJnjm8kBiGxzt4G2yLa644XmUToBwigIooEnmB7g47kMir5one0CceA hfxC0xjFcwhXukoR74YR8d+UN/vh5zbFg0l9DbmGQ9qQKlHxyfjoQVXjtf6MEEX6U0V6jF ie8o0CIpBMPLsIa2XzvHH7AKqhu8I8k= Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-a587fac79e5so41993866b.3 for ; Wed, 24 Apr 2024 15:32:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713997943; x=1714602743; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=a1VSqOGp+cTDD3FwVgodoOnkI+tY2YGNCkhcEt2wmrs=; b=eiEaV8tPb3iG9dvz8lu5a9ftrtptf1RWpl4F66+3oMZpEVYds8kxHu8VawoxT4IbaJ ER+ZOSRTMLCTbdDBAAG93kPA7YFJeMmH6fpUBObWCGMzIwYahBJryLrsV669JiNVfQi1 NTRD9J3jh80QJfbpjMK3Hc8tczSM/q31Xgb+ms97cOWxpVKoZKHXngny3gVeRxriqYyD mdVmT2TDW/7ePMGf2yHL8FklgIe3OFeKmB5P8wMGr/s4FZ/UO5V0A6wtdl+1rMxWzX/c ddPpNdUcYs9yGOyKNhSKbr8Tm+qQHv2pXK7lfvQyTo6BgZzsQqQe69KYxvA0VPet0qkc wfSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713997943; x=1714602743; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=a1VSqOGp+cTDD3FwVgodoOnkI+tY2YGNCkhcEt2wmrs=; b=aXO2YaSKWCTio7mL72ZZsaghG1Q/hd7zxHWGfykMvzrMcEV+H0H/etGGwNKZjdoCex 4RRwEJ1JGCPqIfJat3bB04e+imPwgWSBaMfWlIN+6MtpCvhKtfjwgWC4Ef7nWyeA3t/A rRDGa8Ef143bfcmnWN4F6FdcN1PvRoHJJ0Fb231HFB9WOBim3nEhEAjUQ1th2qEdO5Rv Z/FlOlP/Dffq0686HKPWpixJEwP0HJHwcfyWItRfWqfjGwHqU5MLh/jwvWbqIqtwYM5U 357OzCUqEiUDakB5jh2EKCf6I7V8tFXIYPo8q9c8a/MZS4Zz6ROV41nuIOuS5XndrDOL Ne0w== X-Gm-Message-State: AOJu0Yz/LN7giNSbB/gbHrD6qpCUxSkOhU8WRnPQ2X5QXx79w5KEI3iZ nDFxO3wDrSqM5fdRLO57QBuRCDoqQr7j5RHw8YYSv/QcpNsBEellGjj5x/JxrJer2fbuwJ/9cja xYw+k4jdVunK0Wy/K/A1fgTXZ7As= X-Google-Smtp-Source: AGHT+IEqtFmD6v9c765dugMGoqkOjGlWjaNOWIqmuj7vQIcOYL0B0PAWJepn5edmJtBLhZQl5RDy339oHFM/1lING+A= X-Received: by 2002:a17:906:f9d1:b0:a52:5d89:5f27 with SMTP id lj17-20020a170906f9d100b00a525d895f27mr2602963ejb.14.1713997942903; Wed, 24 Apr 2024 15:32:22 -0700 (PDT) MIME-Version: 1.0 References: <20240424211031.475756-1-zi.yan@sent.com> In-Reply-To: <20240424211031.475756-1-zi.yan@sent.com> From: Yang Shi Date: Wed, 24 Apr 2024 15:32:11 -0700 Message-ID: Subject: Re: [PATCH v2] mm/rmap: do not add fully unmapped large folio to deferred split list To: Zi Yan Cc: linux-mm@kvack.org, Andrew Morton , "Matthew Wilcox (Oracle)" , Ryan Roberts , Barry Song <21cnbao@gmail.com>, David Hildenbrand , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: B37332000F X-Stat-Signature: s3x777focdefuhr8hdd73bxpeqmdkdfk X-Rspam-User: X-HE-Tag: 1713997944-842189 X-HE-Meta: U2FsdGVkX1/ImzZ65yzpI2ILP4GT7BnwBbozF32NIyIy+PbKaC4x/E6OZL4a40JxrtQaDFUY0kr33B2Nrp3E7Q2qI4fa5Eyp7VFQWd+9xZPvW230F7kKOMvzrR/InmRAE8fNR+4PYjRw+qnmBAQ/xA3TbVea7Rsju2JhF8nwKrm7MLKtwl0IzAwRLFypO1WzcHEAUp2/WFJeyUHF6zTHhw6C6AYEEM0WXSF1zk08hRWDIPP8oZIg7v6dYFmnukJoQ647VQb5v5ff71m5fSEtYpRsfYMGtaWp7drJAKa7SNsKXYIzBW+nC3zWLGzJQ3XLhpj+SndCVbwa/fd1xdgZSgcjURgmrwMd/BGTeLHdiHLRRXFT/RtX1q+13Aikv9dEFzRJfP6r8++d+xPDNj9GMFC01pSRiH5UL3J496MlR+Zo4oo832cejeocUu1FtbY6ZoHUG4iS4d7UXBcnZFn3y7EkaDV+BZwkFr4tlFlWFBy8RC8rcrzdJcoLg0tYYeWUQPjQVnqucMBrgCDZvE7eDB5aPk69ZhJnq7ddTtKY0EFJ+Ibvcn6/JJxap85qV++bf6vBV2wzBFYqCyHJd+rhIxYTK7EpPNpxKPJZjc0FcJ0PJwTFV2rBbMaA6NRYfOuX8D1OlVLR1zcMCiFVn2svcuSQ/pIrSVryHdbJoBpZAhH//dHKru7EArBtQiQvpnYFau5mlC++pYLuSSw2W+ksqiYCzcb8GYC8RQXJBRxpoihyi7nU2I6+6TAi5SfDuU/40RxLg2ptqEBj3FAIYurvNe6jaZ5jfiAXsaB1H2GIjycbcWIKq8quhwsQQSaow4uuykxaO3zjawfhhW6MNG438Le19kdt0pxh5QkBOaI2T1kUWFBKFNZtryDkI0/YcZijk16wDo9s3wDkw9PhXehx23fezVvsJ5FPtggOr2r3BjX+kaIFzR63vqOuLkSyxGcoRDvZERKFzNedLoi0ohg 3Fd0Kpgq UHO69K2PaM+fWysdQ87T03E2bEPlGdJkR4qPzQlRuIzN9E+PvKgaFBUlUUQ9UXY9nBnNOGPnIz0YzmOPoNZZFh976DGcnro3SmIKFPO/Xh3yBZOIF8oi0+8HuvZ67bxx030SUvK/5h7M+nFy2BatzvbbReIAPr2mq15n9PuHeDxZwKW+4TyBZoAokQcKyIi7SZHCraqWH6vVb72p65R5Dt5LRjkOfu/woAFrEJTcI8f7/bYKQ3qTF6E1XQrXoTyUSBLoKE6PiSIe3B3Jcq18Ec1p4B/eRRV9UjQxWNscgbnMeBLJ6zvKTBhludwaB/pY3jnnyHP/4I9Wc7/kakhNXo9YcrUVTb3U6IGd6EJU/Ks/GN6ga9bK+HYBhT5iIR5NPIDYsp2niMW0YkbfQLbk/5pIUeLJt21NjUNqT7kheiJJ3OyL4bH3nNp8Ayt7lV8+tISuQkDTnZMgY7w4= 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 Wed, Apr 24, 2024 at 2:10=E2=80=AFPM Zi Yan wrote: > > From: Zi Yan > > In __folio_remove_rmap(), a large folio is added to deferred split list > if any page in a folio loses its final mapping. It is possible that > the folio is unmapped fully, but it is unnecessary to add the folio > to deferred split list at all. Fix it by checking folio->_nr_pages_mapped > before adding a folio to deferred split list. If the folio is already > on the deferred split list, it will be skipped. > > Commit 98046944a159 ("mm: huge_memory: add the missing > folio_test_pmd_mappable() for THP split statistics") tried to exclude > mTHP deferred split stats from THP_DEFERRED_SPLIT_PAGE, but it does not > fix everything. A fully unmapped PTE-mapped order-9 THP was also added to > deferred split list and counted as THP_DEFERRED_SPLIT_PAGE, since nr is > 512 (non zero), level is RMAP_LEVEL_PTE, and inside deferred_split_folio(= ) > the order-9 folio is folio_test_pmd_mappable(). However, this miscount > was present even earlier due to implementation, since PTEs are unmapped > individually and first PTE unmapping adds the THP into the deferred split > list. Shall you mention the miscounting for mTHP too? There is another patch series adding the counter support for mTHP. > > With commit b06dc281aa99 ("mm/rmap: introduce > folio_remove_rmap_[pte|ptes|pmd]()"), kernel is able to unmap PTE-mapped > folios in one shot without causing the miscount, hence this patch. > > Signed-off-by: Zi Yan > --- > mm/rmap.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/mm/rmap.c b/mm/rmap.c > index a7913a454028..220ad8a83589 100644 > --- a/mm/rmap.c > +++ b/mm/rmap.c > @@ -1553,9 +1553,11 @@ static __always_inline void __folio_remove_rmap(st= ruct folio *folio, > * page of the folio is unmapped and at least one page > * is still mapped. > */ > - if (folio_test_large(folio) && folio_test_anon(folio)) > - if (level =3D=3D RMAP_LEVEL_PTE || nr < nr_pmdmap= ped) > - deferred_split_folio(folio); > + if (folio_test_large(folio) && folio_test_anon(folio) && > + list_empty(&folio->_deferred_list) && Do we really need this check? deferred_split_folio() does the same check too. Bailing out earlier sounds ok too, but there may not be too much gain. > + ((level =3D=3D RMAP_LEVEL_PTE && atomic_read(mapped))= || > + (level =3D=3D RMAP_LEVEL_PMD && nr < nr_pmdmapped))) IIUC, this line is used to cover the case which has both partial PTE-mapping and PMD-mapping, then PMD mapping is unmapped fully. IIRC this case was not handled correctly before, the THP actually skipped deferred split queue. If so please add some description in the commit log. Otherwise the patch looks good to me. Reviewed-by: Yang Shi > + deferred_split_folio(folio); > } > > /* > > base-commit: 2541ee5668b019c486dd3e815114130e35c1495d > -- > 2.43.0 >