From mboxrd@z Thu Jan 1 00:00:00 1970 From: Davide Caratti Subject: [PATCH net-next v2 0/2] net/sched: remove spinlock from 'csum' action Date: Fri, 19 Jan 2018 15:12:49 +0100 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=y Content-Transfer-Encoding: 8bit Cc: netdev@vger.kernel.org, Cong Wang , Jiri Pirko To: "David S. Miller" Return-path: Received: from mx1.redhat.com ([209.132.183.28]:47934 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753332AbeASONG (ORCPT ); Fri, 19 Jan 2018 09:13:06 -0500 Sender: netdev-owner@vger.kernel.org List-ID: Similarly to what has been done earlier with other actions [1][2], this series tries to improve the performance of 'csum' tc action, removing a spinlock in the data path. Patch 1 lets act_csum use per-CPU counters; patch 2 removes spin_{,un}lock_bh() calls from the act() method. test procedure (using pktgen from https://github.com/netoptimizer): # ip link add name eth1 type dummy # ip link set dev eth1 up # tc qdisc add dev eth1 root handle 1: prio # for a in pass drop ; do > tc filter del dev eth1 parent 1: pref 10 matchall action csum udp > tc filter add dev eth1 parent 1: pref 10 matchall action csum udp $a > for n in 2 4 ; do > ./pktgen_bench_xmit_mode_queue_xmit.sh -v -s 64 -t $n -n 1000000 -i eth1 > done > done test results: | | before patch | after patch $a | $n | avg. pps/thread | avg. pps/thread -----+----+-----------------+---------------- pass | 2 | 1671463 ± 4% | 1920789 ± 3% pass | 4 | 648797 ± 1% | 738190 ± 1% drop | 2 | 3212692 ± 2% | 3719811 ± 2% drop | 4 | 1078824 ± 1% | 1328099 ± 1% references: [1] https://www.spinics.net/lists/netdev/msg334760.html [2] https://www.spinics.net/lists/netdev/msg465862.html v2 changes: - add 'drop' test, it produces more contentions - use RCU-protected struct to store 'action' and 'update_flags', to avoid reading the values from subsequent configurations Davide Caratti (2): net/sched: act_csum: use per-core statistics net/sched: act_csum: don't use spinlock in the fast path include/net/tc_act/tc_csum.h | 16 +++++++++-- net/sched/act_csum.c | 66 ++++++++++++++++++++++++++++++++------------ 2 files changed, 62 insertions(+), 20 deletions(-) -- 2.13.6