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 0F6CAC8303C for ; Mon, 7 Jul 2025 15:47:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A96478D000D; Mon, 7 Jul 2025 11:47:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A6DDF8D0002; Mon, 7 Jul 2025 11:47:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9AA918D000D; Mon, 7 Jul 2025 11:47:37 -0400 (EDT) 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 89C1C8D0002 for ; Mon, 7 Jul 2025 11:47:37 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 3C719B6E9F for ; Mon, 7 Jul 2025 15:47:37 +0000 (UTC) X-FDA: 83637898554.18.B92E5D9 Received: from mail-vk1-f178.google.com (mail-vk1-f178.google.com [209.85.221.178]) by imf02.hostedemail.com (Postfix) with ESMTP id 48C6780012 for ; Mon, 7 Jul 2025 15:47:35 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=kernel.org (policy=quarantine); spf=pass (imf02.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.178 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751903255; a=rsa-sha256; cv=none; b=kJFGVHhKjrlsK69c+/1DJsPg5tLxmGU2EWgIt0/INd6urqOux6LY85ryxUnS41b59uAe84 4EqW6oH8Wq/+Ht5eBTCKK1eZt75d85a/JtF/5xJr1XCgOXkPkKfgYyLLvdxGhbCWizsDGN pSS34Bs8NXYgkEzlC7mcqDyaA2zwa20= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=kernel.org (policy=quarantine); spf=pass (imf02.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.178 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751903255; 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; bh=WWAje+TfHCruGybMEHfBY+8ZUpO/up4oHuhPw5vp5fE=; b=nvOT6OWXxUX1oOUOZanIg3Ar0Gab6TDhwLeJpCKga9kLAUFvx5xoEZoE144HnJRFhc7vrw n02yUltRzJ7kVG71vGIFj+3/cG36cSCPUw00EDMS38FexJohpIZxuYEorgjygbgkg/pehi jUyU1M+OeYPsxu7mS11OYc0UleumrXw= Received: by mail-vk1-f178.google.com with SMTP id 71dfb90a1353d-52b2290e290so2295653e0c.1 for ; Mon, 07 Jul 2025 08:47:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751903254; x=1752508054; 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=WWAje+TfHCruGybMEHfBY+8ZUpO/up4oHuhPw5vp5fE=; b=Sw+QC63I4u45KW6NWPVrSsYq8VbolRkf/VKk7mlYJMLhO+qUJv8168Eevl3wTq3sTP Tm1jQIjIBHMxJ+zZZzq3RiXowGKf6yWbOJlBlbID0/qL6pVZMiTWtX92VYm+G5EwO6Zy 7p34ypfhaEbKs3q+bxO8+l3T1oF5jOwQXhT0nR+E3QYY4ubiMOMrf1fapMZayhbIbQuw cydUCkXR5omcWb821kt0jjMMOn0ejo3SwbeMCLW2QwB3KEwU77nSyvhB1OYNCyH7hXRH n+G+p8fafl3j3LBwt/KHkrAZVhbGg3sF2SOa2WK9AoxN/3fOzZqAdfaKDFCrEGW9PwzO iqtA== X-Forwarded-Encrypted: i=1; AJvYcCVyA4gSE31BrFpXlowQ0pdpz3GYd9xwd6bjoADg6IVwg3QU6pJAeFjhAKgGDsJjcCLqYDKQPz1X8Q==@kvack.org X-Gm-Message-State: AOJu0Yx04WQ7YuxiLyTioVkGMNPRndwRY2qDUS9A6T001H/Bq24NeOPN T0llUEReQ6jmXz99HDWioF5mTkC7OSYQuAOZnQWBb8h6dCLXGBq1VzLIzCpvXkCVU5bPRUguTIP FyZJFxewv+ebHVzmfMsUVoLXoj76JdYk= X-Gm-Gg: ASbGncvFwA6/YVNM+NhOEtMyItaTKvWcw657ooO/uONufT1totKTDnkU5TnLzRyMUVV n1x46NCd/qLMJBWpeVOnNZtlf3w+pEG8H1Ya03OTYSBtb/f97fJfBLzE1wF1Opwsa6l3FH0iuPB oG0X+eJD0M86akeF6MSk6Gy4PAzTq0EfnLGr+j5HEqLo8SNTVLMqYnWzw= X-Google-Smtp-Source: AGHT+IE833j0/lVpKZX+KPtFSePtF4+1IEDQqHjPEGgdCfGk57QwMgoGEUubWqc2Jv3YYoVViwTUp5SCjjobcj2Tpyc= X-Received: by 2002:a05:6122:660c:b0:530:5308:42ec with SMTP id 71dfb90a1353d-5347e7545e7mr7554655e0c.8.1751903254221; Mon, 07 Jul 2025 08:47:34 -0700 (PDT) MIME-Version: 1.0 References: <440940e78aeb7430c5cc8b6d2088ae98265b9809.1751599072.git.baolin.wang@linux.alibaba.com> In-Reply-To: <440940e78aeb7430c5cc8b6d2088ae98265b9809.1751599072.git.baolin.wang@linux.alibaba.com> From: Barry Song Date: Mon, 7 Jul 2025 23:47:21 +0800 X-Gm-Features: Ac12FXx8oWQdUphdbM5vEIm5WcLCzobffFJgLPPrNw0K1ckpoEsbg-1aB-8khwM Message-ID: Subject: Re: [PATCH v2] mm: fault in complete folios instead of individual pages for tmpfs To: Baolin Wang Cc: akpm@linux-foundation.org, hughd@google.com, david@redhat.com, ziy@nvidia.com, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, npache@redhat.com, ryan.roberts@arm.com, dev.jain@arm.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, mhocko@suse.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 48C6780012 X-Stat-Signature: s41yxdg161xe9qcz7knha1yaf8sx9uze X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam-User: X-Rspam: Yes X-HE-Tag: 1751903255-646683 X-HE-Meta: U2FsdGVkX1/qV7+FhI40HMGoUptLfpy497GsjC0VawAIcxbzx87BYRAQC6K16gb1J1pXSO04EfpNPmfJ5KUGzVwQp6INIScL+8dzEmjKPtFcq7xG8OmrrW+2KnKhEukSJRHJ/BUiq2iHufT9j1yq7e5mUsNEWNyyIX0nsiplpXWO3x17sdYih7efz6xAmnnNL/Dres7rJBhHvAPH8k2Dt8a9ENNhYZbiAJKY1d8q333JFtuFBwADL0hdcCgVkqFr69W0AUBzHRG9Zxys2d/ArHz/XUcoPGNL+9WcffRv7QTauzG58/lE9dS6a5Qy4hpHxn9H+M6DFpZXzKJHs1KZrBWKsVFU0a3B6T+3irqK4oxpzi/NtOWjd7HvxSYVOPKFDY5n0zwSqYkpYuATvMTRaGkVWhHUG140HEoMDfrBSoyoCz4IFKVEZEozxT1Q0gUvwTK6TPNjN5v7HXJA/XqRFFypD6FHOzFbHF/3S0+QORHoUsP4z6SiUJGhHegaLGfUsFq2oRy5YTd5bWu4Qr/PCqO753IytuoKT1bTFHIAxCIZh8QyttSiWshNAcT3MVFk0w3SKHBidRjZKsJl9779Xkhhs309tGoHsKV8rwIHKfB8keMhG06L5+dXBp1QscdSV0tWeidO/rtZFZTNup0XyFE6mkLEXLpT5o+Ff8gEHVr0sWAXxJaSrQY+mIOyeZ2yBYAhkvkRx4VA+w1e2sKQu9DqXAP2yRutZSR9G07kLag8qEPxrh7/tgmg1taB+Rm8kv878NjkeUjw8Ou5Pp0qIezo/2lO0AjTX1dxZ6XNqLFnoq63geIJdZexzsYvsuBcLNieyHtgRIoAtAHql+RTZhUxfx58iclXsEC7NNUfiW0hsWtl3mWhhXcgw4d4t2/AFGk7IgDrg65zbqM1/h/23aV0eSQWjlJm9u/CyVoqenzxEgzWF2BNu1i/a/4iBPPkVzhf3EAjg99nZOy1Zt4 SBWBMsyd TLUHDPhrEAIEEYrF0akm18EmRj7HH1PMw1ooEcfKYG1JEiVyqRXCCG84XCTrkkHDOyoIokbKqmrG7J9ooruhvPdLOufP36/8TUu57sNFn7H6lohFCwRY9wYZ/zTJ5o3I1yZFmu2ehpP3F2Xf5TQyWuHwDXCvbwJxHVLY0P95O9uxyeCm3amLYvGGzmjteNL8Rtcfr37lvRBWVMgdOWb8doiCN8vJxq9I88B3BMXGCzY2ToAbMawv1X3XKnZBixjMAC5q3cAwP1ZRHFZ3VbQW0ZFKA+zH4Cx9VGKW8QVm4Ypo4THe47zrWhhsAs6dMv3iAUw9PVNnKq5PWafWRdfdUOlZ4x5BiNSUU9ZTM7LAJ14/Nw4ACz0sJMGIyCA== 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 Fri, Jul 4, 2025 at 11:19=E2=80=AFAM Baolin Wang wrote: > > After commit acd7ccb284b8 ("mm: shmem: add large folio support for tmpfs"= ), > tmpfs can also support large folio allocation (not just PMD-sized large > folios). > > However, when accessing tmpfs via mmap(), although tmpfs supports large f= olios, > we still establish mappings at the base page granularity, which is unreas= onable. > > We can map multiple consecutive pages of a tmpfs folios at once according= to > the size of the large folio. On one hand, this can reduce the overhead of= page > faults; on the other hand, it can leverage hardware architecture optimiza= tions > to reduce TLB misses, such as contiguous PTEs on the ARM architecture. > > Moreover, tmpfs mount will use the 'huge=3D' option to control large foli= o > allocation explicitly. So it can be understood that the process's RSS sta= tistics > might increase, and I think this will not cause any obvious effects for u= sers. > > Performance test: > I created a 1G tmpfs file, populated with 64K large folios, and write-acc= essed it > sequentially via mmap(). I observed a significant performance improvement= : > > Before the patch: > real 0m0.158s > user 0m0.008s > sys 0m0.150s > > After the patch: > real 0m0.021s > user 0m0.004s > sys 0m0.017s > > Signed-off-by: Baolin Wang Reviewed-by: Barry Song > --- > Changes from v1: > - Drop the unnecessary IS_ALIGNED() check, per David. > - Update the commit message, per David. > --- > mm/memory.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index 0f9b32a20e5b..9944380e947d 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -5383,10 +5383,10 @@ vm_fault_t finish_fault(struct vm_fault *vmf) > > /* > * Using per-page fault to maintain the uffd semantics, and same > - * approach also applies to non-anonymous-shmem faults to avoid > + * approach also applies to non shmem/tmpfs faults to avoid > * inflating the RSS of the process. > */ > - if (!vma_is_anon_shmem(vma) || unlikely(userfaultfd_armed(vma)) |= | > + if (!vma_is_shmem(vma) || unlikely(userfaultfd_armed(vma)) || > unlikely(needs_fallback)) { > nr_pages =3D 1; > } else if (nr_pages > 1) { > -- > 2.43.5 > >