Messages in this thread | | | From | Pavel Begunkov <> | Subject | [PATCH net-next v2 00/10] udp/ipv6 optimisations | Date | Thu, 27 Jan 2022 00:36:21 +0000 |
| |
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(-)
-- 2.34.1
| |