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 79378E7716D for ; Wed, 4 Dec 2024 22:57:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0F08D6B0093; Wed, 4 Dec 2024 17:57:30 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0A0D66B0095; Wed, 4 Dec 2024 17:57:30 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EAAB76B0096; Wed, 4 Dec 2024 17:57:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id C79456B0093 for ; Wed, 4 Dec 2024 17:57:29 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 87DA51A1263 for ; Wed, 4 Dec 2024 22:57:29 +0000 (UTC) X-FDA: 82858789230.13.E185683 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) by imf11.hostedemail.com (Postfix) with ESMTP id 8639B4000B for ; Wed, 4 Dec 2024 22:57:13 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=al3qntVw; spf=pass (imf11.hostedemail.com: domain of jannh@google.com designates 209.85.208.47 as permitted sender) smtp.mailfrom=jannh@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=1733353041; 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=JOI/TxvWlKuUQC84QT4+Y+q453dEXvhGQN/8IPFfFsI=; b=vSrWrOA526euBQHPk7CNDERTMVAsoUajKNBVtowIsuAQzGum1nO53ibiiwV3JMBghnepfQ HMoIcmCyMsQY4LyN/HimoY9WvAFSJyFbmvWEYCGRuU2VTh4P0Y75yid7gvQAB5FjkT1PdZ RtVbqDoearYGJ/O7QGEnvzFmipQx5kU= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=al3qntVw; spf=pass (imf11.hostedemail.com: domain of jannh@google.com designates 209.85.208.47 as permitted sender) smtp.mailfrom=jannh@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1733353041; a=rsa-sha256; cv=none; b=MRCZ3iS26R/VaofDlrLpq5dlZZDsIGCWxKhK6j2dDenOys9GXFKE+4PMyuNNrBC0mwj26Y htjcW7w+NvRwka3KduZGzBBg33dOQElffpj0jM6mVsePmIrUolepdyAnF+Q6xhVGZS53OE a/JNwTnFzKoQsZ1ryaNlxnm32Cn7S/c= Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-5d0c5c8cb5cso1425a12.0 for ; Wed, 04 Dec 2024 14:57:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1733353046; x=1733957846; 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=JOI/TxvWlKuUQC84QT4+Y+q453dEXvhGQN/8IPFfFsI=; b=al3qntVw6B059mk2FU61g9QxO/l8RhbpstCovjWzbPORD6A5r27GNq5Pu06Tcfrmnz n6006JEmGs60GJNys4RYo3Kot0NGKvnkVXTUsKGTY+K4nTZjZb6DZQnE1FE1Zsd6bgxQ z6Ov+ghgBFsKT7Y6YJuGTRmix9hjE3rRlQJNNJeBBm82C1YkU1NV93eXSxN5g+mNm5K5 7RGXJ8wgPRGn8cuRAqViIPfQB+pIMYUDDvmhTGzRSsCaDxmjnkTEit7U3Oc+y3jnmpby ubwiMG9541ssf9PZdo5ZF+LHAZDjtTSXSuSvXWUPhDLv4LgB5B0M3g5IoPK+VrRWOg/I 49gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733353046; x=1733957846; 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=JOI/TxvWlKuUQC84QT4+Y+q453dEXvhGQN/8IPFfFsI=; b=iR20BkzCttHo/PqDleat3jSxpxNlCYsUX/UxFdn/4aXYf6HknNnO3SR6Rr4fnx6tIQ YWljrlLSj+d2PWP+mzCv+pB5Mz2EKpxf/pER66JAfuy3QNKGSQL9lhvrs6a5Ci1m3+DN h3Vmz3FqVVlwM22rtPPWFwdNhX86iiX5jzMS1rnDPogKuRp4WbpeiwEI29+QV3bL47He RGu1ifpT0bPtmyfFaiJcSepGnk3fFNPMEPvub+nZbXhRzsxBnV7ywC07/FYVW+/Zdmcr 2nINlvM4G9r2r9vAcpNJjrCx63D+O72cW8KLeslcIO9re9WZiaELgb2oBHQH/ivqaxwc YW7A== X-Forwarded-Encrypted: i=1; AJvYcCUz6XjKF0v6ci3gfEuC0JXIaTQ7pEHEDoFkmSoVpKa+YqeF+2l75LtSla2QENd2hCB9Cg24cjn/2w==@kvack.org X-Gm-Message-State: AOJu0YwmlIQP5SWCD4mlEIPExKxTwffvreXlNWJXGiepCpKGcLRkmNjq poCZwVRMlc3RS27l/xJ8vz8JPwVPMOvWgcdkFqKsBpmMCIW7shcF/URIKOvEIh7JlpxIBj648p3 9p8lwn2wYU83ZfhYYyQjGkHUsUHVlLMItvUrC X-Gm-Gg: ASbGncuVhuUzrusmAYUfW9LC1G3wmNgT6d9VJ9iMM7fuBT6jn0P1MVpfDACctdpaM+6 gm6NNaxPtQA5VKA0z4p/FHoSNwQC9gyQFRUNesKTVn968YWu9WWrqLaLo6c8= X-Google-Smtp-Source: AGHT+IGGgJDcG5HIIhYazvjzoqnoW5klz8bIwEyP9Stmu7XsrJaY07wSrq7FpQ1urZ8AW6h/UWzmhegUZAugqIkIBXc= X-Received: by 2002:aa7:d694:0:b0:5d0:d7ca:7bf4 with SMTP id 4fb4d7f45d1cf-5d1258ce709mr36752a12.0.1733353045819; Wed, 04 Dec 2024 14:57:25 -0800 (PST) MIME-Version: 1.0 References: <20241204144918.b08dbdd99903d3e18a27eb44@linux-foundation.org> In-Reply-To: <20241204144918.b08dbdd99903d3e18a27eb44@linux-foundation.org> From: Jann Horn Date: Wed, 4 Dec 2024 23:56:49 +0100 Message-ID: Subject: Re: [PATCH v4 00/11] synchronously scan and reclaim empty user PTE pages To: Andrew Morton Cc: Qi Zheng , david@redhat.com, hughd@google.com, willy@infradead.org, muchun.song@linux.dev, vbabka@kernel.org, peterx@redhat.com, mgorman@suse.de, catalin.marinas@arm.com, will@kernel.org, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, x86@kernel.org, lorenzo.stoakes@oracle.com, zokeefe@google.com, rientjes@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 8639B4000B X-Stat-Signature: 7agjwxmo4yup45nnujigc5n55dgm69ph X-Rspam-User: X-Rspamd-Server: rspam11 X-HE-Tag: 1733353033-94427 X-HE-Meta: U2FsdGVkX19gU/5hN3xUx3dteZE5WM4OgG6DB+KgDA2lZ9ixhsP3nK9w9SQK3wNqyg2EpEOkDYAthQkRjCK/7X6p3UdN10VhTq1gEyT+Do1DGtWJGNl7lAdTxw+UaqBbqKrQyuDaQ39ojBCJWOZLZgMKUR8oxrnaAGfD0X4M3ZLCybZ+vAsA9q4nYHEDIhdu6bTfHYZohjKq8ofPFZMLHgKvOaxVWXZ8rq3htdaSwLc94ysgXu87MJmM2lh5cfzr24gJRSxBKlKGqldI5VcfPKc52WdPvCSRX2yRsm3xyHfhEdMVCqjF3GHTKqu8B9pEvDZI9l/cKO9hzZ9TjQ8w4sfYLYMHutGLcxtgMrfOGOixTweZXxZuunoT/yjLQYaJx+THgYEDvWqg5mphup2UtcSBD5l1G9oLODh61P54yNVRAvTPvwhxigIteT3vR/tjqc1tjSPw9LeMy76fLoL25+zzCHtFaOfPQhey0MBCZWYA3VDTbD2s77bSOlxUz+gFCMDGY3UtJ4euIR1RfqaL1IeWU0JzjVEJQY83z4jkl1Cq7k3NXePpnNHMvjtDMesXciB6zoN84XvMrK5sUn9MANcKC1PoOjQb7Q0nrM88WHvBhzC7VolSAfSQ6yE1n10L36gj8eNGFjZsMEuT83hIj/p75voPEbC+GQ6rlwXGiqrwSuUtdluz9IAFRsY6MXBRoK4/WHCBuCjOA1oAalD/Hdwk/Tw+PD0HiOohz+WM6v+p9Bt8++ZU6zqniFixJeGD512x3a8I3c+NcIGhLhicNMD7xKAOTLArSF5QC96RnURo5RxwDPE9BR1AayNbjQ6luxXk6PgB9Jp/bQFWesHlkyUrkz4Pu/5tv53X40VLqj27PcjGToFfHM1TPUzHdr+jk+jOS9e+O+9TVDsUU0oZRqE4Yc88FP6EYu2UDVQdI8mQPOkqjpcyMI/sqtk+rX1ICQ0SgGRkstmGpc3uzWC sbjapoRd E7gHGXPmPOF6YBNmruv9LnSTJPrOL64h+UDQdG8kKZjiTrrHZ+BEgY6hO7M8DCj7jPluBObD578hgVdumJvFrDp1fwliOQbaoyD0kh5nO+WdIQDwFfYDrMxeiB6Ec6RXztt7hA1izHrpI8IG/yIGLhEMJu/4kjUYZqKKt/Qx06p2bBEvM4a2clTP79ElWcgYGjJR2uVDQjCS0LTrblnNHiBKKb6erkQu4iu/EW6nqhZHQYqLmqEGXk4uAa+1puABSMV1rvdT6rph8POaFAhsJ6nlslA== 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, Dec 4, 2024 at 11:49=E2=80=AFPM Andrew Morton wrote: > On Wed, 4 Dec 2024 19:09:40 +0800 Qi Zheng = wrote: > > But this is not enough to free the empty PTE page table pages in paths = other > > that munmap and exit_mmap path, because IPI cannot be synchronized with > > rcu_read_lock() in pte_offset_map{_lock}(). So we should let single tab= le also > > be freed by RCU like batch table freeing. > > > > As a first step, we supported this feature on x86_64 and selectd the ne= wly > > introduced CONFIG_ARCH_SUPPORTS_PT_RECLAIM. > > > > For other cases such as madvise(MADV_FREE), consider scanning and freei= ng empty > > PTE pages asynchronously in the future. > > Handling MADV_FREE sounds fairly straightforward? AFAIU MADV_FREE usually doesn't immediately clear PTEs (except if they are swap/hwpoison/... PTEs). So the easy thing to do would be to check whether the page table has become empty within madvise(), but I think the most likely case would be that PTEs still remain (and will be asynchronously zapped later when memory pressure causes reclaim, or something like that). So I don't see an easy path to doing it for MADV_FREE.