• Liam R. Howlett's avatar
    maple_tree: add benchmarking for mas_for_each · 361c678b
    Liam R. Howlett authored
    Patch series "Reduce preallocations for maple tree", v3.
    
    Initial work on preallocations showed no regression in performance during
    testing, but recently some users (both on [1] and off [android] list) have
    reported that preallocating the worst-case number of nodes has caused some
    slow down.  This patch set addresses the number of allocations in a few
    ways.
    
    During munmap() most munmap() operations will remove a single VMA, so
    leverage the fact that the maple tree can place a single pointer at range
    0 - 0 without allocating.  This is done by changing the index of the VMAs
    to be indexed by the count, starting at 0.
    
    Re-introduce the entry argument to mas_preallocate() so that a more
    intelligent guess of the node count can be made.
    
    Implement the more intelligent guess of the node count, although there is
    more work to be done.
    
    During development of v2 of this patch set, I also noticed that the number
    of nodes being allocated for a rebalance was beyond what could possibly be
    needed.  This is addressed in patch 0008.
    
    
    This patch (of 15):
    
    Add a way to test the speed of mas_for_each() to the testing code.
    
    Link: https://lkml.kernel.org/r/20230724183157.3939892-1-Liam.Howlett@oracle.com
    Link: https://lkml.kernel.org/r/20230724183157.3939892-2-Liam.Howlett@oracle.com
    
    Signed-off-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
    Cc: Peng Zhang <zhangpeng.00@bytedance.com>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    361c678b
test_maple_tree.c 98.7 KB