On Fri, Oct 04, 2019 at 07:33:53PM +0300, Konstantin Khlebnikov wrote: >On 04/10/2019 19.06, Wei Yang wrote: >> In function __anon_vma_prepare(), we will try to find anon_vma if it is >> possible to reuse it. While on fork, the logic is different. >> >> Since commit 5beb49305251 ("mm: change anon_vma linking to fix >> multi-process server scalability issue"), function anon_vma_clone() >> tries to allocate new anon_vma for child process. But the logic here >> will allocate a new anon_vma for each vma, even in parent this vma >> is mergeable and share the same anon_vma with its sibling. This may do >> better for scalability issue, while it is not necessary to do so >> especially after interval tree is used. >> >> Commit 7a3ef208e662 ("mm: prevent endless growth of anon_vma hierarchy") >> tries to reuse some anon_vma by counting child anon_vma and attached >> vmas. While for those mergeable anon_vmas, we can just reuse it and not >> necessary to go through the logic. >> >> After this change, kernel build test reduces 20% anon_vma allocation. >> > >Makes sense. This might have much bigger effect for scenarios when task >unmaps holes in huge vma as red-zones between allocations and then forks. > >Acked-by: Konstantin Khlebnikov <khlebnikov@xxxxxxxxxxxxxx> > Thanks -- Wei Yang Help you, Help me