• Roland Dreier's avatar
    mlx4_core: Keep free count for MTT buddy allocator · e4044cfc
    Roland Dreier authored
    MTT entries are allocated with a buddy allocator, which just keeps
    bitmaps for each level of the buddy table.  However, all free space
    starts out at the highest order, and small allocations start scanning
    from the lowest order.  When the lowest order tables have no free
    space, this can lead to scanning potentially millions of bits before
    finding a free entry at a higher order.
    
    We can avoid this by just keeping a count of how many free entries
    each order has, and skipping the bitmap scan when an order is
    completely empty.  This provides a nice performance boost for a
    negligible increase in memory usage.
    Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
    e4044cfc
mr.c 15 KB