The stock FreeBSD image is not tuned for maximum performance.
I think that you need to increase the frequency of the processor to the maximum in order to get the maximum speed.
Use the sysctl command to configure
Examples:
sysctl hw.model
hw.model: ARM Cortex-A53 r0p4
sysctl hw.ncpu
hw.ncpu: 6
dev.cpu.0.freq: 408
sysctl dev.cpu.0.freq_levels
dev.cpu.0.freq_levels: 1416/-1 1200/-1 1008/-1 816/-1 600/-1 408/-1
sysctl hw.temperature.CPU
hw.temperature.CPU: 46.1C
sysctl hw.temperature.GPU
hw.temperature.GPU: 46.7C
Use sysctl dev.cpu.0.freq=1500
Or service powerd onestart
In my opinion, the maximum speed of the dwc driver for RK3399
should be 900-940 Mbit / sec.
For RK3328 a little less.
root@hp:~ # iperf3 -c 192.168.1.110
Connecting to host 192.168.1.110, port 5201
[ 5] local 192.168.1.111 port 23479 connected to 192.168.1.110 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 69.9 MBytes 587 Mbits/sec 0 642 KBytes
[ 5] 1.00-2.00 sec 65.4 MBytes 548 Mbits/sec 0 642 KBytes
[ 5] 2.00-3.00 sec 67.9 MBytes 570 Mbits/sec 0 642 KBytes
[ 5] 3.00-4.00 sec 66.6 MBytes 559 Mbits/sec 0 642 KBytes
[ 5] 4.00-5.00 sec 60.4 MBytes 507 Mbits/sec 0 642 KBytes
[ 5] 5.00-6.00 sec 67.1 MBytes 562 Mbits/sec 0 642 KBytes
[ 5] 6.00-7.00 sec 67.7 MBytes 568 Mbits/sec 0 642 KBytes
[ 5] 7.00-8.00 sec 66.1 MBytes 555 Mbits/sec 0 642 KBytes
[ 5] 8.00-9.00 sec 68.3 MBytes 573 Mbits/sec 0 642 KBytes
[ 5] 9.00-10.00 sec 68.5 MBytes 575 Mbits/sec 0 642 KBytes
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 668 MBytes 560 Mbits/sec 0 sender
[ 5] 0.00-10.01 sec 667 MBytes 559 Mbits/sec receiver
iperf Done.
Before tuning
root@hp:~ # iperf3 -c 192.168.1.110
Connecting to host 192.168.1.110, port 5201
[ 5] local 192.168.1.111 port 10397 connected to 192.168.1.110 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 113 MBytes 946 Mbits/sec 0 569 KBytes
[ 5] 1.00-2.00 sec 111 MBytes 928 Mbits/sec 0 804 KBytes
[ 5] 2.00-3.00 sec 111 MBytes 931 Mbits/sec 0 985 KBytes
[ 5] 3.00-4.00 sec 111 MBytes 934 Mbits/sec 0 1.11 MBytes
[ 5] 4.00-5.00 sec 110 MBytes 927 Mbits/sec 0 1.24 MBytes
[ 5] 5.00-6.00 sec 111 MBytes 934 Mbits/sec 0 1.36 MBytes
[ 5] 6.00-7.00 sec 110 MBytes 925 Mbits/sec 0 1.41 MBytes
[ 5] 7.00-8.00 sec 111 MBytes 930 Mbits/sec 0 1.41 MBytes
[ 5] 8.00-9.00 sec 111 MBytes 934 Mbits/sec 0 1.41 MBytes
[ 5] 9.00-10.00 sec 111 MBytes 929 Mbits/sec 0 1.41 MBytes
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1.08 GBytes 932 Mbits/sec 0 sender
[ 5] 0.00-10.01 sec 1.08 GBytes 930 Mbits/sec receiver
iperf Done.
root@hp:~ #
root@helios:/ # cat /etc/sysctl.conf
$FreeBSD$
This file is read when going to multi-user and its contents piped thru
sysctl'' to adjust kernel values.
man 5 sysctl.conf’’ for details.
Uncomment this to prevent users from seeing information about processes that
are being run under another UID.
#security.bsd.see_other_uids=0
vfs.zfs.min_auto_ashift=12
sysctl kern.ipc.maxsockbuf
kern.ipc.maxsockbuf=5242880
kern.ipc.nmbclusters=1310720
kern.ipc.soacceptqueue=4096
sysctl net.inet.udp.recvspace
net.inet.udp.recvspace=4194304
sysctl net.inet.tcp
net.inet.tcp.sendspace=655360
net.inet.tcp.recvspace=655360
net.inet.tcp.sendbuf_max=4194304
net.inet.tcp.sendbuf_inc=1310720
net.inet.tcp.sendbuf_auto=1
net.inet.tcp.recvbuf_max=4194304
net.inet.tcp.recvbuf_auto=1