Re: [patch 1/2] mm, page_alloc: extend kernelcore and movablecore for percent
From: David Rientjes
Date: Tue Feb 13 2018 - 19:53:20 EST
On Tue, 13 Feb 2018, Mike Kravetz wrote:
> > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> > --- a/Documentation/admin-guide/kernel-parameters.txt
> > +++ b/Documentation/admin-guide/kernel-parameters.txt
> > @@ -1825,30 +1825,30 @@
> > keepinitrd [HW,ARM]
> >
> > kernelcore= [KNL,X86,IA-64,PPC]
> > - Format: nn[KMGTPE] | "mirror"
> > - This parameter
> > - specifies the amount of memory usable by the kernel
> > - for non-movable allocations. The requested amount is
> > - spread evenly throughout all nodes in the system. The
> > - remaining memory in each node is used for Movable
> > - pages. In the event, a node is too small to have both
> > - kernelcore and Movable pages, kernelcore pages will
> > - take priority and other nodes will have a larger number
> > - of Movable pages. The Movable zone is used for the
> > - allocation of pages that may be reclaimed or moved
> > - by the page migration subsystem. This means that
> > - HugeTLB pages may not be allocated from this zone.
> > - Note that allocations like PTEs-from-HighMem still
> > - use the HighMem zone if it exists, and the Normal
> > - zone if it does not.
> > -
> > - Instead of specifying the amount of memory (nn[KMGTPE]),
> > - you can specify "mirror" option. In case "mirror"
> > + Format: nn[KMGTPE] | nn% | "mirror"
> > + This parameter specifies the amount of memory usable by
> > + the kernel for non-movable allocations. The requested
> > + amount is spread evenly throughout all nodes in the
> > + system as ZONE_NORMAL. The remaining memory is used for
> > + movable memory in its own zone, ZONE_MOVABLE. In the
> > + event, a node is too small to have both ZONE_NORMAL and
> > + ZONE_MOVABLE, kernelcore memory will take priority and
> > + other nodes will have a larger ZONE_MOVABLE.
> > +
> > + ZONE_MOVABLE is used for the allocation of pages that
> > + may be reclaimed or moved by the page migration
> > + subsystem. This means that HugeTLB pages may not be
> > + allocated from this zone. Note that allocations like
> > + PTEs-from-HighMem still use the HighMem zone if it
> > + exists, and the Normal zone if it does not.
>
> I know you are just updating the documentation for the new ability to
> specify a percentage. However, while looking at this I noticed that
> the existing description is out of date. HugeTLB pages CAN be treated
> as movable and allocated from ZONE_MOVABLE.
>
> If you have to respin, could you drop that line while making this change?
>
Hi Mike,
It's merged in -mm, so perhaps no respin is necessary. I think a general
cleanup to this area regarding your work with hugetlb pages would be good.
> > +
> > + It is possible to specify the exact amount of memory in
> > + the form of "nn[KMGTPE]", a percentage of total system
> > + memory in the form of "nn%", or "mirror". If "mirror"
> > option is specified, mirrored (reliable) memory is used
> > for non-movable allocations and remaining memory is used
> > - for Movable pages. nn[KMGTPE] and "mirror" are exclusive,
> > - so you can NOT specify nn[KMGTPE] and "mirror" at the same
> > - time.
> > + for Movable pages. "nn[KMGTPE]", "nn%", and "mirror"
> > + are exclusive, so you cannot specify multiple forms.
> >
> > kgdbdbgp= [KGDB,HW] kgdb over EHCI usb debug port.
> > Format: <Controller#>[,poll interval]
>
> Don't you need to make the same type percentage changes for 'movablecore='?
>
The majority of the movablecore= documentation simply refers to the
kernelcore= option as its complement, I'm not sure that we need to go
in-depth into what the percentage specifiers mean for both options.