linux/drivers/net/bonding
Jussi Maki 848ca9182a net: bonding: Use per-cpu rr_tx_counter
The round-robin rr_tx_counter was shared across CPUs leading to
significant cache thrashing at high packet rates. This patch switches
the round-robin packet counter to use a per-cpu variable to decide
the destination slave.

On a test with 2x100Gbit ICE nic with pktgen_sample_04_many_flows.sh
(-s 64 -t 32) the tx rate was 19.6Mpps before and 22.3Mpps after
this patch.

"perf top -e cache_misses" before:
    12.31%  [bonding]       [k] bond_xmit_roundrobin_slave_get
    10.59%  [sch_fq_codel]  [k] fq_codel_dequeue
     9.34%  [kernel]        [k] skb_release_data
after:
    15.42%  [sch_fq_codel]  [k] fq_codel_dequeue
    10.06%  [kernel]        [k] __memset
     9.12%  [kernel]        [k] skb_release_data

Signed-off-by: Jussi Maki <joamaki@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-06-15 11:26:15 -07:00
..
bond_3ad.c bonding: 3ad: Print an error for unknown speeds 2021-02-11 14:28:21 -08:00
bond_alb.c net: bonding: bond_alb: Fix some typos in bond_alb.c 2021-05-21 13:30:41 -07:00
bond_debugfs.c net: bonding: remove unnecessary braces 2021-05-20 15:43:24 -07:00
bond_main.c net: bonding: Use per-cpu rr_tx_counter 2021-06-15 11:26:15 -07:00
bond_netlink.c net: bonding: use tabs instead of space for code indent 2021-05-20 15:43:24 -07:00
bond_options.c bonding: remove redundant initialization of variable ret 2021-06-03 15:25:29 -07:00
bond_procfs.c net: bonding: add some required blank lines 2021-05-20 15:43:24 -07:00
bond_sysfs.c net: bonding: add some required blank lines 2021-05-20 15:43:24 -07:00
bond_sysfs_slave.c bonding: wait for sysfs kobject destruction before freeing struct slave 2020-11-21 13:07:00 -08:00
bonding_priv.h drivers: Remove inclusion of vermagic header 2020-04-21 13:27:37 -07:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00