Re: [PATCH mm-unstable v1] mm: add a total mapcount for large folios

From: David Hildenbrand
Date: Thu Aug 10 2023 - 18:28:07 EST


On 10.08.23 23:48, Matthew Wilcox wrote:
On Thu, Aug 10, 2023 at 04:57:11PM -0400, Peter Xu wrote:
AFAICS if that patch was all correct (while I'm not yet sure..), you can
actually fit your new total mapcount field into page 1 so even avoid the
extra cacheline access. You can have a look: the trick is refcount for
tail page 1 is still seems to be free on 32 bits (if that was your worry
before). Then it'll be very nice if to keep Hugh's counter all in tail 1.

No, refcount must be 0 on all tail pages. We rely on this in many places
in the MM.

Very right.

One could theoretically

1) Move the compound/entire mapcount to page[2]
2) Make hugetlb stop using the entire mapcount and only the total
mapcount.
3) Then leave total_mapcount and nr_pages_mapped in page[1]
4) Make page_mapcount() use total_mapcount for hugetlb.

When (un)mapping a PMD-mapped THP, we would go to page[2]. Otherwise, only page[1].

The entire mapcount, similarly to nr_pages_mapped, primarily serves to get memory stats right; well, and to implement page_mapcount() for THP.

But I'm not 100% sure yet if the overhead from having nr_pages_mapped in page[2] is significant enough at this point.

--
Cheers,

David / dhildenb