On Wed 17-02-21 11:08:15, Oscar Salvador wrote: > Free hugetlb pages are tricky to handle so as to no userspace application > notices disruption, we need to replace the current free hugepage with > a new one. > > In order to do that, a new function called alloc_and_dissolve_huge_page > is introduced. > This function will first try to get a new fresh hugetlb page, and if it > succeeds, it will dissolve the old one. > > With regard to the allocation, since we do not know whether the old page > was allocated on a specific node on request, the node the old page belongs > to will be tried first, and then we will fallback to all nodes containing > memory (N_MEMORY). I do not think fallback to a different zone is ok. If yes then this really requires a very good reasoning. alloc_contig_range is an optimistic allocation interface at best and it shouldn't break carefully node aware preallocation done by administrator. > Note that gigantic hugetlb pages are fenced off since there is a cyclic > dependency between them and alloc_contig_range. Why do we need/want to do all this in the first place? -- Michal Hocko SUSE Labs