Re: [LSF/MM TOPIC] CMA and larger page sizes

Joonsoo Kim
2018-04-04T05:11:18Z

Hello, Laura.
Sorry for a late response.

On Fri, Jan 26, 2018 at 06:25:27PM +0100, Michal Hocko wrote:
> [Ccing Joonsoo]

Thanks! Michal.

>
> On Fri 26-01-18 02:08:14, Laura Abbott wrote:
> > CMA as it's currently designed requires alignment to the pageblock size c.f.
> >
> > /*
> > * Sanitise input arguments.
> > * Pages both ends in CMA area could be merged into adjacent unmovable
> > * migratetype page by page allocator's buddy algorithm. In the case,
> > * you couldn't get a contiguous memory, which is not what we want.
> > */
> > alignment = max(alignment, (phys_addr_t)PAGE_SIZE <<
> > max_t(unsigned long, MAX_ORDER - 1, pageblock_order));
> >
> >
> > On arm64 with 64K page size and transparent huge page, this gives an alignment
> > of 512MB. This is quite restrictive and can eat up significant portions of
> > memory on smaller memory targets. Adjusting the configuration options really
> > isn't ideal for distributions that aim to have a single image which runs on
> > all targets.
> >
> > Approaches I've thought about:
> > - Making CMA alignment less restrictive (and dealing with the fallout from
> > the comment above)
> > - Command line option to force a reasonable alignment

If the patchset 'manage the memory of the CMA area by using the ZONE_MOVABLE' is
merged, this restriction can be removed since there is no unmovable
pageblock in ZONE_MOVABLE. Just quick thought. :)

Thanks.