Re: [RFC 2/3] mm: changes to split_huge_page() to free zero filled tail pages

From: David Hildenbrand
Date: Fri Aug 26 2022 - 06:19:08 EST


On 25.08.22 23:30, alexlzhu@xxxxxx wrote:
> From: Alexander Zhu <alexlzhu@xxxxxx>
>
> Currently, when /sys/kernel/mm/transparent_hugepage/enabled=always is set
> there are a large number of transparent hugepages that are almost entirely
> zero filled. This is mentioned in a number of previous patchsets
> including:
> https://lore.kernel.org/all/20210731063938.1391602-1-yuzhao@xxxxxxxxxx/
> https://lore.kernel.org/all/
> 1635422215-99394-1-git-send-email-ningzhang@xxxxxxxxxxxxxxxxx/
>
> Currently, split_huge_page() does not have a way to identify zero filled
> pages within the THP. Thus these zero pages get remapped and continue to
> create memory waste. In this patch, we identify and free tail pages that
> are zero filled in split_huge_page(). In this way, we avoid mapping these
> pages back into page table entries and can free up unused memory within
> THPs. This is based off the previously mentioned patchset by Yu Zhao.
> However, we chose to free zero tail pages whenever they are encountered
> instead of only on reclaim or migration. We also add a self test to verify
> the RssAnon value to make sure zero pages are not remapped.
>

Isn't this to some degree splitting the THP (PMDs->PTEs + dissolve
compound page) and then letting KSM replace the zero-filled page by the
shared zeropage?

--
Thanks,

David / dhildenb