From: David Hildenbrand <david@redhat.com>
To: Frank van der Linden <fvdl@google.com>
Cc: linux-mm@kvack.org, muchun.song@linux.dev,
akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
Roman Gushchin <roman.gushchin@linux.dev>
Subject: Re: [PATCH 2/2] mm/hugetlb: pass correct order_per_bit to cma_declare_contiguous_nid
Date: Mon, 8 Apr 2024 10:15:43 +0200 [thread overview]
Message-ID: <13833f69-0f32-4590-9188-a7fb04e31c45@redhat.com> (raw)
In-Reply-To: <CAPTztWbpDizLVk14jfxtS8mzQo3KvR+3KHiAiksxCXo=SQ4HrQ@mail.gmail.com>
On 04.04.24 23:44, Frank van der Linden wrote:
> On Thu, Apr 4, 2024 at 1:13 PM David Hildenbrand <david@redhat.com> wrote:
>>
>> On 04.04.24 18:25, Frank van der Linden wrote:
>>> The hugetlb_cma code passes 0 in the order_per_bit argument to
>>> cma_declare_contiguous_nid (the alignment, computed using the
>>> page order, is correctly passed in).
>>>
>>> This causes a bit in the cma allocation bitmap to always represent
>>> a 4k page, making the bitmaps potentially very large, and slower.
>>>
>>> So, correctly pass in the order instead.
>>>
>>> Signed-off-by: Frank van der Linden <fvdl@google.com>
>>> Cc: Roman Gushchin <roman.gushchin@linux.dev>
>>> Fixes: cf11e85fc08c ("mm: hugetlb: optionally allocate gigantic hugepages using cma")
>>
>> It might be subopimal, but do we call it a "BUG" that needs "fixing". I
>> know, controversial :)
>>
>>> ---
>>> mm/hugetlb.c | 6 +++---
>>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
>>> index 23ef240ba48a..6dc62d8b2a3a 100644
>>> --- a/mm/hugetlb.c
>>> +++ b/mm/hugetlb.c
>>> @@ -7873,9 +7873,9 @@ void __init hugetlb_cma_reserve(int order)
>>> * huge page demotion.
>>> */
>>> res = cma_declare_contiguous_nid(0, size, 0,
>>> - PAGE_SIZE << HUGETLB_PAGE_ORDER,
>>> - 0, false, name,
>>> - &hugetlb_cma[nid], nid);
>>> + PAGE_SIZE << HUGETLB_PAGE_ORDER,
>>> + HUGETLB_PAGE_ORDER, false, name,
>>> + &hugetlb_cma[nid], nid);
>>> if (res) {
>>> pr_warn("hugetlb_cma: reservation failed: err %d, node %d",
>>> res, nid);
>>
>> ... I'm afraid this is not completely correct.
>>
>> For example, on arm64, HUGETLB_PAGE_ORDER is essentially PMD_ORDER.
>>
>> ... but we do support smaller hugetlb sizes than that (cont-pte hugetlb
>> size is 64 KiB, not 2 MiB -- PMD -- on a 4k kernel)
>
> Right, smaller hugetlb page sizes exist. But, the value here is not
> intended to represent the minimum hugetlb page size - it's the minimum
> hugetlb page size that we can demote a CMA-allocated hugetlb page to.
> See:
>
> a01f43901cfb ("hugetlb: be sure to free demoted CMA pages to CMA")
>
> So, this just restricts demotion of the gigantic, CMA-allocated pages
> to HUGETLB_PAGE_ORDER-sized chunks.
Right, now my memory comes back. In v1 of that patch set, Mike did
support denoting to any smaller hugetlb order.
And because that smallest hugetlb order is not known when we call
cma_declare_contiguous_nid(), he used to pass "0" for the order.
In v2, he simplifed that, though, and limited it to HUGETLB_PAGE_ORDER.
He didn't update the order here, though.
Acked-by: David Hildenbrand <david@redhat.com>
Note that I don't think any of these patches are CC-stable material.
--
Cheers,
David / dhildenb
next prev parent reply other threads:[~2024-04-08 8:15 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-04 16:25 [PATCH 1/2] mm/cma: drop incorrect alignment check in cma_init_reserved_mem Frank van der Linden
2024-04-04 16:25 ` [PATCH 2/2] mm/hugetlb: pass correct order_per_bit to cma_declare_contiguous_nid Frank van der Linden
2024-04-04 18:56 ` Roman Gushchin
2024-04-04 19:40 ` Frank van der Linden
2024-04-04 20:45 ` Roman Gushchin
2024-04-04 20:13 ` David Hildenbrand
2024-04-04 20:52 ` Roman Gushchin
2024-04-04 22:02 ` Frank van der Linden
2024-04-04 22:20 ` Andrew Morton
2024-04-04 21:44 ` Frank van der Linden
2024-04-04 22:22 ` Frank van der Linden
2024-04-08 8:15 ` David Hildenbrand [this message]
2024-04-04 20:17 ` Andrew Morton
2024-04-04 21:58 ` Frank van der Linden
2024-04-07 8:02 ` Muchun Song
2024-04-04 20:15 ` [PATCH 1/2] mm/cma: drop incorrect alignment check in cma_init_reserved_mem Andrew Morton
2024-04-04 20:45 ` Frank van der Linden
[not found] ` <93eccef7-a559-4ad8-be0f-8cc99c00bd09@redhat.com>
2024-04-04 20:48 ` Frank van der Linden
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=13833f69-0f32-4590-9188-a7fb04e31c45@redhat.com \
--to=david@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=fvdl@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=muchun.song@linux.dev \
--cc=roman.gushchin@linux.dev \
/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