• Chris Wilson's avatar
    mm/vmalloc: keep a separate lazy-free list · 80c4bd7a
    Chris Wilson authored
    When mixing lots of vmallocs and set_memory_*() (which calls
    vm_unmap_aliases()) I encountered situations where the performance
    degraded severely due to the walking of the entire vmap_area list each
    invocation.
    
    One simple improvement is to add the lazily freed vmap_area to a
    separate lockless free list, such that we then avoid having to walk the
    full list on each purge.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarRoman Pen <r.peniaev@gmail.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Roman Pen <r.peniaev@gmail.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: Shawn Lin <shawn.lin@rock-chips.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    80c4bd7a
vmalloc.c 68 KB