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

From: Yajun Deng
Date: Sun Sep 24 2023 - 23:25:41 EST



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