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 201F4C77B7F for ; Tue, 16 May 2023 17:10:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 78D93900005; Tue, 16 May 2023 13:10:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 73D1D900002; Tue, 16 May 2023 13:10:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 60537900005; Tue, 16 May 2023 13:10:25 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 4C158900002 for ; Tue, 16 May 2023 13:10:25 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7AFF3C0366 for ; Tue, 16 May 2023 17:10:24 +0000 (UTC) X-FDA: 80796756768.27.13A9625 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) by imf13.hostedemail.com (Postfix) with ESMTP id 505BF2000F for ; Tue, 16 May 2023 17:10:22 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=ecQFqE9V; spf=pass (imf13.hostedemail.com: domain of shy828301@gmail.com designates 209.85.210.175 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=1684257022; 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=MgE20X4RBaYfDUVw67ihMRG3U700BcM/UKdWm0Z+sO8=; b=rOR45+CaffQ7hrtnJAFC/8fJyA5uZb2MkULccYQYq0bLZqrit5s07ZmplcqeETRdr6qmDL 8HMVU/DEKxSkGsVq3Mhx9jrNBH2/ReboxLTiSDvX8eYcrIY7p0HTA1nuXWfUjbpeszNxfY pgI+wdHJJfUBJxSTt+HG5pvSxEii1Mc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684257022; a=rsa-sha256; cv=none; b=5C+AjBiTR1RQOmnU7a/ctDI2+OxEyUr1nWacctJPR1TyB1QVKxid1nJbeknBCmdaY+2WDy y1v1UO9s7GqlzXmzqrQVQKxY69394W22GH8dh+5LhSxdZxpCZULkmXajMrq2v+YTHnSFxx 54kWEmNl+jjjDgg1S4QbUvQR1ZW9bj8= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=ecQFqE9V; spf=pass (imf13.hostedemail.com: domain of shy828301@gmail.com designates 209.85.210.175 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-643557840e4so15444046b3a.2 for ; Tue, 16 May 2023 10:10:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684257021; x=1686849021; 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=MgE20X4RBaYfDUVw67ihMRG3U700BcM/UKdWm0Z+sO8=; b=ecQFqE9VbqRMJX11Rj3FBmAIHKeEnDkPiaWEuMso0O8JPcgYtjXKOqBhXH/bnv6pAG k9Q+kUiBb/10+BsOy+5JcGb6B4ptKyWDiPAvwfunBh2fV6MLS1vPUQgB1QPC2lI5/u+1 c03iI5SoEueu+msenwplrghr3QlE48XMQOHAZri4jI5z6Hwtd8mJOnwRBIz2Qx7hb03J C9sdwPorooomqVyadmlCgf99tlr4U2C2WAW5pg2QrHqGcIMvQZjkNhrUX0cskI4IoCbJ yVmWwTPcHbxtftrq3ifdT80TPzlnHG28FJ6qp/Z5v44blNikVTDU1hYeKjjXlf57QLXL WoQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684257021; x=1686849021; 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=MgE20X4RBaYfDUVw67ihMRG3U700BcM/UKdWm0Z+sO8=; b=RX68Q+qPImuq57JicGRml5GVu0BorKq2B1JTwiu82NcdfrrEy1J9aOFfuA5cw+z0ZZ I1qchsIVoy2wAdVWUYq9x1vLOQV2xxj/4CJA6LvnG/JnfZPsha18vfW9CUPbfimIhK5Y +Z2/4Or2Qdqjnvvj+MiSX71FNwEwC6L1Hw71nRKvQ/4RUMyGMYCEr+IG07aJ+fsw427C T4KAkbrn/ZLRccrFooo8TtkGbfV2Jgo2wnAIoajA0eBfKcaqrDjn/ONj2VMs8usZDr/G VyHM2lT7Kcy0Cp03ndbiUHo7sk+T7WWVEniYOxmHuzZ5S7M37nhmABw4E0UkJB6kt0JW x7Hw== X-Gm-Message-State: AC+VfDyDMwSGenWOUPQmsEnkKftAVk92qUNFoJKKE71tMu7bLV1jISQ0 gyJU/p8WZmOa29hM68cT8paO041ruGe20oUWEMY= X-Google-Smtp-Source: ACHHUZ7vlz8mf43rNPJc7ba8O6RMkjp8GEDVdsuZfidruHESiONxHR0Ml9yVswvFEFMMmWv5uApPlg6DBnISVmZ2uFY= X-Received: by 2002:a05:6a00:10ce:b0:63d:24e4:f9c with SMTP id d14-20020a056a0010ce00b0063d24e40f9cmr47792889pfu.17.1684257021063; Tue, 16 May 2023 10:10:21 -0700 (PDT) MIME-Version: 1.0 References: <20230515172608.3558391-1-yuanchu@google.com> In-Reply-To: <20230515172608.3558391-1-yuanchu@google.com> From: Yang Shi Date: Tue, 16 May 2023 10:10:09 -0700 Message-ID: Subject: Re: [PATCH] mm: pagemap: restrict pagewalk to the requested range To: Yuanchu Xie Cc: Andrew Morton , "Liam R . Howlett" , "Zach O'Keefe" , Peter Xu , "Kirill A . Shutemov" , Matthew Wilcox , Pasha Tatashin , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 505BF2000F X-Rspam-User: X-Rspamd-Server: rspam06 X-Stat-Signature: gznf9b6s31x9fbh4s5e5pnepc3699iij X-HE-Tag: 1684257022-378611 X-HE-Meta: U2FsdGVkX18g61Uir1qoezvaxyPQDQvbOkeco2gGfFJfEThVzqavAyCHEMctMRKpVieJ163TXAV1ZVB7tXUoojO3XBi3C/ECAfVHL8eehqzYV7kSg8hhLoENmj5TLpc0EbE+KN7IPfO/bZKzv3NettMI9UXBRDtDDP27G+SZtyMPzzS3o78ns8l5PF5FbruAGugdAovqd+DgfoOVdAx2sSfF32CTEfa/W+ROec5SYYX5qcVN/++eA2hXAreDpXX/tF+tnf6q3Um/WeLhY0B3TFLUzvQ6EMDfxNlLWexZDKKtzX+AahSlSHncDycesbjQ1eLsX/upUd3NF6a9Kbp9rSjE1nhLuDwIYmfiiqjk+ItPfSw0r1p1i+pi61zT+j2tqSdh+2hwR1X8wijM3S/Po8al3k+6a9eMkjTwoqb1q5DXXLDNsluyQKInBOkbIYJiB78L7sTWz320UdB7Qs5aG0omgHYQEHIkVMMnsz/+Y/OtUWf2lHzeVjSdfxA0ROlQyjApDho5UJ24DvwCKV+Y+wgvdlgCKTrvA9/DGh7r7ueRk7brtp3T63NHa2hnE/VXmnwi0KopYwXz6Y/9ll68+pEyq9ZUbAGB8P71hI2ZZcLVdyE2Tlxb3POhq62djDTICMoIt5MUhoZP/sybwGlvaQ+dIClJAlU+hCWkBZjixrJQ4ynxadfKxs1uocPaYL/0UfCSAD0nrKByf1l1lfT/U40Z+r8WQRnZ4kLaLeVR1/yxFLKHAgcm8zm2p8AS6D6lRwOdbFLjoQC4XllZumTsNLle755caBhBZfblB3VNeAJDa3jRP5Bm7qJZgkJnop9vIx2tZb9gWSxPpQXHSXBOIyZaoOoq3EuS8njgfiO/rMhrYhS+Zk01yDTXBLuDpUNPzL6tANPB4yiCmw6yl/KP//VP+xUfz6HHmEScQdBZPoZy1Zh/GAV4QdICwcJwYN6ctwE0AnGxTjLhYjn007B c1DqqIDf 8s0ZNXTL/cy7TRoqh6bJEHEkcplEpfVJjogYM5XuCob/f8mynxzUpygHmX0YRhrmvjpSiofUj5RR9o7Ij0ttAqXEuP5HIzA7gUtggGvj5/nHDy21wH3SDSvAz+Xq2I3Uwm2XaByzBJlNsT4U53S5mIyrXQbroQ5HihEsLYZD3WXnbLLeZ5RCQlpjHbXdqBB9uHlYZT4WUUgaOh2WFKiJTqYEupueg0+C7U2SclWa8G+MBXLZvEBNzpORkTMFQzqUIW/zWPcpADsV4VxUiT8qWFZBFzLi9pqp9nC8PV5jDdYqCMGaFh33DsCmUd+It53mvFb2VY39DLb6o4YgOfim03FxK+Ph88Wlve0FuH+hIRGyiYIeABRLmELf/BkCRI7HH3e46Q3bpeUaPc6o= 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 Mon, May 15, 2023 at 10:26=E2=80=AFAM Yuanchu Xie w= rote: > > The pagewalk in pagemap_read reads one PTE past the end of the requested > range, and stops when the buffer runs out of space. While it produces > the right result, the extra read is unnecessary and less performant. > > I timed the following command before and after this patch: > dd count=3D100000 if=3D/proc/self/pagemap of=3D/dev/null > The results are consistently within 0.001s across 5 runs. > > Before: > 100000+0 records in > 100000+0 records out > 51200000 bytes (51 MB) copied, 0.0763159 s, 671 MB/s > > real 0m0.078s > user 0m0.012s > sys 0m0.065s > > After: > 100000+0 records in > 100000+0 records out > 51200000 bytes (51 MB) copied, 0.0487928 s, 1.0 GB/s > > real 0m0.050s > user 0m0.011s > sys 0m0.039s > > Signed-off-by: Yuanchu Xie Reviewed-by: Yang Shi > --- > fs/proc/task_mmu.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c > index 420510f6a545..6259dd432eeb 100644 > --- a/fs/proc/task_mmu.c > +++ b/fs/proc/task_mmu.c > @@ -1689,23 +1689,23 @@ static ssize_t pagemap_read(struct file *file, ch= ar __user *buf, > /* watch out for wraparound */ > start_vaddr =3D end_vaddr; > if (svpfn <=3D (ULONG_MAX >> PAGE_SHIFT)) { > + unsigned long end; > + > ret =3D mmap_read_lock_killable(mm); > if (ret) > goto out_free; > start_vaddr =3D untagged_addr_remote(mm, svpfn << PAGE_SH= IFT); > mmap_read_unlock(mm); > + > + end =3D start_vaddr + ((count / PM_ENTRY_BYTES) << PAGE_S= HIFT); > + if (end >=3D start_vaddr && end < mm->task_size) > + end_vaddr =3D end; > } > > /* Ensure the address is inside the task */ > if (start_vaddr > mm->task_size) > start_vaddr =3D end_vaddr; > > - /* > - * The odds are that this will stop walking way > - * before end_vaddr, because the length of the > - * user buffer is tracked in "pm", and the walk > - * will stop when we hit the end of the buffer. > - */ > ret =3D 0; > while (count && (start_vaddr < end_vaddr)) { > int len; > -- > 2.40.1.606.ga4b1b128d6-goog >