2023-09-22 08:29:56

by Mike Rapoport

[permalink] [raw]
Subject: Re: [PATCH 1/4] mm: pass set_count and set_reserved to __init_single_page

On Fri, Sep 22, 2023 at 09:48:59AM +0200, David Hildenbrand wrote:
> On 22.09.23 09:47, Matthew Wilcox wrote:
> > On Fri, Sep 22, 2023 at 03:09:20PM +0800, Yajun Deng wrote:
> > > - __init_single_page(page, pfn, zone, nid);
> > > + __init_single_page(page, pfn, zone, nid, true, false);
> >
> > So Linus has just had a big rant about not doing bool flags to
> > functions. And in particular _multiple_ bool flags to functions.
> >
> > ie this should be:
> >
> > #define INIT_PAGE_COUNT (1 << 0)
> > #define INIT_PAGE_RESERVED (1 << 1)
> >
> > __init_single_page(page, pfn, zone, nid, INIT_PAGE_COUNT);
> >
> > or something similar.
> >
> > I have no judgement on the merits of this patch so far. Do you have
> > performance numbers for each of these patches? Some of them seem quite
> > unlikely to actually help, at least on a machine which is constrained
> > by cacheline fetches.
>
> The last patch contains
>
> before:
> node 0 deferred pages initialised in 78ms
>
> after:
> node 0 deferred pages initialised in 72ms
>
> Not earth-shattering :D Maybe with much bigger machines relevant?

Patch 3 contains

The following data was tested on an x86 machine with 190GB of RAM.

before:
free_low_memory_core_early() 342ms

after:
free_low_memory_core_early() 286ms

Which is more impressive, but still I'm not convinced that it's worth the
added complexity and potential subtle bugs.

> --
> Cheers,
>
> David / dhildenb
>

--
Sincerely yours,
Mike.


2023-09-25 06:22:47

by Yajun Deng

[permalink] [raw]
Subject: Re: [PATCH 1/4] mm: pass set_count and set_reserved to __init_single_page


On 2023/9/22 16:08, Mike Rapoport wrote:
> On Fri, Sep 22, 2023 at 09:48:59AM +0200, David Hildenbrand wrote:
>> On 22.09.23 09:47, Matthew Wilcox wrote:
>>> On Fri, Sep 22, 2023 at 03:09:20PM +0800, Yajun Deng wrote:
>>>> - __init_single_page(page, pfn, zone, nid);
>>>> + __init_single_page(page, pfn, zone, nid, true, false);
>>> So Linus has just had a big rant about not doing bool flags to
>>> functions. And in particular _multiple_ bool flags to functions.
>>>
>>> ie this should be:
>>>
>>> #define INIT_PAGE_COUNT (1 << 0)
>>> #define INIT_PAGE_RESERVED (1 << 1)
>>>
>>> __init_single_page(page, pfn, zone, nid, INIT_PAGE_COUNT);
>>>
>>> or something similar.
>>>
>>> I have no judgement on the merits of this patch so far. Do you have
>>> performance numbers for each of these patches? Some of them seem quite
>>> unlikely to actually help, at least on a machine which is constrained
>>> by cacheline fetches.
>> The last patch contains
>>
>> before:
>> node 0 deferred pages initialised in 78ms
>>
>> after:
>> node 0 deferred pages initialised in 72ms
>>
>> Not earth-shattering :D Maybe with much bigger machines relevant?
> Patch 3 contains
>
> The following data was tested on an x86 machine with 190GB of RAM.
>
> before:
> free_low_memory_core_early() 342ms
>
> after:
> free_low_memory_core_early() 286ms
>
> Which is more impressive, but still I'm not convinced that it's worth the
> added complexity and potential subtle bugs.
>
I will send v2.  It will be simpler and safer.
>> --
>> Cheers,
>>
>> David / dhildenb
>>