There was an issue on my Linux server (server10g) with an Asus Z170-AR motherboard where the x4 slot was set to run at x2 speed. I fixed that in the BIOS (at the expense of sacrificing two unused SATA ports). That got the speed a little bit higher.
However, on the Windows client, it seems that Aquantia drivers have an issue where the speed isn't actually stable. Here are a few consecutive runs :
D:\Downloads\iperf-3.1.3-win64>iperf3.exe -N -c server10g
Connecting to host server10g, port 5201
[ 4] local 192.168.1.26 port 4187 connected to 192.168.1.27 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 398 MBytes 3.34 Gbits/sec
[ 4] 1.00-2.00 sec 404 MBytes 3.39 Gbits/sec
[ 4] 2.00-3.00 sec 390 MBytes 3.27 Gbits/sec
[ 4] 3.00-4.00 sec 405 MBytes 3.40 Gbits/sec
[ 4] 4.00-5.00 sec 398 MBytes 3.34 Gbits/sec
[ 4] 5.00-6.00 sec 396 MBytes 3.32 Gbits/sec
[ 4] 6.00-7.00 sec 379 MBytes 3.18 Gbits/sec
[ 4] 7.00-8.00 sec 400 MBytes 3.35 Gbits/sec
[ 4] 8.00-9.00 sec 344 MBytes 2.88 Gbits/sec
[ 4] 9.00-10.00 sec 394 MBytes 3.31 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.00 sec 3.82 GBytes 3.28 Gbits/sec sender
[ 4] 0.00-10.00 sec 3.82 GBytes 3.28 Gbits/sec receiver
iperf Done.
D:\Downloads\iperf-3.1.3-win64>iperf3.exe -N -c server10g
Connecting to host server10g, port 5201
[ 4] local 192.168.1.26 port 4195 connected to 192.168.1.27 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 427 MBytes 3.58 Gbits/sec
[ 4] 1.00-2.00 sec 392 MBytes 3.29 Gbits/sec
[ 4] 2.00-3.00 sec 426 MBytes 3.58 Gbits/sec
[ 4] 3.00-3.10 sec 42.2 MBytes 3.54 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-3.10 sec 1.26 GBytes 3.48 Gbits/sec sender
[ 4] 0.00-3.10 sec 0.00 Bytes 0.00 bits/sec receiver
iperf3: interrupt - the client has terminated
D:\Downloads\iperf-3.1.3-win64>iperf3.exe -N -c server10g
Connecting to host server10g, port 5201
[ 4] local 192.168.1.26 port 4197 connected to 192.168.1.27 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 849 MBytes 7.12 Gbits/sec
[ 4] 1.00-2.00 sec 867 MBytes 7.28 Gbits/sec
[ 4] 2.00-2.79 sec 640 MBytes 6.81 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-2.79 sec 2.30 GBytes 7.09 Gbits/sec sender
[ 4] 0.00-2.79 sec 0.00 Bytes 0.00 bits/sec receiver
iperf3: interrupt - the client has terminated
D:\Downloads\iperf-3.1.3-win64>iperf3.exe -N -c server10g
Connecting to host server10g, port 5201
[ 4] local 192.168.1.26 port 4199 connected to 192.168.1.27 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 403 MBytes 3.38 Gbits/sec
[ 4] 1.00-2.00 sec 391 MBytes 3.28 Gbits/sec
[ 4] 2.00-2.68 sec 273 MBytes 3.35 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-2.68 sec 1.04 GBytes 3.33 Gbits/sec sender
[ 4] 0.00-2.68 sec 0.00 Bytes 0.00 bits/sec receiver
iperf3: interrupt - the client has terminated
D:\Downloads\iperf-3.1.3-win64>iperf3.exe -N -c server10g
Connecting to host server10g, port 5201
[ 4] local 192.168.1.26 port 4201 connected to 192.168.1.27 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 393 MBytes 3.29 Gbits/sec
[ 4] 1.00-2.00 sec 400 MBytes 3.36 Gbits/sec
[ 4] 2.00-2.11 sec 44.4 MBytes 3.44 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-2.11 sec 838 MBytes 3.33 Gbits/sec sender
[ 4] 0.00-2.11 sec 0.00 Bytes 0.00 bits/sec receiver
iperf3: interrupt - the client has terminated
D:\Downloads\iperf-3.1.3-win64>iperf3.exe -N -c server10g
Connecting to host server10g, port 5201
[ 4] local 192.168.1.26 port 4203 connected to 192.168.1.27 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 853 MBytes 7.15 Gbits/sec
[ 4] 1.00-2.00 sec 861 MBytes 7.22 Gbits/sec
[ 4] 2.00-3.00 sec 834 MBytes 7.00 Gbits/sec
[ 4] 3.00-4.00 sec 855 MBytes 7.17 Gbits/sec
[ 4] 4.00-5.00 sec 845 MBytes 7.09 Gbits/sec
[ 4] 5.00-6.00 sec 830 MBytes 6.96 Gbits/sec
[ 4] 6.00-7.00 sec 828 MBytes 6.94 Gbits/sec
[ 4] 7.00-7.51 sec 403 MBytes 6.66 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-7.51 sec 6.16 GBytes 7.05 Gbits/sec sender
[ 4] 0.00-7.51 sec 0.00 Bytes 0.00 bits/sec receiver
iperf3: interrupt - the client has terminated
All are identical, going against the same server. I just CTRL-C early before 10s are up. As you can see, speed is sometimes in the 3 Gbps range, sometimes 7 Gbps range.
I then turned off "interrupt moderation" in the Windows driver settings for the Aquantia card. Subsequent runs are more stable, in the 7 Gbps range, and never dropping down to 3 Gbps.
D:\Downloads\iperf-3.1.3-win64>iperf3.exe -N -c server10g
Connecting to host server10g, port 5201
[ 4] local 192.168.1.26 port 4377 connected to 192.168.1.27 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 891 MBytes 7.48 Gbits/sec
[ 4] 1.00-2.00 sec 799 MBytes 6.70 Gbits/sec
[ 4] 2.00-3.00 sec 860 MBytes 7.21 Gbits/sec
[ 4] 3.00-4.00 sec 816 MBytes 6.85 Gbits/sec
[ 4] 4.00-5.00 sec 822 MBytes 6.89 Gbits/sec
[ 4] 5.00-6.00 sec 835 MBytes 7.01 Gbits/sec
[ 4] 6.00-6.31 sec 272 MBytes 7.49 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-6.31 sec 5.17 GBytes 7.04 Gbits/sec sender
[ 4] 0.00-6.31 sec 0.00 Bytes 0.00 bits/sec receiver
iperf3: interrupt - the client has terminated
The receive side is also stable, but still faster. Now nearly maxing line rate with a single stream, as it should be.
D:\Downloads\iperf-3.1.3-win64>iperf3.exe -N -c server10g -R
Connecting to host server10g, port 5201
Reverse mode, remote host server10g is sending
[ 4] local 192.168.1.26 port 4380 connected to 192.168.1.27 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 1.13 GBytes 9.73 Gbits/sec
[ 4] 1.00-2.00 sec 1.11 GBytes 9.57 Gbits/sec
[ 4] 2.00-3.00 sec 1.13 GBytes 9.74 Gbits/sec
[ 4] 3.00-4.00 sec 1.11 GBytes 9.54 Gbits/sec
[ 4] 4.00-5.00 sec 1.13 GBytes 9.71 Gbits/sec
[ 4] 5.00-6.00 sec 1.07 GBytes 9.22 Gbits/sec
[ 4] 6.00-7.00 sec 1.12 GBytes 9.62 Gbits/sec
[ 4] 7.00-8.00 sec 1.10 GBytes 9.44 Gbits/sec
[ 4] 8.00-9.00 sec 1.12 GBytes 9.59 Gbits/sec
[ 4] 9.00-10.00 sec 1.13 GBytes 9.71 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 11.2 GBytes 9.59 Gbits/sec 0 sender
[ 4] 0.00-10.00 sec 11.2 GBytes 9.59 Gbits/sec receiver
iperf Done.
I'm going to try to do the same thing on the Linux driver.