]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
UDP: further performance improvements on tx
authorMatt Macy <mmacy@FreeBSD.org>
Wed, 23 May 2018 21:02:14 +0000 (21:02 +0000)
committerMatt Macy <mmacy@FreeBSD.org>
Wed, 23 May 2018 21:02:14 +0000 (21:02 +0000)
commit4f6c66cc9c75c857341b6ca6ca92d4808be8d3b5
tree4bfcf94f0a6ca1b0584e050e141fcc97051aad44
parent630ba2c514d723e8c55b5a513b541b614338047f
UDP: further performance improvements on tx

Cumulative throughput while running 64
  netperf -H $DUT -t UDP_STREAM -- -m 1
on a 2x8x2 SKL went from 1.1Mpps to 2.5Mpps

Single stream throughput increases from 910kpps to 1.18Mpps

Baseline:
https://people.freebsd.org/~mmacy/2018.05.11/udpsender2.svg

- Protect read access to global ifnet list with epoch
https://people.freebsd.org/~mmacy/2018.05.11/udpsender3.svg

- Protect short lived ifaddr references with epoch
https://people.freebsd.org/~mmacy/2018.05.11/udpsender4.svg

- Convert if_afdata read lock path to epoch
https://people.freebsd.org/~mmacy/2018.05.11/udpsender5.svg

A fix for the inpcbhash contention is pending sufficient time
on a canary at LLNW.

Reviewed by: gallatin
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D15409
38 files changed:
sys/compat/linprocfs/linprocfs.c
sys/compat/linux/linux_ioctl.c
sys/compat/linuxkpi/common/include/linux/inetdevice.h
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
sys/dev/wtap/if_wtap.c
sys/net/altq/altq_subr.c
sys/net/bridgestp.c
sys/net/if.c
sys/net/if_llatbl.c
sys/net/if_llatbl.h
sys/net/if_var.h
sys/net/route.c
sys/net/rtsock.c
sys/netinet/igmp.c
sys/netinet/in.c
sys/netinet/in_mcast.c
sys/netinet/in_pcb.c
sys/netinet/in_var.h
sys/netinet/ip_divert.c
sys/netinet/ip_icmp.c
sys/netinet/ip_input.c
sys/netinet/ip_mroute.c
sys/netinet/ip_options.c
sys/netinet/ip_output.c
sys/netinet/netdump/netdump_client.c
sys/netinet/raw_ip.c
sys/netinet/sctp_bsd_addr.c
sys/netinet6/icmp6.c
sys/netinet6/in6.c
sys/netinet6/in6_ifattach.c
sys/netinet6/in6_pcb.c
sys/netinet6/ip6_input.c
sys/netinet6/nd6.c
sys/netinet6/raw_ip6.c
sys/netpfil/pf/pf_if.c
sys/nfs/bootp_subr.c
sys/nfs/nfs_diskless.c
sys/ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c