Web lists-archives.com

Re: [patch 1/2] mm, page_alloc: extend kernelcore and movablecore for percent




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.