linux/net/bridge
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
..
netfilter bridge: use rx_handler_data pointer to store net_bridge_port pointer 2010-06-15 11:48:58 -07:00
br_device.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-08-02 22:22:46 -07:00
br_fdb.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-08-02 22:22:46 -07:00
br_forward.c bridge: Partially disable netpoll support 2010-07-19 23:28:25 -07:00
br_if.c bridge: avoid ethtool on non running interface 2010-08-25 16:36:51 -07:00
br_input.c bridge: is PACKET_LOOPBACK unlikely()? 2010-08-22 21:09:04 -07:00
br_ioctl.c bridge: change console message interface 2010-05-15 23:10:02 -07:00
br_multicast.c bridge: Allow multicast snooping to be disabled before ifup 2010-07-30 23:38:58 -07:00
br_netfilter.c net dst: use a percpu_counter to track entries 2010-10-11 13:06:53 -07:00
br_netlink.c bridge: use rx_handler_data pointer to store net_bridge_port pointer 2010-06-15 11:48:58 -07:00
br_notify.c bridge: use rx_handler_data pointer to store net_bridge_port pointer 2010-06-15 11:48:58 -07:00
br_private_stp.h net: remove CVS keywords 2008-06-11 21:00:38 -07:00
br_private.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 2010-07-02 22:42:06 -07:00
br_stp_bpdu.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-08-02 22:22:46 -07:00
br_stp_if.c bridge: change console message interface 2010-05-15 23:10:02 -07:00
br_stp_timer.c bridge: change console message interface 2010-05-15 23:10:02 -07:00
br_stp.c bridge: change console message interface 2010-05-15 23:10:02 -07:00
br_sysfs_br.c bridge: add per bridge device controls for invoking iptables 2010-07-02 09:32:57 +02:00
br_sysfs_if.c bridge: update sysfs link names if port device names have changed 2010-05-15 23:10:15 -07:00
br.c net: replace hooks in __netif_receive_skb V5 2010-06-02 07:11:15 -07:00
Kconfig bridge br_multicast: IPv6 MLD support. 2010-04-23 13:35:56 +09:00
Makefile bridge: Add core IGMP snooping support 2010-02-28 00:48:45 -08:00