Messages in this thread | | | From | Muchun Song <> | Date | Sat, 17 Apr 2021 10:55:05 +0800 | Subject | Re: [External] Re: [PATCH v20 4/9] mm: hugetlb: free the vmemmap pages associated with each HugeTLB page |
| |
On Sat, Apr 17, 2021 at 5:10 AM Mike Kravetz <mike.kravetz@oracle.com> wrote: > > On 4/15/21 1:40 AM, Muchun Song wrote: > > Every HugeTLB has more than one struct page structure. We __know__ that > > we only use the first 4 (__NR_USED_SUBPAGE) struct page structures > > to store metadata associated with each HugeTLB. > > > > There are a lot of struct page structures associated with each HugeTLB > > page. For tail pages, the value of compound_head is the same. So we can > > reuse first page of tail page structures. We map the virtual addresses > > of the remaining pages of tail page structures to the first tail page > > struct, and then free these page frames. Therefore, we need to reserve > > two pages as vmemmap areas. > > > > When we allocate a HugeTLB page from the buddy, we can free some vmemmap > > pages associated with each HugeTLB page. It is more appropriate to do it > > in the prep_new_huge_page(). > > > > The free_vmemmap_pages_per_hpage(), which indicates how many vmemmap > > pages associated with a HugeTLB page can be freed, returns zero for > > now, which means the feature is disabled. We will enable it once all > > the infrastructure is there. > > > > Signed-off-by: Muchun Song <songmuchun@bytedance.com> > > Reviewed-by: Oscar Salvador <osalvador@suse.de> > > Tested-by: Chen Huang <chenhuang5@huawei.com> > > Tested-by: Bodeddula Balasubramaniam <bodeddub@amazon.com> > > Acked-by: Michal Hocko <mhocko@suse.com> > > There may need to be some trivial rebasing due to Oscar's changes > when they go in.
Yeah, thanks for your reminder.
> > Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com> > -- > Mike Kravetz
| |