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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/12/2018 04:24 PM, David Rientjes wrote:
> Both kernelcore= and movablecore= can be used to define the amount of
> ZONE_NORMAL and ZONE_MOVABLE on a system, respectively.  This requires
> the system memory capacity to be known when specifying the command line,
> however.
> 
> This introduces the ability to define both kernelcore= and movablecore=
> as a percentage of total system memory.  This is convenient for systems
> software that wants to define the amount of ZONE_MOVABLE, for example, as
> a proportion of a system's memory rather than a hardcoded byte value.
> 
> To define the percentage, the final character of the parameter should be
> a '%'.
> 
> Signed-off-by: David Rientjes <rientjes@xxxxxxxxxx>
> ---
>  Documentation/admin-guide/kernel-parameters.txt | 44 ++++++++++++-------------
>  mm/page_alloc.c                                 | 43 +++++++++++++++++++-----
>  2 files changed, 57 insertions(+), 30 deletions(-)
> 
> 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?

> +
> +			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='?

-- 
Mike Kravetz

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux