Re: [PATCH] mm, meminit: Serially initialise deferred memory if trace_buf_size is specified

From: Pavel Tatashin
Date: Wed Nov 29 2017 - 22:49:53 EST


>> Hi Mel,
>>
>> The forth approach is the best as it is seamless for admins and
>> engineers, it will also work on any system configuration with any
>> parameters without any special involvement.
>
> Apart from what-mel-said, I'd be concerned that this failsafe would
> almost never get tested. We should find some way to ensure that this
> code gets exercised in some people's kernels on a permanent basis and
> I'm not sure how to do that.
>
> One option might be to ask Fengguang to add the occasional
> test_pavels_stuff=1 to the kernel boot commandline. That's better
> than nothing but 0-day only runs on a small number of machine types.
>

Hi Andrew,

Excellent point about testing. I think, that if I implement it the way
I proposed in the previous e-mail:

1. initialize very few struct pages initially
2. initialize more as kernel needs them in every node
3. finally initialize all the rest when other cpus are started

We will have coverage for my code every time machine boots (and
deferred page init feature configured), as the the initial very few
struct pages is not going to be enough on any machine. Potentially, we
will also see some small boot time improvement because we will
initialize serially only as many pages as needed, and not do upper
bound guessing about how many pages is needed beforehand.

Thank you,
Pavel