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 41E3EC001DB for ; Fri, 4 Aug 2023 21:54:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C2A836B0072; Fri, 4 Aug 2023 17:54:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BDA616B0074; Fri, 4 Aug 2023 17:54:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A7BC46B0075; Fri, 4 Aug 2023 17:54:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 98E876B0072 for ; Fri, 4 Aug 2023 17:54:04 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 63F771A07B9 for ; Fri, 4 Aug 2023 21:54:04 +0000 (UTC) X-FDA: 81087775608.01.196827D Received: from mail-vk1-f173.google.com (mail-vk1-f173.google.com [209.85.221.173]) by imf17.hostedemail.com (Postfix) with ESMTP id 95EF240010 for ; Fri, 4 Aug 2023 21:54:02 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=lslOMdYC; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf17.hostedemail.com: domain of avagin@gmail.com designates 209.85.221.173 as permitted sender) smtp.mailfrom=avagin@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1691186042; 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=Esa07M2shux5azrFa7lTIRiE3FnlvA6v4xak5W6Yyjk=; b=kjdh4R1IEKnNoAqm/cFspQdbwkG5o+AfVAN6jXl39USQi+9ljrQC8s1yIdqf5sv+rxH18F /xi3netFpWbINtRhGV6UW6h4BDEf4NT9JVo9G/KIfVWWE5g4E2uFh/oaYwOlJEEohfauxH a8FKlioQojZ1wHvMIUhD5Ta+oHdTugY= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=lslOMdYC; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf17.hostedemail.com: domain of avagin@gmail.com designates 209.85.221.173 as permitted sender) smtp.mailfrom=avagin@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1691186042; a=rsa-sha256; cv=none; b=ROrlwvBctAjS6cC5t+YCi7CRCL+3f/jAPgddWwLOj62KfmmfaCwtqDAct+SFPekCak1sLb nJp1DOGYQjP93DNzztVBrINb9yfU9UBVO0Oyzbhc5H2btOAYM7veMhg31lZEG7NqHF6f5K qH/iKMCbHz2OGwiJ9CX+dS+0FCkDYL4= Received: by mail-vk1-f173.google.com with SMTP id 71dfb90a1353d-48726442294so219107e0c.0 for ; Fri, 04 Aug 2023 14:54:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691186041; x=1691790841; 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=Esa07M2shux5azrFa7lTIRiE3FnlvA6v4xak5W6Yyjk=; b=lslOMdYCeC30UPvTIvI0aosjpBXGZn7sngPRuURDVQ39HLaBeQ6E/lkAuru/lXRBMz m73gHAIS54CrSn65n5Jchg0KoWL48g8oB7eYtld/P90faJs0n6W82Xe8Z0UlGTUmo5bb IvgYdyJQwcRUODos9vjSb7M54g/qLDb6w8KhKe35u9GAje0D1cR+kHcRQ239Ws+AEk03 2nHILU3myArnRstOptus5JIOHmwCOFNth6EjpnvwSOZ6AuCPbBPzYG2GOgldSlizDSWx A61CryrSa7G3lGA/7I30HRvCkTrEuX8+ndwXYAXhGu5E9muo7ZFoxixnlI4Dp4Nb5n8+ fKhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691186041; x=1691790841; 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=Esa07M2shux5azrFa7lTIRiE3FnlvA6v4xak5W6Yyjk=; b=hKf7NiL8I3W+o74IB6pFa8YbQo+898Eo7PoVOyU22NOYmgn2ejh63a2CwFjkIsWk9R wn64me7f8XY1I1WFIEYnXphnn3t3HFHJ1y86jWC3JUoE/+qAjbPRxY9+dPKkvEH3oQkB FPlRyfu42rhscccsRU2KFU/FsFb2R4m4qjFRBhedTpEPBrzjCkxpnZG8w1k7/g5M7SFl hv6kqyOCVQMnomdnU5O4CxQbUgFTptUcHjgnFNQA+Do7F1TjQkAr5IG/hVlK2sYciYJm IEEnl8mQTpKdb1U5UYaWiX5A/3Cg3GuxTRVWt8Jzh2jVK0t34CTjG3X2NF2EWT7g2eIc MDjQ== X-Gm-Message-State: AOJu0YyL1PxCP3fsylLQD1Gmm/C6IjCw/Lokb/j32LA6RfZQP9q7dpPh Z/qEn1V7lWsw37uaq9sJZS1FgTbVL7twgt2MZhI= X-Google-Smtp-Source: AGHT+IFahKpzpIJYaivvhmIRXbOcsGuHjA0b6V8skSUZy2IVPHamiQVkLgSl7ceD8hFW+TEIM7u0UyhOIYM9qK4nTCA= X-Received: by 2002:a1f:5e04:0:b0:471:17be:ba8d with SMTP id s4-20020a1f5e04000000b0047117beba8dmr2417786vkb.3.1691186041493; Fri, 04 Aug 2023 14:54:01 -0700 (PDT) MIME-Version: 1.0 References: <20230727093637.1262110-1-usama.anjum@collabora.com> <20230727093637.1262110-3-usama.anjum@collabora.com> In-Reply-To: <20230727093637.1262110-3-usama.anjum@collabora.com> From: Andrei Vagin Date: Fri, 4 Aug 2023 14:53:49 -0700 Message-ID: Subject: Re: [PATCH v26 2/5] fs/proc/task_mmu: Implement IOCTL to get and optionally clear info about PTEs To: Muhammad Usama Anjum Cc: Peter Xu , David Hildenbrand , Andrew Morton , =?UTF-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= , Danylo Mocherniuk , Paul Gofman , Cyrill Gorcunov , Mike Rapoport , Nadav Amit , Alexander Viro , Shuah Khan , Christian Brauner , Yang Shi , Vlastimil Babka , "Liam R . Howlett" , Yun Zhou , Suren Baghdasaryan , Alex Sierra , Matthew Wilcox , Pasha Tatashin , Axel Rasmussen , "Gustavo A . R . Silva" , Dan Williams , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, Greg KH , kernel@collabora.com, =?UTF-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 95EF240010 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: zetpmzhotp681xrh3fapi3ryqg3419os X-HE-Tag: 1691186042-762164 X-HE-Meta: U2FsdGVkX1+PvZawppS488sUkTD4poqgQPlmnR/QuQf/dT6VX0Y5rL6/VlLVtSRc3vvjzl31PVo7uKmcZAcSKbfNZAtpAUbLC4NDDMi1beHkrc5f5CvQWzbQC7mkhGn2+/SVQiNItNxNGmMYIQPdQ4D62WbbK7+aqOjk5n3VL27MvYkww2UYI5Iv09yJZQfSgjsjrLMLr8f686Qox6jz2EegMAWm4J5WGvkjGXNLKUnrgCXc+xv4XRtmFvfo+F2MaStB00isQvlhhaR/zmR9ZsNhXuMtfksyQOD94b2s9hjaj33dLtEfi7gBWVWoqetZ8dUTafxmF2Rq6EHOvVqxhqd3Vl3eTr+efNOsuzxFcttAWgkCPsywwLfAEYlV8YTIjWU1Vse/los3obbHA3OjOlSw3GjMJckuCw9I1hPbq6YRVmy+hZ1DPOxvGjgsr7AzKORmwHZ81SCafa+Ut28QD0XHo2xjqbK9FlNFx4T5nff9kT3KuCg1CrOJsQCAC5o3Q3o01Bh4Z48Bq75YblQtbuV4hYF3jC4jsr1gY0Pg0x4YZoJNpWByGN+18IBqqh1CeHEfyqJ6HaKBwax+MQ3Z3iUGjYQxCmdBHAwXHyP1VB4l6puxXPWRizAKfcWhYmHxtpg1ZkOX/dylXc7/Y12I7hm5Xxro4v6tINfx7s4VaLZlth1eR0UtVLoDTEiM9+QC/wH0Ny3JhcNmhMY3SQOYKKNp+iNQl86z3xtXW3t+3hRoK/Me53YSWVGJ5NG+CQspNQHnGnG/NguNA7yFjHe+GC2BBtKOpNnjWn+rOYqxXLhve9xT9adGOj8fchhvU+Zgr0zhlP+GTNRc5DjpdPohGuQVT1uPHKxVcvavUSDySxt4/Qd7Ze+8x4tU5y2ReVuz4Y/qhyZE0smIrzmem3G26cnFFrjVF7/p/tfBDvn6oV2saQNjArglD9mmTXZp+KjWmGv3E6hEc7WBDj7B+fR oi9p9rnf GskV8Az+RMiOZsWWrPRB4DPAFyQk/2hOK0QFqrBI+8BzuCK4qoxPkPSIx53rXjHMqe5Tkgb6/PoTGL0Zh/hEPRV9RT8AlLx6bbtTPPjd+2MXaNoGGE79dwivOXUoxKRPPWhGh7VNTqv2bvDeRBT8oxX+FrmDpLChoMfZQiDFp52UlY020sfIsiD7J2IVIx8zEu6Ogo9B2SI5zuJ9kArMDlJuO5+AP4EVRD9efA7uv6Jr+ZxzoEOpsIXUnSiTuFWVn7HCKHzhdxVZ34IaCmKbJKuxs9aWObmHu0BRGkwKC9VoNfZqImCQSPAlzK9Z44uZkMFtUXpEeiIevll3ZavKUCqIEy9TXKOOAMLxV7DszjnoDEkUzEH3SmJORG5VHMf5nvVzNmHQjC49N6RI7AYd24Gj2X9L3Qfd5D0rsqwoXmDq8rytcvra8AenvxNDjPORPn4Oq0A3i+AW+ZHIoDeLWcAL8b6lnO2mMVOu4bLHCMmufQkQ= 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 Thu, Jul 27, 2023 at 2:37=E2=80=AFAM Muhammad Usama Anjum wrote: > > +static long do_pagemap_scan(struct mm_struct *mm, unsigned long uarg) > +{ > + unsigned long walk_start, walk_end; > + struct mmu_notifier_range range; > + struct pagemap_scan_private p; > + size_t n_ranges_out =3D 0; > + int ret; > + > + memset(&p, 0, sizeof(p)); > + ret =3D pagemap_scan_get_args(&p.arg, uarg); > + if (ret) > + return ret; > + > + ret =3D pagemap_scan_init_bounce_buffer(&p); > + if (ret) > + return ret; > + > + /* Protection change for the range is going to happen. */ > + if (p.arg.flags & PM_SCAN_WP_MATCHING) { > + mmu_notifier_range_init(&range, MMU_NOTIFY_PROTECTION_VMA= , 0, > + mm, p.arg.start, p.arg.end); > + mmu_notifier_invalidate_range_start(&range); > + } > + > + walk_start =3D walk_end =3D p.arg.start; > + for (; walk_end !=3D p.arg.end; walk_start =3D walk_end) { > + int n_out; > + > + walk_end =3D min_t(unsigned long, > + (walk_start + PAGEMAP_WALK_SIZE) & PAGEM= AP_WALK_MASK, > + p.arg.end); This approach has performance implications. The basic program that scans its address space takes around 20-30 seconds, but it has just a few small mappings. The first optimization that comes to mind is to remove the PAGEMAP_WALK_SIZE limit and instead halt walk_page_range when the bounce buffer is full. After draining the buffer, the walk_page_range function can be restarted. The test program and perf data can be found here: https://gist.github.com/avagin/c5a22f3c78f8cb34281602dfe9c43d10 > + > + ret =3D mmap_read_lock_killable(mm); > + if (ret) > + break; > + ret =3D walk_page_range(mm, walk_start, walk_end, > + &pagemap_scan_ops, &p); > + mmap_read_unlock(mm); > + > + n_out =3D pagemap_scan_flush_buffer(&p); > + if (n_out < 0) > + ret =3D n_out; > + else > + n_ranges_out +=3D n_out; > + > + if (ret) > + break; > + } > + Thanks, Andrei