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 4B19CC3DA45 for ; Thu, 11 Jul 2024 19:52:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B73706B00A6; Thu, 11 Jul 2024 15:52:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B22E56B00A8; Thu, 11 Jul 2024 15:52:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9EA736B00A9; Thu, 11 Jul 2024 15:52:57 -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 7C42F6B00A6 for ; Thu, 11 Jul 2024 15:52:57 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 2EA4F407C3 for ; Thu, 11 Jul 2024 19:52:57 +0000 (UTC) X-FDA: 82328519994.14.6E54263 Received: from mail-qt1-f170.google.com (mail-qt1-f170.google.com [209.85.160.170]) by imf09.hostedemail.com (Postfix) with ESMTP id 64A3014002E for ; Thu, 11 Jul 2024 19:52:55 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=TtMgotLh; spf=pass (imf09.hostedemail.com: domain of yuzhao@google.com designates 209.85.160.170 as permitted sender) smtp.mailfrom=yuzhao@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720727558; 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=NHgAo3rRH4U5qc7BWrC4nFyLG2iKDrJjpANnSFrKmzE=; b=HlUZj0o3Bv/aC3hmPghBGzhp0WVsln1K+HBQ8eURZJNFlBh/ODbSeb0MlRnYf8W9h1TK9B LZSqCUjSnlOqy2w2xJV6kh6zWPRnRyQY+cdQ8dp+/ODTHMsVvD42VmU8/DAzb5gQXQkvuI pSDgXu7IE1vMJJy+rklvaqnPp8f9DDE= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=TtMgotLh; spf=pass (imf09.hostedemail.com: domain of yuzhao@google.com designates 209.85.160.170 as permitted sender) smtp.mailfrom=yuzhao@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720727558; a=rsa-sha256; cv=none; b=DfSIKaJUgRjxFACK6fXxk+autY17EUEHJlNic1RK3CYYNAGBQ2GyXjn9G6eFYXaigo+0kT vCw5BYmd8rthvj12nQRVUD1sFjCda7Mvk4xzpHurOcoanxMfyJMw88B3HTdWo0Eybo2nsn ePLjJSXU1O+KVhY5CCniEAQcUJYWAFI= Received: by mail-qt1-f170.google.com with SMTP id d75a77b69052e-447f8aa87bfso64431cf.0 for ; Thu, 11 Jul 2024 12:52:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1720727574; x=1721332374; 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=NHgAo3rRH4U5qc7BWrC4nFyLG2iKDrJjpANnSFrKmzE=; b=TtMgotLh+Ok2FSFKj/ziJa+amXaSbU/7Sp76uRasQSPL+hVK8SQ8YXPPuwxzIb18Vl Ld7hLRgvGV2sj/y5MK6uQ7cUoemKW6ajbIERqzBdFC6GG/ZtZxYmeRYieFh1XVSzETqw YyFxyx9k11DGdLLNiMOZTcBzTEZuV1bXsKpv07SnCoHN8xMkjPbHlfL4HXFMAJlRuLXU 4RmwikwjjsaFjAKkLub7CdikX931JZXerFAz+cC6vI202ivhGeUunVSIaYn4J3HsaYi0 LMXBEf41eykPbcRoBUtvRxfoB5kF7eTECJvrvgaiR+vV8vEojxb7Q/+xM87v0cF03CDl 59cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720727574; x=1721332374; 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=NHgAo3rRH4U5qc7BWrC4nFyLG2iKDrJjpANnSFrKmzE=; b=wb0cuXn1N/qDAPZuPoEowEQS9hJg4hSFOLqoMyXNTPhf6962+6L4L9x+d7+f6ZSUEJ oD7TGC5EF5CIxWOrnqx0HXW9ON0JPFOBMReqPg0NRI6jxOebzrNer1QIS/VYgVxi7euS 6MXxBeAcTef2GbKu+orid3XlSP3rcZUWrcl4wIuj2sFXwOv9tPuDavtB99CbsNJmFPO5 +exF6WkwoXQdk56p9bt+6K0CKN3I2zGr7D9Rbh5Hdg6UeeE5pidGKfQJMP5vAcEGhfEG lzqY+eEx/iCX3Y8ItFH90j6Xri9Nb9xebl66nFtnWfRq7xWrgPmgpI7m6eVeC3eTwHJv bs5w== X-Forwarded-Encrypted: i=1; AJvYcCV2WKCbKZlPa9xG5HH7RhrF8cdjrPqnkd53Eq/3TbQSj27/SaS2ufo0M5lXNNZqfB/N60UVgBgS7bkZRnGJTeuYitI= X-Gm-Message-State: AOJu0Yw9/2n9uFSDk1GB3miA41n2uuivmPnEhwUtVSlYcvjaacQTs5Us SoZxcHW93dI5TU25D4msZJeH3qn+8SU6fcTsHGoJJj9gg9NCKR6xrR246xvEz7IMFn19IAo3XjY yy8s4xKpD4XmhXztsx5FiKXNP/xkGE0t54IRt X-Google-Smtp-Source: AGHT+IGKeJkhx6a4XleRbKMjIagaY0t0QQL4n9Gqq4+cocfHOlkStXS33F9UWAPAExqqLh8CHJRMXRGS62R1i6kGvs4= X-Received: by 2002:ac8:4247:0:b0:444:fd8a:f1a0 with SMTP id d75a77b69052e-44e795d4e6dmr405751cf.25.1720727574342; Thu, 11 Jul 2024 12:52:54 -0700 (PDT) MIME-Version: 1.0 References: <98798483-dfcd-451e-94bb-57d830bf68d8@redhat.com> <54b6de32-f127-4928-9f4a-acb8653e5c81@redhat.com> <8586b19c-2e14-4164-888f-8c3b86f3f963@redhat.com> <443146f4-9db8-4a19-91f1-b6822fad8ce8@redhat.com> <1c8632b4-06a5-49da-be0c-6fc7ac2b3257@redhat.com> <2c464271-1c61-4cd8-bd4e-4bd8aa01fa00@redhat.com> In-Reply-To: From: Yu Zhao Date: Thu, 11 Jul 2024 13:52:17 -0600 Message-ID: Subject: Re: [PATCH v22 1/4] mm: add MAP_DROPPABLE for designating always lazily freeable mappings To: David Hildenbrand Cc: "Jason A. Donenfeld" , Linus Torvalds , linux-kernel@vger.kernel.org, patches@lists.linux.dev, tglx@linutronix.de, linux-crypto@vger.kernel.org, linux-api@vger.kernel.org, x86@kernel.org, Greg Kroah-Hartman , Adhemerval Zanella Netto , "Carlos O'Donell" , Florian Weimer , Arnd Bergmann , Jann Horn , Christian Brauner , David Hildenbrand , linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 64A3014002E X-Stat-Signature: 1fnkpa8i9ybaiwtne6cahsitpsawce6b X-Rspam-User: X-HE-Tag: 1720727575-462233 X-HE-Meta: U2FsdGVkX19nwAeWkWme8YzclePHmqd/VRPTnhBGpxJg4lBxALCTPiOuA1uGn4L22m94Ag9vKhT31n/W9M4bX4dth3xr5sDlFCGg5Vzc7eM9UbzAOaakrYJlPG2Y0SRq1sVsYf1WKZ5avYF+tv0QLko4fzVFOftCr7OgEwNwgxvkXlMut59xipyCzouqdYUk3PfMg4wjiJvUhZcsRUJ4FQyeOYtDkrNlJiQizd5zkQeRsnGv/37uxZWwGx5l72Zb5gCfgWmVLaH4POSFPIgyWaF/7MMIc4jCUCMYBZ2HmDHWAIzXvynpxhLl4YESb9oEErt/wgBr40ErzoWvY+wDwE7T8x8MsCpIYNfKrG7ePfx4pdFvpbDHIc4M1OWcclrTmCdgzNF1rlyBBvrSbhUkp4x1hvblEh+msHUTqkYPssXjlK+H5miojyVQe7GWj5NjsaEVHjO/U7g98TpQFNGP/Uxi8/6evQ07kMXQ3RURdoI2HLyEzDPiei/uJ6XggibMTN+dv+RB0ygrsvOSsrP8zynv1RlhvpuFT+0RSrweW7B+JK0n8lGA9SnqqvUkjW5Kk8RopBs4JGXZ1J8UBNKe6689+7AGm2YedoVIRbbq8UCZpnf8ofJ/3WcSKOdY+LhFaHF5ldXpNc74ceX4i95WKINTDADNBN/Jo7zp7KDJXXXhnToDO/X126IcnL1RelKJhdls9zP+RDHCMkCzGu5gExTLuw6cNZmxgEo3hmcSSnY47K8MhAtqP2d76r0TOY7CjkPp2QRvpuRVwcHEAnCYGixIEoZ+VDHEGUT7ZNoMzEIH+CTJkzn21DDoMi7avbuYBkTgJZ0a72IyhGt9NJihnpmqOEF880jRQoIu2ZGT8Uy0+Z5oQMauVBszVs9oYS086omG4oEIxK6TCO45oAEEkP2huXtzWNhqqLXIZKg9Ln35kFXGlUcHRWrlo45ImZBgPmY8huZnfdQ1N0FS/Bi mlkp9aH6 amSH3RIJpVkEl0vyLtM3hBdqOzxXR4mWYm8g1B0jHAXO6eOzuyuFBO5ESSa1hjOIKhR+o/soP9/pJsijjYdurC6FOjWFdpTKslIBjD6BVdHGWzkS2hYapuCPXDedcJ2aSUQ75UTMuBqHZcmjA9jIy4kXXLEzLPrTw2KvtDReSVOlzsaiZLcFl1j3KnpcM1vFOrscUsQUrO/dQYiv1u7VgFNLsG1oXHWK4sCg44dt3Wre8ax5FKvzB+LCnHwg1OK9AFC22cTsbBSz/RJg= 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, Jul 11, 2024 at 1:49=E2=80=AFPM Yu Zhao wrote: > > On Thu, Jul 11, 2024 at 1:20=E2=80=AFPM David Hildenbrand wrote: > > > > On 11.07.24 21:18, David Hildenbrand wrote: > > > On 11.07.24 20:56, David Hildenbrand wrote: > > >> On 11.07.24 20:54, Jason A. Donenfeld wrote: > > >>> On Thu, Jul 11, 2024 at 08:24:07PM +0200, David Hildenbrand wrote: > > >>>>> And PG_large_rmappable seems to only be used for hugetlb branches= . > > >>>> > > >>>> It should be set for THP/large folios. > > >>> > > >>> And it's tested too, apparently. > > >>> > > >>> Okay, well, how disappointing is this below? Because I'm running ou= t of > > >>> tricks for flag reuse. > > >>> > > >>> diff --git a/include/linux/page-flags.h b/include/linux/page-flags.= h > > >>> index b9e914e1face..c1ea49a7f198 100644 > > >>> --- a/include/linux/page-flags.h > > >>> +++ b/include/linux/page-flags.h > > >>> @@ -110,6 +110,7 @@ enum pageflags { > > >>> PG_workingset, > > >>> PG_error, > > >>> PG_owner_priv_1, /* Owner use. If pagecache, fs = may use*/ > > >>> + PG_owner_priv_2, > > >> > > >> Oh no, no new page flags please :) > > >> > > >> Maybe just follow what Linux suggested: pass vma to pte_dirty() and > > >> always return false for these special VMAs. > > > > > > ... or look into removing that one case that gives us headake. > > > > > > No idea what would happen if we do the following: > > > > > > CCing Yu Zhao. > > > > > > diff --git a/mm/vmscan.c b/mm/vmscan.c > > > index 0761f91b407f..d1dfbd4fd38d 100644 > > > --- a/mm/vmscan.c > > > +++ b/mm/vmscan.c > > > @@ -4280,14 +4280,9 @@ static bool sort_folio(struct lruvec *lruvec, = struct folio *folio, struct scan_c > > > return true; > > > } > > > > > > - /* dirty lazyfree */ > > > - if (type =3D=3D LRU_GEN_FILE && folio_test_anon(folio) && fol= io_test_dirty(folio)) { > > > - success =3D lru_gen_del_folio(lruvec, folio, true); > > > - VM_WARN_ON_ONCE_FOLIO(!success, folio); > > > - folio_set_swapbacked(folio); > > > - lruvec_add_folio_tail(lruvec, folio); > > > - return true; > > > - } > > > + /* lazyfree: we may not be allowed to set swapbacked: MAP_DRO= PPABLE */ > > > + if (type =3D=3D LRU_GEN_FILE && folio_test_anon(folio) && fol= io_test_dirty(folio)) > > > + return false; > > This is an optimization to avoid an unnecessary trip to > shrink_folio_list(), so it's safe to delete the entire 'if' block, and > that would be preferable than leaving a dangling 'if'. > > > Note that something is unclear to me: are we maybe running into that > > code also if folio_set_swapbacked() is already set and we are not in th= e > > lazyfree path (in contrast to what is documented)? > > Not sure what you mean: either rmap sees pte_dirty() and does > folio_mark_dirty() and then folio_set_swapbacked(); or MGLRU does the > same sequence, with the first two steps in walk_pte_range() and the > last one here. Rationale: rmap is expensive (cache unfriendly) and MGLRU tries to avoid using it.