[PATCH][v2] mm/hugetlb: early exit from hugetlb_pages_alloc_boot() when max_huge_pages=0

lirongqing posted 1 patch 1 month, 3 weeks ago
mm/hugetlb.c | 3 +++
1 file changed, 3 insertions(+)
[PATCH][v2] mm/hugetlb: early exit from hugetlb_pages_alloc_boot() when max_huge_pages=0
Posted by lirongqing 1 month, 3 weeks ago
From: Li RongQing <lirongqing@baidu.com>

Optimize hugetlb_pages_alloc_boot() to return immediately when
max_huge_pages is 0, avoiding unnecessary CPU cycles and the below
log message when hugepages aren't configured in the kernel command
line.
[    3.702280] HugeTLB: allocation took 0ms with hugepage_allocation_threads=32

Signed-off-by: Li RongQing <lirongqing@baidu.com>
---
diff with v1: adding the reduced log messages in commit header 

 mm/hugetlb.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 753f99b..514fab5 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -3654,6 +3654,9 @@ static void __init hugetlb_hstate_alloc_pages(struct hstate *h)
 		return;
 	}
 
+	if (!h->max_huge_pages)
+		return;
+
 	/* do node specific alloc */
 	if (hugetlb_hstate_alloc_pages_specific_nodes(h))
 		return;
-- 
2.9.4
Re: [PATCH][v2] mm/hugetlb: early exit from hugetlb_pages_alloc_boot() when max_huge_pages=0
Posted by jane.chu@oracle.com 1 month, 2 weeks ago
On 8/14/2025 3:23 AM, lirongqing wrote:
> From: Li RongQing <lirongqing@baidu.com>
> 
> Optimize hugetlb_pages_alloc_boot() to return immediately when
> max_huge_pages is 0, avoiding unnecessary CPU cycles and the below
> log message when hugepages aren't configured in the kernel command
> line.
> [    3.702280] HugeTLB: allocation took 0ms with hugepage_allocation_threads=32
> 
> Signed-off-by: Li RongQing <lirongqing@baidu.com>
> ---
> diff with v1: adding the reduced log messages in commit header
> 
>   mm/hugetlb.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index 753f99b..514fab5 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -3654,6 +3654,9 @@ static void __init hugetlb_hstate_alloc_pages(struct hstate *h)
>   		return;
>   	}
>   
> +	if (!h->max_huge_pages)
> +		return;
> +
>   	/* do node specific alloc */
>   	if (hugetlb_hstate_alloc_pages_specific_nodes(h))
>   		return;

Looks good.  Could you add stable: ?
Reviewed-by: Jane Chu <jane.chu@oracle.com>

thanks!
-jane
Re: [PATCH][v2] mm/hugetlb: early exit from hugetlb_pages_alloc_boot() when max_huge_pages=0
Posted by Andrew Morton 1 month, 2 weeks ago
On Sun, 17 Aug 2025 19:21:54 -0700 jane.chu@oracle.com wrote:

> 
> On 8/14/2025 3:23 AM, lirongqing wrote:
> > From: Li RongQing <lirongqing@baidu.com>
> > 
> > Optimize hugetlb_pages_alloc_boot() to return immediately when
> > max_huge_pages is 0, avoiding unnecessary CPU cycles and the below
> > log message when hugepages aren't configured in the kernel command
> > line.
> > [    3.702280] HugeTLB: allocation took 0ms with hugepage_allocation_threads=32
> > 
> > Signed-off-by: Li RongQing <lirongqing@baidu.com>
> > ---
> > diff with v1: adding the reduced log messages in commit header
> > 
> >   mm/hugetlb.c | 3 +++
> >   1 file changed, 3 insertions(+)
> > 
> > diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> > index 753f99b..514fab5 100644
> > --- a/mm/hugetlb.c
> > +++ b/mm/hugetlb.c
> > @@ -3654,6 +3654,9 @@ static void __init hugetlb_hstate_alloc_pages(struct hstate *h)
> >   		return;
> >   	}
> >   
> > +	if (!h->max_huge_pages)
> > +		return;
> > +
> >   	/* do node specific alloc */
> >   	if (hugetlb_hstate_alloc_pages_specific_nodes(h))
> >   		return;
> 
> Looks good.  Could you add stable: ?

Sure, I did that.

A Fixes: would be nice, to tell the -stable maintainers how far back in
time we need this, but the target sommit isn't obvious.
Re: [PATCH][v2] mm/hugetlb: early exit from hugetlb_pages_alloc_boot() when max_huge_pages=0
Posted by David Hildenbrand 1 month, 2 weeks ago
On 18.08.25 04:59, Andrew Morton wrote:
> On Sun, 17 Aug 2025 19:21:54 -0700 jane.chu@oracle.com wrote:
> 
>>
>> On 8/14/2025 3:23 AM, lirongqing wrote:
>>> From: Li RongQing <lirongqing@baidu.com>
>>>
>>> Optimize hugetlb_pages_alloc_boot() to return immediately when
>>> max_huge_pages is 0, avoiding unnecessary CPU cycles and the below
>>> log message when hugepages aren't configured in the kernel command
>>> line.
>>> [    3.702280] HugeTLB: allocation took 0ms with hugepage_allocation_threads=32
>>>
>>> Signed-off-by: Li RongQing <lirongqing@baidu.com>
>>> ---
>>> diff with v1: adding the reduced log messages in commit header
>>>
>>>    mm/hugetlb.c | 3 +++
>>>    1 file changed, 3 insertions(+)
>>>
>>> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
>>> index 753f99b..514fab5 100644
>>> --- a/mm/hugetlb.c
>>> +++ b/mm/hugetlb.c
>>> @@ -3654,6 +3654,9 @@ static void __init hugetlb_hstate_alloc_pages(struct hstate *h)
>>>    		return;
>>>    	}
>>>    
>>> +	if (!h->max_huge_pages)
>>> +		return;
>>> +
>>>    	/* do node specific alloc */
>>>    	if (hugetlb_hstate_alloc_pages_specific_nodes(h))
>>>    		return;
>>
>> Looks good.  Could you add stable: ?

Can you elaborate why you think this is stable material?

> 
> Sure, I did that.

I don't think this is stable material, but for the change itself

Acked-by: David Hildenbrand <david@redhat.com>

-- 
Cheers

David / dhildenb
Re: [PATCH][v2] mm/hugetlb: early exit from hugetlb_pages_alloc_boot() when max_huge_pages=0
Posted by Andrew Morton 1 month, 2 weeks ago
On Mon, 18 Aug 2025 09:46:59 +0200 David Hildenbrand <david@redhat.com> wrote:

> >>>    	if (hugetlb_hstate_alloc_pages_specific_nodes(h))
> >>>    		return;
> >>
> >> Looks good.  Could you add stable: ?
> 
> Can you elaborate why you think this is stable material?
> 

To prevent the

> [    3.702280] HugeTLB: allocation took 0ms with hugepage_allocation_threads=32

message when hugetlb pages are disabled.

Yeah, I guess it isn't very important.  I'll destabilize the patch.
Re: [PATCH][v2] mm/hugetlb: early exit from hugetlb_pages_alloc_boot() when max_huge_pages=0
Posted by Dev Jain 1 month, 2 weeks ago
On 14/08/25 3:53 pm, lirongqing wrote:
> From: Li RongQing <lirongqing@baidu.com>
>
> Optimize hugetlb_pages_alloc_boot() to return immediately when
> max_huge_pages is 0, avoiding unnecessary CPU cycles and the below
> log message when hugepages aren't configured in the kernel command
> line.
> [    3.702280] HugeTLB: allocation took 0ms with hugepage_allocation_threads=32
>
> Signed-off-by: Li RongQing <lirongqing@baidu.com>
> ---
> diff with v1: adding the reduced log messages in commit header
>
>   mm/hugetlb.c | 3 +++
>   1 file changed, 3 insertions(+)
>
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index 753f99b..514fab5 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -3654,6 +3654,9 @@ static void __init hugetlb_hstate_alloc_pages(struct hstate *h)
>   		return;
>   	}
>   
> +	if (!h->max_huge_pages)
> +		return;
> +
>   	/* do node specific alloc */
>   	if (hugetlb_hstate_alloc_pages_specific_nodes(h))
>   		return;

Useful change!

Reviewed-by: Dev Jain <dev.jain@arm.com>
Tested-by: Dev Jain <dev.jain@arm.com>