From: Daniel Gomez <da.gomez@samsung.com>
To: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: "akpm@linux-foundation.org" <akpm@linux-foundation.org>,
"hughd@google.com" <hughd@google.com>,
"willy@infradead.org" <willy@infradead.org>,
"david@redhat.com" <david@redhat.com>,
"ioworker0@gmail.com" <ioworker0@gmail.com>,
"wangkefeng.wang@huawei.com" <wangkefeng.wang@huawei.com>,
"ying.huang@intel.com" <ying.huang@intel.com>,
"21cnbao@gmail.com" <21cnbao@gmail.com>,
"ryan.roberts@arm.com" <ryan.roberts@arm.com>,
"shy828301@gmail.com" <shy828301@gmail.com>,
"ziy@nvidia.com" <ziy@nvidia.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 0/8] add mTHP support for anonymous shmem
Date: Wed, 8 May 2024 11:39:32 +0000 [thread overview]
Message-ID: <fqtaxc5pgu3zmvbdad4w6xty5iozye7v5z2b5ckqcjv273nz7b@hhdrjwf6rai3> (raw)
In-Reply-To: <cover.1714978902.git.baolin.wang@linux.alibaba.com>
On Mon, May 06, 2024 at 04:46:24PM +0800, Baolin Wang wrote:
> Anonymous pages have already been supported for multi-size (mTHP) allocation
> through commit 19eaf44954df, that can allow THP to be configured through the
> sysfs interface located at '/sys/kernel/mm/transparent_hugepage/hugepage-XXkb/enabled'.
>
> However, the anonymous shared pages will ignore the anonymous mTHP rule
> configured through the sysfs interface, and can only use the PMD-mapped
> THP, that is not reasonable. Many implement anonymous page sharing through
> mmap(MAP_SHARED | MAP_ANONYMOUS), especially in database usage scenarios,
> therefore, users expect to apply an unified mTHP strategy for anonymous pages,
> also including the anonymous shared pages, in order to enjoy the benefits of
> mTHP. For example, lower latency than PMD-mapped THP, smaller memory bloat
> than PMD-mapped THP, contiguous PTEs on ARM architecture to reduce TLB miss etc.
>
> The primary strategy is similar to supporting anonymous mTHP. Introduce
> a new interface '/mm/transparent_hugepage/hugepage-XXkb/shmem_enabled',
> which can have all the same values as the top-level
> '/sys/kernel/mm/transparent_hugepage/shmem_enabled', with adding a new
> additional "inherit" option. By default all sizes will be set to "never"
> except PMD size, which is set to "inherit". This ensures backward compatibility
> with the shmem enabled of the top level, meanwhile also allows independent
> control of shmem enabled for each mTHP.
I'm trying to understand the adoption of mTHP and how it fits into the adoption
of (large) folios that the kernel is moving towards. Can you, or anyone involved
here, explain this? How much do they overlap, and can we benefit from having
both? Is there any argument against the adoption of large folios here that I
might have missed?
>
> Use the page fault latency tool to measure the performance of 1G anonymous shmem
> with 32 threads on my machine environment with: ARM64 Architecture, 32 cores,
> 125G memory:
> base: mm-unstable
> user-time sys_time faults_per_sec_per_cpu faults_per_sec
> 0.04s 3.10s 83516.416 2669684.890
>
> mm-unstable + patchset, anon shmem mTHP disabled
> user-time sys_time faults_per_sec_per_cpu faults_per_sec
> 0.02s 3.14s 82936.359 2630746.027
>
> mm-unstable + patchset, anon shmem 64K mTHP enabled
> user-time sys_time faults_per_sec_per_cpu faults_per_sec
> 0.08s 0.31s 678630.231 17082522.495
>
> From the data above, it is observed that the patchset has a minimal impact when
> mTHP is not enabled (some fluctuations observed during testing). When enabling 64K
> mTHP, there is a significant improvement of the page fault latency.
>
> TODO:
> - Support mTHP for tmpfs.
> - Do not split the large folio when share memory swap out.
> - Can swap in a large folio for share memory.
>
> Changes from RFC:
> - Rebase the patch set against the new mm-unstable branch, per Lance.
> - Add a new patch to export highest_order() and next_order().
> - Add a new patch to align mTHP size in shmem_get_unmapped_area().
> - Handle the uffd case and the VMA limits case when building mapping for
> large folio in the finish_fault() function, per Ryan.
> - Remove unnecessary 'order' variable in patch 3, per Kefeng.
> - Keep the anon shmem counters' name consistency.
> - Modify the strategy to support mTHP for anonymous shmem, discussed with
> Ryan and David.
> - Add reviewed tag from Barry.
> - Update the commit message.
>
> Baolin Wang (8):
> mm: move highest_order() and next_order() out of the THP config
> mm: memory: extend finish_fault() to support large folio
> mm: shmem: add an 'order' parameter for shmem_alloc_hugefolio()
> mm: shmem: add THP validation for PMD-mapped THP related statistics
> mm: shmem: add multi-size THP sysfs interface for anonymous shmem
> mm: shmem: add mTHP support for anonymous shmem
> mm: shmem: add mTHP size alignment in shmem_get_unmapped_area
> mm: shmem: add mTHP counters for anonymous shmem
>
> Documentation/admin-guide/mm/transhuge.rst | 29 ++
> include/linux/huge_mm.h | 35 ++-
> mm/huge_memory.c | 17 +-
> mm/memory.c | 43 ++-
> mm/shmem.c | 335 ++++++++++++++++++---
> 5 files changed, 387 insertions(+), 72 deletions(-)
>
> --
> 2.39.3
>
next prev parent reply other threads:[~2024-05-08 11:39 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-06 8:46 Baolin Wang
2024-05-06 8:46 ` [PATCH 1/8] mm: move highest_order() and next_order() out of the THP config Baolin Wang
2024-05-07 10:21 ` Ryan Roberts
2024-05-08 2:13 ` Baolin Wang
2024-05-08 9:06 ` Ryan Roberts
2024-05-08 9:40 ` Baolin Wang
2024-05-06 8:46 ` [PATCH 2/8] mm: memory: extend finish_fault() to support large folio Baolin Wang
2024-05-07 10:37 ` Ryan Roberts
2024-05-08 3:44 ` Baolin Wang
2024-05-08 7:15 ` David Hildenbrand
2024-05-08 9:06 ` Baolin Wang
2024-05-08 8:53 ` Ryan Roberts
2024-05-08 9:31 ` Baolin Wang
2024-05-08 10:47 ` Ryan Roberts
2024-05-09 1:10 ` Baolin Wang
2024-05-06 8:46 ` [PATCH 3/8] mm: shmem: add an 'order' parameter for shmem_alloc_hugefolio() Baolin Wang
2024-05-06 8:46 ` [PATCH 4/8] mm: shmem: add THP validation for PMD-mapped THP related statistics Baolin Wang
2024-05-06 8:46 ` [PATCH 5/8] mm: shmem: add multi-size THP sysfs interface for anonymous shmem Baolin Wang
2024-05-07 10:52 ` Ryan Roberts
2024-05-08 4:45 ` Baolin Wang
2024-05-08 7:08 ` David Hildenbrand
2024-05-08 7:12 ` David Hildenbrand
2024-05-08 9:02 ` Ryan Roberts
2024-05-08 9:56 ` Baolin Wang
2024-05-08 10:48 ` Ryan Roberts
2024-05-08 12:02 ` David Hildenbrand
2024-05-08 12:10 ` David Hildenbrand
2024-05-08 12:43 ` Ryan Roberts
2024-05-08 12:44 ` Ryan Roberts
2024-05-08 12:45 ` David Hildenbrand
2024-05-08 12:54 ` Ryan Roberts
2024-05-08 13:07 ` David Hildenbrand
2024-05-08 13:44 ` Ryan Roberts
2024-05-06 8:46 ` [PATCH 6/8] mm: shmem: add mTHP support " Baolin Wang
2024-05-07 10:46 ` kernel test robot
2024-05-08 6:03 ` Baolin Wang
2024-05-06 8:46 ` [PATCH 7/8] mm: shmem: add mTHP size alignment in shmem_get_unmapped_area Baolin Wang
2024-05-06 8:46 ` [PATCH 8/8] mm: shmem: add mTHP counters for anonymous shmem Baolin Wang
2024-05-06 10:54 ` [PATCH 0/8] add mTHP support " Lance Yang
2024-05-07 1:47 ` Baolin Wang
2024-05-07 6:50 ` Lance Yang
2024-05-07 10:20 ` Ryan Roberts
2024-05-08 5:45 ` Baolin Wang
[not found] ` <CGME20240508113934eucas1p13a3972f3f9955365f40155e084a7c7d5@eucas1p1.samsung.com>
2024-05-08 11:39 ` Daniel Gomez [this message]
2024-05-08 11:58 ` David Hildenbrand
2024-05-08 14:28 ` Daniel Gomez
2024-05-08 17:03 ` David Hildenbrand
2024-05-09 19:18 ` Daniel Gomez
2024-05-09 3:08 ` Baolin Wang
2024-05-08 19:23 ` Luis Chamberlain
2024-05-09 17:48 ` David Hildenbrand
2024-05-10 18:53 ` Luis Chamberlain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fqtaxc5pgu3zmvbdad4w6xty5iozye7v5z2b5ckqcjv273nz7b@hhdrjwf6rai3 \
--to=da.gomez@samsung.com \
--cc=21cnbao@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=david@redhat.com \
--cc=hughd@google.com \
--cc=ioworker0@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ryan.roberts@arm.com \
--cc=shy828301@gmail.com \
--cc=wangkefeng.wang@huawei.com \
--cc=willy@infradead.org \
--cc=ying.huang@intel.com \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox