From: Baolin Wang <baolin.wang@linux.alibaba.com>
To: David Hildenbrand <david@redhat.com>,
Ryan Roberts <ryan.roberts@arm.com>,
akpm@linux-foundation.org, hughd@google.com
Cc: lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com,
npache@redhat.com, dev.jain@arm.com, ziy@nvidia.com,
linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/2] fix MADV_COLLAPSE issue if THP settings are disabled
Date: Fri, 30 May 2025 17:52:03 +0800 [thread overview]
Message-ID: <19faab84-dd8e-4dfd-bf91-80bcb4a34fe8@linux.alibaba.com> (raw)
In-Reply-To: <6caefe0b-c909-4692-a006-7f8b9c0299a6@redhat.com>
On 2025/5/30 17:16, David Hildenbrand wrote:
> On 30.05.25 11:10, David Hildenbrand wrote:
>> On 30.05.25 10:59, Ryan Roberts wrote:
>>> On 30/05/2025 09:44, David Hildenbrand wrote:
>>>> On 30.05.25 10:04, Ryan Roberts wrote:
>>>>> On 29/05/2025 09:23, Baolin Wang wrote:
>>>>>> As we discussed in the previous thread [1], the MADV_COLLAPSE will
>>>>>> ignore
>>>>>> the system-wide anon/shmem THP sysfs settings, which means that
>>>>>> even though
>>>>>> we have disabled the anon/shmem THP configuration, MADV_COLLAPSE
>>>>>> will still
>>>>>> attempt to collapse into a anon/shmem THP. This violates the rule
>>>>>> we have
>>>>>> agreed upon: never means never. This patch set will address this
>>>>>> issue.
>>>>>
>>>>> This is a drive-by comment from me without having the previous
>>>>> context, but...
>>>>>
>>>>> Surely MADV_COLLAPSE *should* ignore the THP sysfs settings? It's a
>>>>> deliberate
>>>>> user-initiated, synchonous request to use huge pages for a range of
>>>>> memory.
>>>>> There is nothing *transparent* about it, it just happens to be
>>>>> implemented using
>>>>> the same logic that THP uses.
>>>>>
>>>>> I always thought this was a deliberate design decision.
>>>>
>>>> If the admin said "never", then why should a user be able to
>>>> overwrite that?
>>>
>>> Well my interpretation would be that the admin is saying never
>>> *transparently*
>>> give anyone any hugepages; on balance it does more harm than good for my
>>> workloads. The toggle is called transparent_hugepage/enabled, after all.
>>
>> I'd say it's "enabling transparent huge pages" not "transparently
>> enabling huge pages". After all, these things are ... transparent huge
>> pages.
>>
>> But yeah, it's confusing.
>>
>>>
>>> Whereas MADV_COLLAPSE is deliberately applied to a specific region at an
>>> opportune moment in time, presumably because the user knows that the
>>> region
>>> *will* benefit and because that point in the execution is not
>>> sensitive to latency.
>>
>> Not sure if MADV_HUGEPAGE is really *that* different.
>>
>>>
>>> I see them as logically separate.
>>>
>>>>
>>>> The design decision I recall is that if VM_NOHUGEPAGE is set, we'll
>>>> ignore that.
>>>> Because that was set by the app itself (MADV_NOHUEPAGE).
IIUC, MADV_COLLAPSE does not ignore the VM_NOHUGEPAGE setting, if we set
VM_NOHUGEPAGE, then MADV_COLLAPSE will not be allowed to collapse a THP.
See:
__thp_vma_allowable_orders() ---> vma_thp_disabled()
>>> Hmm, ok. My instinct would have been the opposite; MADV_NOHUGEPAGE
>>> means "I
>>> don't want the risk of latency spikes and memory bloat that THP can
>>> cause". Not
>>> "ignore my explicit requests to MADV_COLLAPSE".
>>>
>>> But if that descision was already taken and that's the current
>>> behavior then I
>>> agree we have an inconsistency with respect to the sysfs control.
>>>
>>> Perhaps we should be guided by real world usage - AIUI there is a
>>> cloud that
>>> disables THP at system level today (Google?).
>> The use case I am aware of for disabling it for debugging purposes.
>> Saved us quite some headake in the past at customer sites for
>> troubleshooting + workarounds ...
>>
>>
>> Let's take a look at the man page:
>>
>> MADV_COLLAPSE is independent of any sysfs (see sysfs(5)) setting
>> under /sys/kernel/mm/transparent_hugepage, both in terms of determining
>> THP eligibility, and allocation semantics.
>>
>> I recall we discussed that it should ignore the
>> max_ptes_none/swap/shared.
>>
>> But "any" setting would include "enable" ...
>
> It kind-of contradicts the linked
> Documentation/admin-guide/mm/transhuge.rst, where we have this
> *beautiful* comment
>
> "Transparent Hugepage Support for anonymous memory can be entirely
> disable (mostly for debugging purposes".
>
> I mean, "entirely" is also pretty clear to me.
Yes, agree. We have encountered issues caused by THP in our Alibaba
fleet. The quickest way to stop the bleeding was to disable THP. In such
case, we do not expect MADV_HUGEPAGE to still collapse a THP.
next prev parent reply other threads:[~2025-05-30 9:52 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-29 8:23 Baolin Wang
2025-05-29 8:23 ` [PATCH 1/2] mm: huge_memory: disallow hugepages if the system-wide THP sysfs " Baolin Wang
2025-05-29 15:10 ` Zi Yan
2025-05-30 1:51 ` Baolin Wang
2025-05-30 2:04 ` Zi Yan
2025-05-30 2:21 ` Baolin Wang
2025-05-30 2:22 ` Zi Yan
2025-05-29 8:23 ` [PATCH 2/2] mm: shmem: disallow hugepages if the system-wide shmem " Baolin Wang
2025-05-29 15:21 ` Zi Yan
2025-05-30 1:58 ` Baolin Wang
2025-05-30 2:17 ` Zi Yan
2025-05-30 2:32 ` Baolin Wang
2025-05-30 2:35 ` Zi Yan
2025-05-30 2:39 ` Baolin Wang
2025-05-30 8:04 ` [PATCH 0/2] fix MADV_COLLAPSE issue if THP " Ryan Roberts
2025-05-30 8:44 ` David Hildenbrand
2025-05-30 8:47 ` Lorenzo Stoakes
2025-05-30 8:52 ` David Hildenbrand
2025-05-30 9:07 ` Ryan Roberts
2025-05-30 9:14 ` Lorenzo Stoakes
2025-05-30 8:59 ` Ryan Roberts
2025-05-30 9:10 ` David Hildenbrand
2025-05-30 9:16 ` David Hildenbrand
2025-05-30 9:34 ` Lorenzo Stoakes
2025-05-30 9:52 ` Baolin Wang [this message]
2025-05-30 10:45 ` David Hildenbrand
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=19faab84-dd8e-4dfd-bf91-80bcb4a34fe8@linux.alibaba.com \
--to=baolin.wang@linux.alibaba.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=dev.jain@arm.com \
--cc=hughd@google.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=npache@redhat.com \
--cc=ryan.roberts@arm.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