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>