Eric Dumazet fc66f95c68 net dst: use a percpu_counter to track entries
struct dst_ops tracks number of allocated dst in an atomic_t field,
subject to high cache line contention in stress workload.

Switch to a percpu_counter, to reduce number of time we need to dirty a
central location. Place it on a separate cache line to avoid dirtying
read only fields.

Stress test :

(Sending 160.000.000 UDP frames,
IP route cache disabled, dual E5540 @2.53GHz,
32bit kernel, FIB_TRIE, SLUB/NUMA)

Before:

real    0m51.179s
user    0m15.329s
sys     10m15.942s

After:

real	0m45.570s
user	0m15.525s
sys	9m56.669s

With a small reordering of struct neighbour fields, subject of a
following patch, (to separate refcnt from other read mostly fields)

real	0m41.841s
user	0m15.261s
sys	8m45.949s

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-10-11 13:06:53 -07:00
..
2010-09-23 14:33:39 -07:00
2010-09-15 22:06:05 -07:00
2010-02-22 16:20:22 -08:00
2010-10-05 20:39:38 -07:00
2010-10-05 20:39:38 -07:00
2010-10-03 21:50:51 -07:00
2010-08-19 00:08:30 -07:00
2010-09-23 14:33:39 -07:00
2010-09-23 14:33:39 -07:00
2010-06-28 23:24:29 -07:00
2010-02-22 16:20:22 -08:00
2010-10-03 21:50:53 -07:00
2010-06-30 13:31:19 -07:00
2010-08-19 00:08:30 -07:00
2010-06-26 22:00:03 -07:00
2009-03-02 03:00:15 -08:00
2009-03-02 03:00:15 -08:00
2010-09-23 14:33:39 -07:00
2010-09-23 14:33:39 -07:00
2009-05-25 22:44:59 -07:00
2010-09-23 14:33:39 -07:00
2010-07-12 12:57:54 -07:00
2010-07-12 12:57:54 -07:00