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 A460BC4345F for ; Thu, 25 Apr 2024 09:21:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3883F6B009B; Thu, 25 Apr 2024 05:21:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 335376B009C; Thu, 25 Apr 2024 05:21:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1D5976B009D; Thu, 25 Apr 2024 05:21:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id F07FB6B009B for ; Thu, 25 Apr 2024 05:21:25 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id A2E7C811D6 for ; Thu, 25 Apr 2024 09:21:25 +0000 (UTC) X-FDA: 82047510930.11.8675A00 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) by imf10.hostedemail.com (Postfix) with ESMTP id CE6D2C000E for ; Thu, 25 Apr 2024 09:21:23 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Pp09Wah5; spf=pass (imf10.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.53 as permitted sender) smtp.mailfrom=ioworker0@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=1714036883; 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=KE8GiAVvHFw1cHCNgHzSoH9bicMfpW/mOredZ8/si0Q=; b=CHf7Kyg+nxbC2gxAskxks+FOqgrS3/+fXX4DZLxawxnoAvwmlxnZ+D6xiGv1JE86lCfDIb px2joK9MdNUqRrnI/EkYr42pX88U+QUCHyf/fGZYExs82zj220+99tyt4pRXlSknuE2mxl klRnpKHMXzGSizhognZNCBgXbCK288s= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714036883; a=rsa-sha256; cv=none; b=7naoBW+iV8UmW42J1MmGb25NRXSesHrih5AD5sSLxKDkYHrkAoEhY/bNrFQNsaLg6+SlXY JcIucDNCAnz/hzxcvMwUG5Kh38uD0ZvJcdLfU70npacT2m6pf9HQx1vKLCpB9DHVGK3n6M aue6JPJoJ0Pc87jAOIg/YbRmrjQt1ws= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Pp09Wah5; spf=pass (imf10.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.53 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-57230faeb81so355723a12.0 for ; Thu, 25 Apr 2024 02:21:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714036882; x=1714641682; 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=KE8GiAVvHFw1cHCNgHzSoH9bicMfpW/mOredZ8/si0Q=; b=Pp09Wah5taWSnxv7eotcI3K3xMxZCIB5vyZ1lVLcN1Im3jJLll4/5/vtkd1BXPhq7k NbPGHAjIb0sm1Fg1HBReERDBE7I3x4rl3gDhWYHbOYMbtRbT1tc8GPsZeOj0xXossUCY MuucsK4Vp/OUjZAlZYZujBx1mHaNVcc7S0CSSGLM4ZGxoHoMj5sKVccP9lIAg+dteQsh FrUwlxlYXRAPiRmcVp395PrIWU5cyj1gXFDw2iq3cqmz+xFtS9GzQfyPZ4uU4CsVbBwA EhC0j9Jnb9QazD1F1igXqVpjTGGjfdVPZBOUXP788JKC4KuJgRarygr+7WWDTz6YPlND CR0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714036882; x=1714641682; 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=KE8GiAVvHFw1cHCNgHzSoH9bicMfpW/mOredZ8/si0Q=; b=YUm2me46VAEixN4sOfcHR0MvCCEr79QiI84AXDrvgMpdu2GCrD26RjM45ZVQTLOr2g t56vzOzDWjPPXbnaJgfXW9ny3boNulKR2yrhUt+DDKtquqOTiosMkwxFK6J8Gfh/W6Df fybdEyMXMGIrYTFXTotVeA4EuNsnW4nRWsb0qcxn828SdUgkCpEmL1tYZEuNrGmgE4LB JFfU7CUw83hNcsCBS2jrCg+0AbfGgDMTq2e/5pLeRh6QtSFf0bjirZHgfkcdBd/essc7 d6oCvv2+Pcr+9YjZfcdf1O+HIRJ8C4/xHY0NkgpMIvjPiaWtaDtnvXdwwQPGI2Mz0+wR +Niw== X-Forwarded-Encrypted: i=1; AJvYcCXgwyIoUPKs1H1rzxfyhNFDYZYFXUjb6+8FkjBCkfPgEX8meHFb2HgBPrNMCrGJa84pyHE2DqDUdtYMzZ5w/VPOKw4= X-Gm-Message-State: AOJu0Yz+xLTETLfwrCBYRDaxQtQ26D3gw8xIP41/xRCXsjNN+pRNwhid b+kpO0fcnHNlVLNPgBHa4sg+AGXar4AknUP/TlufzXbFnUcx0pA9hbtXDAM2YmeBRIvBeHgKeLh UlRFMAJdiKo9KQe7HzUSkjxVDbl0= X-Google-Smtp-Source: AGHT+IFbERbEp9rBfe6jSoAxhQSJYvCOlvBJXZKbDQHeqNYLmeZpToIT2lAlLtHPkX8AQOwLRu29uaWEgQWZ9T45fFI= X-Received: by 2002:a50:d542:0:b0:570:5b9c:3f25 with SMTP id f2-20020a50d542000000b005705b9c3f25mr2342825edj.26.1714036881928; Thu, 25 Apr 2024 02:21:21 -0700 (PDT) MIME-Version: 1.0 References: <20240425085051.74889-1-ioworker0@gmail.com> <49394660-8455-48ec-8ae1-fbd2d590d27a@redhat.com> In-Reply-To: <49394660-8455-48ec-8ae1-fbd2d590d27a@redhat.com> From: Lance Yang Date: Thu, 25 Apr 2024 17:21:10 +0800 Message-ID: Subject: Re: [PATCH v2 1/1] mm/vmscan: avoid split PMD-mapped THP during shrink_folio_list() To: David Hildenbrand Cc: ziy@nvidia.com, 21cnbao@gmail.com, akpm@linux-foundation.org, fengwei.yin@intel.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, maskray@google.com, mhocko@suse.com, minchan@kernel.org, peterx@redhat.com, ryan.roberts@arm.com, shy828301@gmail.com, songmuchun@bytedance.com, wangkefeng.wang@huawei.com, willy@infradead.org, xiehuan09@gmail.com, zokeefe@google.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: gefwy9pt475psyyyrr7os6hcsapc6idw X-Rspamd-Queue-Id: CE6D2C000E X-Rspamd-Server: rspam06 X-Rspam-User: X-HE-Tag: 1714036883-622811 X-HE-Meta: U2FsdGVkX195kzqtst4pEkgn6DrtaBGOPh079x171vCuerQg/GAu51SG1Dtt/p0wa7VboaS401+owJcl9HbwHqPduE8gS36F7bRcBnCPRL6RfJ18Ermiv0+kGFOi5Wv/z02qRlNNJ6Q04Kd3Db+xBT0mdD11LYIHWIbpqUonPQZLCQtN9+25gLUBjhhivJa0Hizapy/6Wpdh+qN8ZN4sr42OrWRdq4jGuc+OhwbEqHylW1narnSQ5vbVXYZzOSL7a55opC0HGi/Yl5BDvgzu2iMdwE5Noykw+PNKtad/YmpgtL+eIOh0lbEFRJUtA8VCvfTlU7bMWsivcdZc7MqSqV7aEKS6tqeZ4aPZEf8C7Ln4eS0EwZAVC8dcjAW7MfY3Kp1d0uEFQYaguw1eXzaOP5G4p/H6/Xgcaw5ORjP8hLOoTlhyoWbhcWinH21IU5rozA9lxTeoYnzTjM3pCz7VAPXrA+MHuO8nxfyfXZVO7nYP7WPmygUQy3LBC0YonO/1ezhowT5m+W/OwXXddkrnOwaUMokPAQWkTL7+lMdczhFecsItebyWbnIN39VU+z3KaEMqBcDi0sWgYDf48KXYBrYF3UQWCg0X1X8mMF1hqZHF+EDM6M3oS7+nkOh3SCtnO13qkpwg/swX3TCeYSnA482cAMwLVqJw8RHcOdGaMBr5PNRSz27p4L+ZagUjF2Cb2wACvW5A3jMsNuPZac4Qet5GoVksh/muOc+GtiF6skSBa2MiqMvoFfeEs05u8mpKTaLcDH+PXFcAHD4xaOz1Oij5AznmBS0R1mebeO0BmEx/OTWPgU77xezh1+f/pntmEHWcSZpw/fSWEGgxtHsjPCG8olbMlgf9nkeWQlqsAX2/fuo7eouT01S4AGWMTfeST9SrBjhUJaw2GwLsr+RflCrACkXRnPHiET2gnBUj2sKeQSpu1/S9ik8Xr/+M+bHWMT8L/fe3YqB6iYjE0ai NKl632ut JEHw7OMCd4tKXr9q7S99+gdl6xpCDlAt/7dmXBlo0kxLDKYri2Wi82UH3sikBcObsYJToP7jURzU28KERGp3e37QZzrihqLrgGThgT3BF2lbi+BIh/JaouaEqNqVCCJ77IBZG6rAeplnoAevDnpT3ko5p/rbAjnUhmAkKhYVMIibpt9B3QHs86KF8TiXYytqOINWUT0gkyS1AS0r7l/K/kPquh4m9behgRuLKK04qhs6J2bFab3axQDxQeBsdYMW1XFrA4/E3t88Aw50cDWbi7R0/xlUrS6kGgHJuaKVKumQon/ytWaIoBdZU2xT1Y+iPvkJilXwne/c3TI0nRBx/BBkMtXc59qYMU+Ej+H8Tg1seWF5dgNb89pIQb/YD1wi3wjf8eyYvh0JbnPRpUBH4/NmgZZuY2kOBXzyt2Ot/091bqHY= 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 Thu, Apr 25, 2024 at 5:01=E2=80=AFPM David Hildenbrand wrote: > > On 25.04.24 10:50, Lance Yang wrote: > > Hey Zi, David, > > Hi, > > > > > How about this change(diff against mm-unstable) as follows? > > goes into the right direction, please resent the whole thing, that will > make it easier to review. Got it. I=E2=80=98ll keep that in mind, thanks! > > > > > I'd like to add __try_to_unmap_huge_pmd() as a new internal function > > specifically for unmapping PMD-mapped folios. If, for any reason, we ca= nnot > > unmap the folio, then we'll still split it as previously done. > > > > Currently, __try_to_unmap_huge_pmd() only handles lazyfree THPs, but it > > can be extended to support other large folios that are PMD-mapped in th= e > > future if needed. > > > > diff --git a/include/linux/rmap.h b/include/linux/rmap.h > > index 670218f762c8..0f906dc6d280 100644 > > --- a/include/linux/rmap.h > > +++ b/include/linux/rmap.h > > @@ -100,8 +100,6 @@ enum ttu_flags { > > * do a final flush if necessary = */ > > TTU_RMAP_LOCKED =3D 0x80, /* do not grab rmap lock: > > * caller holds it */ > > - TTU_LAZYFREE_THP =3D 0x100, /* avoid splitting PMD-mapped = THPs > > - * that are marked as lazyfree. = */ > > }; > > > > #ifdef CONFIG_MMU > > diff --git a/mm/rmap.c b/mm/rmap.c > > index a7913a454028..879c8923abfc 100644 > > --- a/mm/rmap.c > > +++ b/mm/rmap.c > > @@ -1606,6 +1606,19 @@ void folio_remove_rmap_pmd(struct folio *folio, = struct page *page, > > #endif > > } > > > > +static bool __try_to_unmap_huge_pmd(struct vm_area_struct *vma, > > + unsigned long addr, struct folio *fol= io) > > +{ > > + VM_WARN_ON_FOLIO(!folio_test_pmd_mappable(folio), folio); > > + > > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE > > + if (folio_test_anon(folio) && !folio_test_swapbacked(folio)) > > + return discard_trans_pmd(vma, addr, folio); > > +#endif > > + > > + return false; > > +} > > + > > /* > > * @arg: enum ttu_flags will be passed to this argument > > */ > > @@ -1631,14 +1644,11 @@ static bool try_to_unmap_one(struct folio *foli= o, struct vm_area_struct *vma, > > if (flags & TTU_SYNC) > > pvmw.flags =3D PVMW_SYNC; > > > > -#ifdef CONFIG_TRANSPARENT_HUGEPAGE > > - if (flags & TTU_LAZYFREE_THP) > > - if (discard_trans_pmd(vma, address, folio)) > > + if (flags & TTU_SPLIT_HUGE_PMD) { > > + if (__try_to_unmap_huge_pmd(vma, address, folio)) > > return true; > > -#endif > > - > > - if (flags & TTU_SPLIT_HUGE_PMD) > > split_huge_pmd_address(vma, address, false, folio); > > + } > > > > I was wondering if we can better integrate that into the pagewalk below. > > That is, don't do the TTU_SPLIT_HUGE_PMD immediately. Start the pagewalk > first. If we walk a PMD, try to unmap it. Only if that fails, split it. Nice. Thanks for the suggestion! I'll work on integrating it into the pagewalk as you suggested. > > Less working on "vma + address" and instead directly on PMDs. Yes, some of the work on "vma + address" can be avoided :) Thanks again for the review! Lance > > -- > Cheers, > > David / dhildenb >