Re: [RFC v1 00/19] Modify zonelist to nodelist v1

From: Michal Hocko
Date: Wed Nov 27 2019 - 03:50:14 EST


On Tue 26-11-19 14:04:06, Qian Cai wrote:
>
>
> > On Nov 26, 2019, at 10:41 AM, Michal Hocko <mhocko@xxxxxxxxxx> wrote:
> >
> > On Tue 26-11-19 10:30:56, Qian Cai wrote:
> >>
> >>
> >>> On Nov 25, 2019, at 3:39 AM, Michal Hocko <mhocko@xxxxxxxxxx> wrote:
> >>>
> >>> People do care about ZONE_MOVABLE and if there is a non-movable memory
> >>> sitting there then it is a bug. Please report that.
> >>
> >> It is trivial to test yourself if you ever care. Just pass kernelcore=
> >> to as many NUMA machines you could find, an then test if ever possible
> >> to offline those memory.
> >
> > I definitely do care if you can provide more details (ideally in a
> > separate email thread). I am using movable memory for memory hotplug
> > usecases and so far I do not remember any kernel/non-movable allocations
> > would make it in - modulo bugs when somebody might use __GFP_MOVABLE
> > when it is not appropriate.
> >
>
> I donât think it is anything to do with __GFP_MOVABLE. It is about booting a kernel
> with either passing kernelcore= or movablecore=. Then, those ZONE_MOVABLE will
> have non-movable pages which looks like those from vmemmap_populate().

OK, I see. This looks like a bug in kernelcore/movablecore. And honestly
I wouldn't be surprised because these are hacks that should have been
removed. I have even attempted to do that because their main usecase is
mostly gone. There were some objections though...

> How do you create ZONE_MOVALBLE in this first place?

The most common usecase I work with is to use movable_node parameter
which makes whole nodes marked as hotplugable to be moved to
ZONE_MOVABLE.

--
Michal Hocko
SUSE Labs