All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Kravetz <mike.kravetz@oracle.com>
To: Muchun Song <songmuchun@bytedance.com>
Cc: corbet@lwn.net, akpm@linux-foundation.org, mcgrof@kernel.org,
	keescook@chromium.org, yzaikin@google.com, osalvador@suse.de,
	david@redhat.com, masahiroy@kernel.org,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, duanxiongchun@bytedance.com,
	smuchun@gmail.com
Subject: Re: [PATCH v10 4/4] mm: hugetlb_vmemmap: add hugetlb_optimize_vmemmap sysctl
Date: Wed, 11 May 2022 10:53:07 -0700	[thread overview]
Message-ID: <c77c61c8-8a5a-87e8-db89-d04d8aaab4cc@oracle.com> (raw)
In-Reply-To: <YnuWnFbb8xExKfdk@FVFYT0MHHV2J.usts.net>

On 5/11/22 03:57, Muchun Song wrote:
> On Wed, May 11, 2022 at 05:45:57PM +0800, Muchun Song wrote:
>> On Tue, May 10, 2022 at 05:39:40PM -0700, Mike Kravetz wrote:
>>> On 5/10/22 14:30, Mike Kravetz wrote:
>>>> On 5/8/22 23:27, Muchun Song wrote:
>>>>> diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
>>>>> index 029fb7e26504..917112661b5c 100644
>>>>> --- a/include/linux/memory_hotplug.h
>>>>> +++ b/include/linux/memory_hotplug.h
>>>>> @@ -351,4 +351,13 @@ void arch_remove_linear_mapping(u64 start, u64 size);
>>>>>  extern bool mhp_supports_memmap_on_memory(unsigned long size);
>>>>>  #endif /* CONFIG_MEMORY_HOTPLUG */
>>>>>  
>>>>> +#ifdef CONFIG_MHP_MEMMAP_ON_MEMORY
>>>>> +bool mhp_memmap_on_memory(void);
>>>>> +#else
>>>>> +static inline bool mhp_memmap_on_memory(void)
>>>>> +{
>>>>> +	return false;
>>>>> +}
>>>>> +#endif
>>>>> +
>>>>>  #endif /* __LINUX_MEMORY_HOTPLUG_H */
>>>>> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
>>>>> index 8605d7eb7f5c..86158eb9da70 100644
>>>>> --- a/mm/hugetlb.c
>>>>> +++ b/mm/hugetlb.c
>>>>> @@ -1617,6 +1617,9 @@ static DECLARE_WORK(free_hpage_work, free_hpage_workfn);
>>>>>  
>>>>>  static inline void flush_free_hpage_work(struct hstate *h)
>>>>>  {
>>>>> +	if (!hugetlb_optimize_vmemmap_enabled())
>>>>> +		return;
>>>>> +
>>>>
>>>> Hi Muchun,
>>>>
>>>> In v9 I was suggesting that we may be able to eliminate the static_branch_inc/dec from the vmemmap free/alloc paths.  With this patch
>>>> I believe hugetlb_optimize_vmemmap_enabled() is really checking
>>>> 'has hugetlb vmemmap optimization been enabled' OR 'are there still vmemmap
>>>> optimized hugetlb pages in the system'.  That may be confusing.
>>>>
>>>
>>> Sorry, I forgot about the use of hugetlb_optimize_vmemmap_enabled in
>>> page_fixed_fake_head.  We need to know if there are any vmemmap optimized
>>> hugetlb pages in the system in this performance sensitive path.  So,
>>> static_branch_inc/dec is indeed a good idea.
>>>
>>
>> Agree.
>>
>>> Please disregard my attempt below at removing static_branch_inc/dec.
>>>
>>> I still find the name hugetlb_optimize_vmemmap_enabled a bit confusing as
>>> it tests two conditions (enabled and pages in use).
>>>
>>
>> Right. It tests two conditions.
>>
>>> You have already 'open coded' just the check for enabled in the routine
>>> hugetlb_vmemmap_free with:
>>>
>>> 	READ_ONCE(vmemmap_optimize_mode) == VMEMMAP_OPTIMIZE_OFF
>>>
>>> How about having hugetlb_optimize_vmemmap_enabled() just check
>>> vmemmap_optimize_mode in a manner like above?  Then rename
>>
>> I'm wondering is it necessary to do this? vmemmap_optimize_mode
>> is a internal state in hugetlb_vmemmap.c, at leaset now there is
>> no outside users who care about this.  Open-coding may be not
>> an issue (I guess)?  If one day someone cares it, maybe it it
>> the time to do this and rename hugetlb_optimize_vmemmap_enabled()?
>> I'm not against doing this, just expressing some of my thoughts.
>> What do you think, Mike?
>>
>>> hugetlb_optimize_vmemmap_enabled to something like:
>>> hugetlb_optimized_vmemmap_possible().  Sorry, I can think if a great name.
>>>
>>
>> At least I cannot come up with an appropriate name.
>> hugetlb_optimize_vmemmap_may_enabled()? It's not easy to come
>> up with a good name.
>>
> 
> Instead of renaming, how about remove hugetlb_optimize_vmemmap_enabled()
> directly?  I found there are only two places (mm/memory_hotplug.c and
> arch/arm64/mm/flush.c) except include/linux/page-flags.h where use this
> helper.
> 
> In arch/arm64/mm/flush.c, we could replace it with
> 
>   if (PageHuge(page) && HPageVmemmapOptimized(compound_head(page)))
> 
> In mm/memory_hotplug.c, I have a plan to remove it as well (I'll
> post them out after this patch merged).
> 
> Finally, there is no outside users of it, we could remove it and squash
> it into page_fixed_fake_head(). What do you think this, Mike?

That sounds good.

Sorry for all the questions/suggestions around
hugetlb_optimize_vmemmap_enabled.  It just caused me a little confusion
as it is providing information on two conditions.  I wanted to prevent it
from causing confusion for others reading the code in the future.

This patch as written is fine with plans for a follow up to remove
hugetlb_optimize_vmemmap_enabled.

Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
-- 
Mike Kravetz

  reply	other threads:[~2022-05-11 17:53 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-09  6:26 [PATCH v10 0/4] add hugetlb_optimize_vmemmap sysctl Muchun Song
2022-05-09  6:27 ` [PATCH v10 1/4] mm: hugetlb_vmemmap: disable hugetlb_optimize_vmemmap when struct page crosses page boundaries Muchun Song
2022-05-12  7:35   ` David Hildenbrand
2022-05-09  6:27 ` [PATCH v10 2/4] mm: memory_hotplug: override memmap_on_memory when hugetlb_free_vmemmap=on Muchun Song
2022-05-12  7:36   ` David Hildenbrand
2022-05-12 12:50     ` Muchun Song
2022-05-12 13:04       ` David Hildenbrand
2022-05-12 13:59         ` Muchun Song
2022-05-12 16:38           ` David Hildenbrand
2022-05-09  6:27 ` [PATCH v10 3/4] mm: hugetlb_vmemmap: use kstrtobool for hugetlb_vmemmap param parsing Muchun Song
2022-05-12  7:41   ` David Hildenbrand
2022-05-12 11:23     ` Muchun Song
2022-05-09  6:27 ` [PATCH v10 4/4] mm: hugetlb_vmemmap: add hugetlb_optimize_vmemmap sysctl Muchun Song
2022-05-10 21:30   ` Mike Kravetz
2022-05-11  0:39     ` Mike Kravetz
2022-05-11  9:45       ` Muchun Song
2022-05-11 10:57         ` Muchun Song
2022-05-11 17:53           ` Mike Kravetz [this message]
2022-05-12  3:34             ` Muchun Song

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=c77c61c8-8a5a-87e8-db89-d04d8aaab4cc@oracle.com \
    --to=mike.kravetz@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=corbet@lwn.net \
    --cc=david@redhat.com \
    --cc=duanxiongchun@bytedance.com \
    --cc=keescook@chromium.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=masahiroy@kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=osalvador@suse.de \
    --cc=smuchun@gmail.com \
    --cc=songmuchun@bytedance.com \
    --cc=yzaikin@google.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.