Skip to content
  • Martin KaFai Lau's avatar
    bpf: Inline LRU map lookup · cc555421
    Martin KaFai Lau authored
    
    
    Inline the lru map lookup to save the cost in making calls to
    bpf_map_lookup_elem() and htab_lru_map_lookup_elem().
    
    Different LRU hash size is tested.  The benefit diminishes when
    the cache miss starts to dominate in the bigger LRU hash.
    Considering the change is simple, it is still worth to optimize.
    
    First column: Size of the LRU hash
    Second column: Number of lookups/s
    
    Before:
    > for i in $(seq 9 20); do echo "$((2**i+1)): $(./map_perf_test 1024 1 $((2**i+1)) 10000000 | awk '{print $3}')"; done
    513: 1132020
    1025: 1056826
    2049: 1007024
    4097: 853298
    8193: 742723
    16385: 712600
    32769: 688142
    65537: 677028
    131073: 619437
    262145: 498770
    524289: 316695
    1048577: 260038
    
    After:
    > for i in $(seq 9 20); do echo "$((2**i+1)): $(./map_perf_test 1024 1 $((2**i+1)) 10000000 | awk '{print $3}')"; done
    513: 1221851
    1025: 1144695
    2049: 1049902
    4097: 884460
    8193: 773731
    16385: 729673
    32769: 721989
    65537: 715530
    131073: 671665
    262145: 516987
    524289: 321125
    1048577: 260048
    
    Signed-off-by: default avatarMartin KaFai Lau <kafai@fb.com>
    Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    cc555421