fc66f95c68
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> |
||
---|---|---|
.. | ||
netfilter | ||
af_decnet.c | ||
dn_dev.c | ||
dn_fib.c | ||
dn_neigh.c | ||
dn_nsp_in.c | ||
dn_nsp_out.c | ||
dn_route.c | ||
dn_rules.c | ||
dn_table.c | ||
dn_timer.c | ||
Kconfig | ||
Makefile | ||
README | ||
sysctl_net_decnet.c | ||
TODO |
Linux DECnet Project ====================== The documentation for this kernel subsystem is available in the Documentation/networking subdirectory of this distribution and also on line at http://www.chygwyn.com/DECnet/ Steve Whitehouse <SteveW@ACM.org>