Subject: Re: Extensible hashing and RCU

From: Eric Dumazet <[email-masked]>
Date: Tue, 20 Feb 2007 12:10:22 +0100

On Tuesday 20 February 2007 11:30, Evgeniy Polyakov wrote:
> On Tue, Feb 20, 2007 at 02:12:09AM -0800, David Miller ([email-masked]) 
wrote:
> > From: Eric Dumazet <[email-masked]>
> > Date: Tue, 20 Feb 2007 11:04:15 +0100
> >
> > > Using a jenkin's hash permits a better hash distribution for a litle
> > > cpu cost.  I will post later a distribution simulation based on the
> > > data gathered from the same real server.
> >
> > Actually someone (I think it was Evgeniy in fact) made such
> > comparisons and found in his studies that not only does the current
> > ehash xor hash function distribute about as well as jenkins, it's
> > significantly cheaper to calculate :-)
>
> Yep, it happend to be my tests :)
> Jenkins hash was slower and had significant artifacts for some usage
> cases ended up with extremely long chain length.
> One can find more details at
> http://tservice.net.ru/~s0mbre/blog/2006/05/14#2006_05_14
> http://tservice.net.ru/~s0mbre/blog/2006/06/01#2006_06_01

Please explain why you chose    h = jhash_2words(faddr, laddr, ports);
        h ^= h >> 16;
        h ^= h >> 8;

jhash is very good, no need to try to be smarter, shufling some bytes... and 
adding artifacts.