• Uladzislau Rezki (Sony)'s avatar
    mm/vmalloc: do not keep unpurged areas in the busy tree · dd3b8353
    Uladzislau Rezki (Sony) authored
    The busy tree can be quite big, even though the area is freed or unmapped
    it still stays there until "purge" logic removes it.
    
    1) Optimize and reduce the size of "busy" tree by removing a node from
       it right away as soon as user triggers free paths.  It is possible to
       do so, because the allocation is done using another augmented tree.
    
    The vmalloc test driver shows the difference, for example the
    "fix_size_alloc_test" is ~11% better comparing with default configuration:
    
    sudo ./test_vmalloc.sh performance
    
    <default>
    Summary: fix_size_alloc_test loops: 1000000 avg: 993985 usec
    Summary: full_fit_alloc_test loops: 1000000 avg: 973554 usec
    Summary: long_busy_list_alloc_test loops: 1000000 avg: 12617652 usec
    <default>
    
    <this patch>
    Summary: fix_size_alloc_test loops: 1000000 avg: 882263 usec
    Summary: full_fit_alloc_test loops: 1000000 avg: 973407 usec
    Summary: long_busy_list_alloc_test loops: 1000000 avg: 12593929 usec
    <this patch>
    
    2) Since the busy tree now contains allocated areas only and does not
       interfere with lazily free nodes, introduce the new function
       show_purge_info() that dumps "unpurged" areas that is propagated
       through "/proc/vmallocinfo".
    
    3) Eliminate VM_LAZY_FREE flag.
    
    Link: http://lkml.kernel.org/r/20190716152656.12255-2-lpf.vector@gmail.comSigned-off-by: default avatarUladzislau Rezki (Sony) <urezki@gmail.com>
    Signed-off-by: default avatarPengfei Li <lpf.vector@gmail.com>
    Cc: Roman Gushchin <guro@fb.com>
    Cc: Uladzislau Rezki <urezki@gmail.com>
    Cc: Hillf Danton <hdanton@sina.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    dd3b8353
vmalloc.c 89.6 KB