svn commit: r334118 - in head/sys: compat/linprocfs compat/linux compat/linuxkpi/common/include/linux dev/mlx5/mlx5_ib dev/wtap net net/altq netinet netinet/netdump netinet6 netpfil/pf nfs ofed/dri...
Mark Johnston
markj at FreeBSD.org
Fri May 25 16:36:13 UTC 2018
On Wed, May 23, 2018 at 09:02:15PM +0000, Matt Macy wrote:
> Author: mmacy
> Date: Wed May 23 21:02:14 2018
> New Revision: 334118
> URL: https://svnweb.freebsd.org/changeset/base/334118
>
> Log:
> 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
After this change I can panic an INVARIANTS kernel like so. There is a
freed ifaddr lingering on the lo0 ifnet's address list.
# ifconfig lo0 127.0.0.2
# ifconfig lo0 -alias 127.0.0.2
# netstat -rn
Routing tables
Fatal trap 9: general protection fault while in kernel mode
cpuid = 1; apic id = 01
instruction pointer = 0x20:0xffffffff80605219
stack pointer = 0x28:0xfffffe00004692e0
frame pointer = 0x28:0xfffffe00004693d0
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 735 (netstat)
trap number = 9
panic: general protection fault
cpuid = 1
time = 1527266002
Uptime: 1m42s
Dumping 216 out of 4079 MB:..8%..15%..23%..37%..45%..52%..67%..74%..82%..97%
Dump complete
Consoles: userboot
More information about the svn-src-all
mailing list