On Tue, Sep 8, 2020 at 12:36 PM Andrey V. Elsukov <a...@freebsd.org> wrote:

> Author: ae
> Date: Tue Sep  8 10:36:11 2020
> New Revision: 365449
> URL: https://svnweb.freebsd.org/changeset/base/365449
>
> Log:
>   Add a few features to rcorder:
>
>
>
Hi Andrey,

I've spent some time bisecting an IPSec gateway performance regression on
-head that points to this commit.

So my bench uses a simple static IPSec aes-gcm-16 setup, and their results
vary a lot between those 2 revisions:

   - r365448: Estimated Equilibrium Ethernet throughput= 1413 Mb/s (maximum
   value seen: 1419 Mb/s)
   - r365449: Estimated Equilibrium Ethernet throughput= 469 Mb/s (maximum
   value seen: 469 Mb/s)

How could a modification to the rcoder be the source cause of that ?
My rc.conf contains this:
kld_list="aesni"
ipsec_enable="YES"

So My first thought was that the aesni module wasn't loaded anymore:
Before upgrade:
[root@hp]~# uname -a
FreeBSD hp 13.0-CURRENT FreeBSD 13.0-CURRENT #15 r365448M: Thu Sep 17
18:17:58 CEST 2020     oliv...@lame4.bsdrp.net:/usr/src/amd64.amd64/sys/amd64
 amd64
[root@hp]~# kldstat
Id Refs Address                Size Name
 1   11 0xffffffff80200000  1ee58b0 kernel
 2    1 0xffffffff82319000     34c8 fdescfs.ko
 3    1 0xffffffff8231d000     a240 aesni.ko
 4    1 0xffffffff82328000     8c98 ioat.ko
 5    1 0xffffffff82331000     e350 ipsec.ko

Then after upgrade:

[root@hp]~# uname -a
FreeBSD hp 13.0-CURRENT FreeBSD 13.0-CURRENT #14 r365449M: Thu Sep 17
17:01:35 CEST 2020     oliv...@lame4.bsdrp.net:/usr/src/amd64.amd64/sys/amd64
 amd64
[root@hp]~# kldstat
Id Refs Address                Size Name
 1   11 0xffffffff80200000  1ee58b0 kernel
 2    1 0xffffffff82319000     34c8 fdescfs.ko
 3    1 0xffffffff8231d000     e350 ipsec.ko
 4    1 0xffffffff8232c000     a240 aesni.ko
 5    1 0xffffffff82337000     8c98 ioat.ko

=> aesni.ko is correctly loaded, so it is not the problem, but notice the
order of the kernel modules that have changed.
Could be this the source of the problem ? Let's try:

[root@hp]~# service ipsec stop
Clearing ipsec manual keys/policies.
[root@hp]~# kld
kldconfig kldload   kldstat   kldunload kldxref
[root@hp]~# kldunload ioat
[root@hp]~# kldunload aesni
[root@hp]~# kldunload ipsec
[root@hp]~# kldload aesni
[root@hp]~# kldload ipsec
[root@hp]~# service ipsec start
Installing ipsec manual keys/policies.
[root@hp]~# kldstat
Id Refs Address                Size Name
 1   11 0xffffffff80200000  1ee58b0 kernel
 2    1 0xffffffff82319000     34c8 fdescfs.ko
 5    1 0xffffffff82337000     8c98 ioat.ko
 6    1 0xffffffff8231d000     a240 aesni.ko
 7    1 0xffffffff82328000     e350 ipsec.ko

And after that the IPSec bench results are back to their previous value :-)
So rcorder needs to load aesni before ipsec.

Regards,

Olivier
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to