• Tejun Heo's avatar
    idr: implement lookup hint · 0ffc2a9c
    Tejun Heo authored
    While idr lookup isn't a particularly heavy operation, it still is too
    substantial to use in hot paths without worrying about the performance
    implications.  With recent changes, each idr_layer covers 256 slots
    which should be enough to cover most use cases with single idr_layer
    making lookup hint very attractive.
    
    This patch adds idr->hint which points to the idr_layer which
    allocated an ID most recently and the fast path lookup becomes
    
    	if (look up target's prefix matches that of the hinted layer)
    		return hint->ary[ID's offset in the leaf layer];
    
    which can be inlined.
    
    idr->hint is set to the leaf node on idr_fill_slot() and cleared from
    free_layer().
    
    [andriy.shevchenko@linux.intel.com: always do slow path when hint is uninitialized]
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0ffc2a9c
idr.c 28.6 KB