Re: [PATCH bpf-next] bpf: optimize hashmap lookups when key_size is divisible by 4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Apr 01, 2023 at 12:35:55PM -0700, Alexei Starovoitov wrote:
> On Sat, Apr 1, 2023 at 12:24 PM Anton Protopopov <aspsk@xxxxxxxxxxxxx> wrote:
> > > > -static inline u32 htab_map_hash(const void *key, u32 key_len, u32 hashrnd)
> > > > +static inline u32 htab_map_hash(const struct bpf_htab *htab, const void *key, u32 key_len)
> > > >  {
> > > > -   return jhash(key, key_len, hashrnd);
> > > > +   if (likely(htab->key_size_u32))
> > > > +           return jhash2(key, htab->key_size_u32, htab->hashrnd);
> > > > +   return jhash(key, key_len, htab->hashrnd);
> > >
> > > Could you measure the speed when &3 and /4 is done in the hot path ?
> > > I would expect the performance to be the same or faster,
> > > since extra load is gone.
> >
> > I don't see any visible difference (I've tested "&3 and /4" and "%4==0 and /4"
> > variants).
> 
> I bet compiler generates the same code for these two variants.
> % is optimized into &.
> / is optimized into >>.

Yes, it does "test $0x3,%dl"

> > Do you still prefer division in favor of using htab->key_size_u32?
> 
> yes, because it's a shift.

ok, thanks, I will send v2 with division



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux