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