[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <200910252355.32640.opurdila@ixiacom.com>
Date: Sun, 25 Oct 2009 23:55:32 +0200
From: Octavian Purdila <opurdila@...acom.com>
To: Eric Dumazet <eric.dumazet@...il.com>
Cc: netdev@...r.kernel.org
Subject: Re: [PATCH next-next-2.6] netdev: better dev_name_hash
On Sunday 25 October 2009 23:24:10 you wrote:
> Octavian Purdila a écrit :
> > The current dev_name_hash is not very good at spreading entries when a
> > large number of interfaces of the same type (e.g. ethXXXXX) are used.
>
> Very true
>
> > Here are some performance numbers for creating 16000 dummy interfaces
> > with and without the patch (with per device sysctl entries disabled)
> >
> > With patch Without patch
> >
> > real 0m 2.27s real 0m 4.32s
> > user 0m 0.00s user 0m 0.00s
> > sys 0m 1.13s sys 0m 2.16s
>
> 1) A program to show hash distribution would be more convincing,
> and could show that 17 multiplier is better, not 31 :)
>
You beat me to it :)
But anyways, I've attached mine as well , which compares orig, jhash, new17,
new31, with different number of interfaces as well as different hash bits.
The score it shows its the number of iterations needed to find all elements in
the hash (good enough metric?)
My results shows that new17 is better or very close to jhash2. And I think its
lighter then jhash too.
> 2) Why full_name_hash() not changed as well ?
I don't think it is going to be as easy to "benchmark" this, as it is used
with more diverse inputs.
AFAIK, full_name_hash is used by the dentry code, meaning that it cashes path
names? If so, perhaps we can use find {/etc,/bin,/sbin,/usr} as input patterns?
My results:
$ ./dev_name_hash ixint 255 0 8
score 1140
$ ./dev_name_hash ixint 255 1 8
score 379
$ ./dev_name_hash ixint 255 2 8
score 461
$ ./dev_name_hash ixint 255 3 8
score 329
$ ./dev_name_hash ixint 1000 0 8
score 26074
$ ./dev_name_hash ixint 1000 1 8
score 2887
$ ./dev_name_hash ixint 1000 2 8
score 2853
$ ./dev_name_hash ixint 1000 3 8
score 3713
$ ./dev_name_hash ixint 16000 0 8
score 3689828
$ ./dev_name_hash ixint 16000 1 8
score 516389
$ ./dev_name_hash ixint 16000 2 8
score 515292
$ ./dev_name_hash ixint 16000 3 8
score 554042
$ ./dev_name_hash ixint 16000 0 16
score 24741
$ ./dev_name_hash ixint 16000 1 16
score 17949
$ ./dev_name_hash ixint 16000 2 16
score 16715
$ ./dev_name_hash ixint 16000 3 16
score 18125
View attachment "dev_name_hash.c" of type "text/x-csrc" (4995 bytes)
Powered by blists - more mailing lists