From: David Hildenbrand <david@redhat.com>
To: alexlzhu@fb.com, linux-mm@kvack.org
Cc: willy@infradead.org, akpm@linux-foundation.org, riel@surriel.com,
hannes@cmpxchg.org, linux-kernel@vger.kernel.org,
kernel-team@fb.com
Subject: Re: [PATCH 0/3] THP Shrinker
Date: Wed, 28 Sep 2022 16:21:23 +0200 [thread overview]
Message-ID: <c4462af8-80a5-6cb6-8bfc-0e7ff1da6856@redhat.com> (raw)
In-Reply-To: <cover.1664347167.git.alexlzhu@fb.com>
On 28.09.22 08:44, alexlzhu@fb.com wrote:
> From: Alexander Zhu <alexlzhu@fb.com>
>
> Transparent Hugepages use a larger page size of 2MB in comparison to
> normal sized pages that are 4kb. A larger page size allows for fewer TLB
> cache misses and thus more efficient use of the CPU. Using a larger page
> size also results in more memory waste, which can hurt performance in some
> use cases. THPs are currently enabled in the Linux Kernel by applications
> in limited virtual address ranges via the madvise system call. The THP
> shrinker tries to find a balance between increased use of THPs, and
> increased use of memory. It shrinks the size of memory by removing the
> underutilized THPs that are identified by the thp_utilization scanner.
>
> In our experiments we have noticed that the least utilized THPs are almost
> entirely unutilized.
>
> Sample Output:
>
> Utilized[0-50]: 1331 680884
> Utilized[51-101]: 9 3983
> Utilized[102-152]: 3 1187
> Utilized[153-203]: 0 0
> Utilized[204-255]: 2 539
> Utilized[256-306]: 5 1135
> Utilized[307-357]: 1 192
> Utilized[358-408]: 0 0
> Utilized[409-459]: 1 57
> Utilized[460-512]: 400 13
> Last Scan Time: 223.98s
> Last Scan Duration: 70.65s
>
> Above is a sample obtained from one of our test machines when THP is always
> enabled. Of the 1331 THPs in this thp_utilization sample that have from
> 0-50 utilized subpages, we see that there are 680884 free pages. This
> comes out to 680884 / (512 * 1331) = 99.91% zero pages in the least
> utilized bucket. This represents 680884 * 4KB = 2.7GB memory waste.
>
> Also note that the vast majority of pages are either in the least utilized
> [0-50] or most utilized [460-512] buckets. The least utilized THPs are
> responsible for almost all of the memory waste when THP is always
> enabled. Thus by clearing out THPs in the lowest utilization bucket
> we extract most of the improvement in CPU efficiency. We have seen
> similar results on our production hosts.
>
> This patchset introduces the THP shrinker we have developed to identify
> and split the least utilized THPs. It includes the thp_utilization
> changes that groups anonymous THPs into buckets, the split_huge_page()
> changes that identify and zap zero 4KB pages within THPs and the shrinker
> changes. It should be noted that the split_huge_page() changes are based
> off previous work done by Yu Zhao.
>
> In the future, we intend to allow additional tuning to the shrinker
> based on workload depending on CPU/IO/Memory pressure and the
> amount of anonymous memory. The long term goal is to eventually always
> enable THP for all applications and deprecate madvise entirely.
>
> In production we thus far have observed 2-3% reduction in overall cpu
> usage on stateless web servers when THP is always enabled.
What's the diff to the RFC?
--
Thanks,
David / dhildenb
next prev parent reply other threads:[~2022-09-28 14:21 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-28 6:44 alexlzhu
2022-09-28 6:44 ` [PATCH 1/3] mm: add thp_utilization metrics to sysfs alexlzhu
2022-09-28 6:44 ` [PATCH 2/3] mm: changes to split_huge_page() to free zero filled tail pages alexlzhu
2022-09-28 8:48 ` Huang, Ying
2022-09-28 16:24 ` Alex Zhu (Kernel)
2022-10-01 20:39 ` kernel test robot
2022-09-28 6:44 ` [PATCH 3/3] mm: THP low utilization shrinker alexlzhu
2022-09-28 14:21 ` David Hildenbrand [this message]
2022-09-28 16:22 ` [PATCH 0/3] THP Shrinker Alex Zhu (Kernel)
-- strict thread matches above, loose matches on Subject: below --
2022-09-28 6:25 alexlzhu
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=c4462af8-80a5-6cb6-8bfc-0e7ff1da6856@redhat.com \
--to=david@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alexlzhu@fb.com \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@fb.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=riel@surriel.com \
--cc=willy@infradead.org \
/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