Message ID | cover.1643243772.git.asml.silence@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | udp/ipv6 optimisations | expand |
On Wed, Jan 26, 2022 at 7:36 PM Pavel Begunkov <asml.silence@gmail.com> wrote: > > Shed some weight from udp/ipv6. Zerocopy benchmarks over dummy showed > ~5% tx/s improvement, should be similar for small payload non-zc > cases. > > The performance comes from killing 4 atomics and a couple of big struct > memcpy/memset. 1/10 removes a pair of atomics on dst refcounting for > cork->skb setup, 9/10 saves another pair on cork init. 5/10 and 8/10 > kill extra 88B memset and memcpy respectively. > > v2: add a comment about setting dst early in ip6_setup_cork() > drop non-udp patches for now > add patch 10 > > Pavel Begunkov (10): > ipv6: optimise dst refcounting on skb init > udp6: shuffle up->pending AF_INET bits > ipv6: remove daddr temp buffer in __ip6_make_skb > ipv6: clean up cork setup/release > ipv6: don't zero inet_cork_full::fl after use > ipv6: pass full cork into __ip6_append_data() > udp6: pass flow in ip6_make_skb together with cork > udp6: don't make extra copies of iflow > ipv6: optimise dst refcounting on cork init > ipv6: partially inline ipv6_fixup_options > > include/net/ipv6.h | 14 ++++-- > net/ipv6/exthdrs.c | 8 ++-- > net/ipv6/ip6_output.c | 99 ++++++++++++++++++++++------------------ > net/ipv6/udp.c | 103 ++++++++++++++++++++---------------------- > 4 files changed, 118 insertions(+), 106 deletions(-) For the series: Reviewed-by: Willem de Bruijn <willemb@google.com> Iterative review vs v1, where I only had one small comment, which was addressed. NB: Due to some subject line changes, it wasn't immediately clear to me that this was just a range-diff over the first 10 patches in both series.
Hello: This series was applied to netdev/net-next.git (master) by Jakub Kicinski <kuba@kernel.org>: On Thu, 27 Jan 2022 00:36:21 +0000 you wrote: > Shed some weight from udp/ipv6. Zerocopy benchmarks over dummy showed > ~5% tx/s improvement, should be similar for small payload non-zc > cases. > > The performance comes from killing 4 atomics and a couple of big struct > memcpy/memset. 1/10 removes a pair of atomics on dst refcounting for > cork->skb setup, 9/10 saves another pair on cork init. 5/10 and 8/10 > kill extra 88B memset and memcpy respectively. > > [...] Here is the summary with links: - [net-next,v2,01/10] ipv6: optimise dst refcounting on skb init https://git.kernel.org/netdev/net-next/c/cd3c74807736 - [net-next,v2,02/10] udp6: shuffle up->pending AF_INET bits https://git.kernel.org/netdev/net-next/c/406c4a0af010 - [net-next,v2,03/10] ipv6: remove daddr temp buffer in __ip6_make_skb https://git.kernel.org/netdev/net-next/c/b60d4e58c615 - [net-next,v2,04/10] ipv6: clean up cork setup/release https://git.kernel.org/netdev/net-next/c/d656b2ea5fa7 - [net-next,v2,05/10] ipv6: don't zero inet_cork_full::fl after use https://git.kernel.org/netdev/net-next/c/940ea00b0646 - [net-next,v2,06/10] ipv6: pass full cork into __ip6_append_data() https://git.kernel.org/netdev/net-next/c/f3b46a3e8c40 - [net-next,v2,07/10] udp6: pass flow in ip6_make_skb together with cork https://git.kernel.org/netdev/net-next/c/f37a4cc6bb0b - [net-next,v2,08/10] udp6: don't make extra copies of iflow https://git.kernel.org/netdev/net-next/c/5298953e742d - [net-next,v2,09/10] ipv6: optimise dst refcounting on cork init https://git.kernel.org/netdev/net-next/c/40ac240c2e06 - [net-next,v2,10/10] ipv6: partially inline ipv6_fixup_options https://git.kernel.org/netdev/net-next/c/31ed2261e88f You are awesome, thank you!