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

Laura Abbott
2018-04-11T19:55:07Z

On 04/03/2018 10:11 PM, Joonsoo Kim wrote:
> 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.
>

Thanks for that pointer. What's the current status of that patchset? Was that
one that needed more review/testing?

Thanks,
Laura