Re: slow USB 3.0 on -current

From: Mark Millard <marklmi_at_yahoo.com>
Date: Sun, 12 Jul 2020 18:26:24 -0700
John-Mark Gurney jmg at funkthat.com wrote on
Sat Jul 11 22:44:36 UTC 2020 :

> I'm having issues getting good ethernet performance from a USB ethernet
> adapter (ure) under FreeBSD on an HP EliteDesk 705 G2 Mini[1].  It's an
> AMD PRO A10-8700B based system using the AMD A78 FCH chipset.
> 
> Under FreeBSD -current (r362596), 12.1-R and 11.4-R, the RealTek USB
> adapter only gets around 10MB/sec performance.  During the transfer,
> the CPU usage is only around 3-5%, so it's definitely not CPU bound.
> 
> I have tested Windows 10 and NetBSD 9.0 performance, and both provide
> 100MB/sec+ w/o troubles.
> 
> I have attached dmesg from both FreeBSD -current and NetBSD 9.0.
> 
> Any hints on how to fix this?
> 
> This may be related, but I'm also having issues w/ booting when I have
> both a SD USB 2.0 card reader AND the ure plugged into USB 3.0 ports.
> 
> If I move the SD card reader to USB 2.0, the umass device will attach
> and work.  I have also attached a clip of the dmesg from that
> happening.
> 
> Has anyone else seen this issue?  Ideas or thoughts on how to resolve
> the performance issues?
> 

It might prove useful to use iperf3 with

# iperf3 -s

on one machine and doing

# iperf3 -c ADDR
. . .
# iperf3 -R -c ADDR
. . .

on the other. (That last swaps the
sender/receiver status.)

All 3 commands will have output. The
-s one will produce output for each of
the -c ones.

The outputs for the sender(s) will include Cwnd
(congestion window size) information that may
be relevant. It will report bit rate and
retry count sampling (and overall figures).

Comparing the output of using iperf3 under
NetBSD 9.0 or Windows 10 could be instructive.

My observation would be that neither type
of USB3 Ethernet adapter that I've tried
(different chipsets) get anywhere near
100 MByte/s when ifconfig reports
1000baseT <full-duplex>. The Cwnd figures
are smaller than for the built-in Ethernets
that manage much faster overall transfer
rates.

Example where 192.168.1.112 has the USB3
EtherNet based adapter in use and
192.168.1.120 has built-in EtherNet that
can do 900 Mbit/s+ on the network:

# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.1.112, port 20519
[  5] local 192.168.1.120 port 5201 connected to 192.168.1.112 port 44212
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  23.8 MBytes   200 Mbits/sec                  
[  5]   1.00-2.00   sec  27.6 MBytes   232 Mbits/sec                  
[  5]   2.00-3.00   sec  27.6 MBytes   232 Mbits/sec                  
[  5]   3.00-4.00   sec  27.6 MBytes   232 Mbits/sec                  
[  5]   4.00-5.00   sec  27.6 MBytes   232 Mbits/sec                  
[  5]   5.00-6.00   sec  27.6 MBytes   232 Mbits/sec                  
[  5]   6.00-7.00   sec  27.6 MBytes   232 Mbits/sec                  
[  5]   7.00-8.00   sec  27.6 MBytes   232 Mbits/sec                  
[  5]   8.00-9.00   sec  27.6 MBytes   232 Mbits/sec                  
[  5]   9.00-10.00  sec  27.6 MBytes   232 Mbits/sec                  
[  5]  10.00-10.19  sec  5.13 MBytes   231 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.19  sec   277 MBytes   228 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.1.112, port 18711
[  5] local 192.168.1.120 port 5201 connected to 192.168.1.112 port 48624
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  22.5 MBytes   188 Mbits/sec  273   17.0 KBytes       
[  5]   1.00-2.00   sec  19.0 MBytes   159 Mbits/sec  214   14.3 KBytes       
[  5]   2.00-3.00   sec  22.6 MBytes   190 Mbits/sec  271   29.8 KBytes       
[  5]   3.00-4.00   sec  10.6 MBytes  88.9 Mbits/sec  131   28.4 KBytes       
[  5]   4.00-5.00   sec  28.2 MBytes   237 Mbits/sec  343   17.0 KBytes       
[  5]   5.00-6.01   sec  25.7 MBytes   214 Mbits/sec  310   14.3 KBytes       
[  5]   6.01-7.00   sec  15.4 MBytes   130 Mbits/sec  178   19.8 KBytes       
[  5]   7.00-8.00   sec  20.6 MBytes   173 Mbits/sec  229   21.3 KBytes       
[  5]   8.00-9.00   sec  29.8 MBytes   250 Mbits/sec  345   19.8 KBytes       
[  5]   9.00-10.00  sec  29.9 MBytes   251 Mbits/sec  325   17.0 KBytes       
[  5]  10.00-10.19  sec  7.54 MBytes   332 Mbits/sec   89   2.83 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.19  sec   232 MBytes   191 Mbits/sec  2708             sender
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------


# iperf3 -c 192.168.1.120
Connecting to host 192.168.1.120, port 5201
[  5] local 192.168.1.112 port 44212 connected to 192.168.1.120 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  29.0 MBytes   243 Mbits/sec   14    326 KBytes       
[  5]   1.00-2.00   sec  27.6 MBytes   232 Mbits/sec    0    326 KBytes       
[  5]   2.00-3.00   sec  27.6 MBytes   232 Mbits/sec    0    326 KBytes       
[  5]   3.00-4.00   sec  27.6 MBytes   232 Mbits/sec    0    326 KBytes       
[  5]   4.00-5.00   sec  27.6 MBytes   232 Mbits/sec    0    326 KBytes       
[  5]   5.00-6.00   sec  27.6 MBytes   232 Mbits/sec    0    326 KBytes       
[  5]   6.00-7.00   sec  27.6 MBytes   232 Mbits/sec    0    326 KBytes       
[  5]   7.00-8.00   sec  27.6 MBytes   232 Mbits/sec    0    326 KBytes       
[  5]   8.00-9.00   sec  27.6 MBytes   232 Mbits/sec    0    326 KBytes       
[  5]   9.00-10.00  sec  27.6 MBytes   232 Mbits/sec    0    326 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   277 MBytes   233 Mbits/sec   14             sender
[  5]   0.00-10.19  sec   277 MBytes   228 Mbits/sec                  receiver

# iperf3 -R -c 192.168.1.120
Connecting to host 192.168.1.120, port 5201
Reverse mode, remote host 192.168.1.120 is sending
[  5] local 192.168.1.112 port 48624 connected to 192.168.1.120 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.01   sec  23.9 MBytes   198 Mbits/sec                  
[  5]   1.01-2.01   sec  17.6 MBytes   147 Mbits/sec                  
[  5]   2.01-3.01   sec  22.6 MBytes   189 Mbits/sec                  
[  5]   3.01-4.00   sec  17.0 MBytes   144 Mbits/sec                  
[  5]   4.00-5.00   sec  29.4 MBytes   247 Mbits/sec                  
[  5]   5.00-6.00   sec  20.7 MBytes   173 Mbits/sec                  
[  5]   6.00-7.01   sec  16.8 MBytes   140 Mbits/sec                  
[  5]   7.01-8.00   sec  22.9 MBytes   193 Mbits/sec                  
[  5]   8.00-9.00   sec  31.0 MBytes   261 Mbits/sec                  
[  5]   9.00-10.00  sec  29.9 MBytes   251 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.19  sec   232 MBytes   191 Mbits/sec  2708             sender
[  5]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver

I'll note that between machines with built-in EtherNet
that can sustain fast transfers overall, the Cwnd figures
tend to vary but can reach 1 MBytes+. The Retr counts
tend to still exist.

By contrast, when the USB3 EtherNet is receiving above,
the maximum Cwnd reported above for the sender at the
time was: 29.8 KBytes.

I have not tried NetBSD, Windows 10, or Linux comparisons.

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)
Received on Sun Jul 12 2020 - 23:26:33 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:24 UTC