tl;dr Very low network throughput on 4k+ via wired connection with no discernable cause
This began when I started looking into playback of some 4k movies. Some would play find but others would stutter and freeze. When examining the bit rates I noticed that it was the higher rates, usually above 70Mb/s, where I was seeing the most issue. I initially thought perhaps it was a protocol issue so I changed from CIFS to NFS to connect to my FreeNAS server but that had no effect.
After browsing the forum I saw the repeated recommendation to test with iperf. My initial tests were abysmal, I was getting super low throughput often dropping into single digits. This initially led me to think I had a cabling issue or possibly a problem with the small 5 port switch that the 4k+ is plugged into. I grabbed a new cable and a laptop and tested to make sure I could get full 930MB/s or more throughput and took that to the where the 4k+ is. Connected to that same 5 port switch is also an older NUC running Ubuntu LTS 20.04. I installed iperf on that for testing as well. Testing with the laptop connected to the switch got me full throughput, so I swapped the cable and saw no change from the 4k+. Since I now had iperf on the NUC I also tested from there and was able to get full throughput to my storage server. That indicated that the switch and the cabling from my wall plate back to my server room was also working. To rule out an issue with the switch anyway I ran cable from the wall plate directly to the 4k+ but was still getting terrible speeds.
For additional testing I also put the laptop in the server room and connected it to my main switch and started iperf listening on it to see if it was an issue with my storage server. From the NUC, full speed, from the 4k+ same issue. I actually have two FreeNAS servers and testing to both of them from the 4k+ yields the same results.
What is really odd is that every now and then I’ll get one iperf run that shows full throughput but rerunning the test immediately after, the performance drops off a cliff. These three runs were done back to back:
osmc@vero4k:~$ iperf3 -R -t 20 -c 172.16.11.40
Connecting to host 172.16.11.40, port 5201
Reverse mode, remote host 172.16.11.40 is sending
[ 5] local 172.16.11.36 port 48466 connected to 172.16.11.40 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 111 MBytes 933 Mbits/sec
[ 5] 1.00-2.00 sec 112 MBytes 937 Mbits/sec
[ 5] 2.00-3.00 sec 112 MBytes 939 Mbits/sec
[ 5] 3.00-4.00 sec 112 MBytes 938 Mbits/sec
[ 5] 4.00-5.00 sec 112 MBytes 939 Mbits/sec
[ 5] 5.00-6.00 sec 112 MBytes 939 Mbits/sec
[ 5] 6.00-7.00 sec 112 MBytes 939 Mbits/sec
[ 5] 7.00-8.00 sec 112 MBytes 939 Mbits/sec
[ 5] 8.00-9.00 sec 112 MBytes 939 Mbits/sec
[ 5] 9.00-10.00 sec 112 MBytes 938 Mbits/sec
[ 5] 10.00-11.00 sec 112 MBytes 937 Mbits/sec
[ 5] 11.00-12.00 sec 112 MBytes 939 Mbits/sec
[ 5] 12.00-13.00 sec 112 MBytes 939 Mbits/sec
[ 5] 13.00-14.00 sec 112 MBytes 939 Mbits/sec
[ 5] 14.00-15.00 sec 112 MBytes 939 Mbits/sec
[ 5] 15.00-16.00 sec 112 MBytes 939 Mbits/sec
[ 5] 16.00-17.00 sec 112 MBytes 938 Mbits/sec
[ 5] 17.00-18.00 sec 112 MBytes 936 Mbits/sec
[ 5] 18.00-19.00 sec 112 MBytes 940 Mbits/sec
[ 5] 19.00-20.00 sec 112 MBytes 938 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-20.00 sec 2.19 GBytes 939 Mbits/sec 0 sender
[ 5] 0.00-20.00 sec 2.18 GBytes 938 Mbits/sec receiver
iperf Done.
osmc@vero4k:~$ iperf3 -R -t 20 -c 172.16.11.25
Connecting to host 172.16.11.25, port 5201
Reverse mode, remote host 172.16.11.25 is sending
[ 5] local 172.16.11.36 port 55513 connected to 172.16.11.25 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 12.8 MBytes 108 Mbits/sec
[ 5] 1.00-2.00 sec 482 KBytes 3.95 Mbits/sec
[ 5] 2.00-3.00 sec 143 KBytes 1.17 Mbits/sec
[ 5] 3.00-4.00 sec 559 KBytes 4.58 Mbits/sec
[ 5] 4.00-5.00 sec 387 KBytes 3.17 Mbits/sec
[ 5] 5.00-6.00 sec 522 KBytes 4.27 Mbits/sec
[ 5] 6.00-7.00 sec 551 KBytes 4.52 Mbits/sec
[ 5] 7.00-8.00 sec 1.08 MBytes 9.06 Mbits/sec
[ 5] 8.00-9.00 sec 370 KBytes 3.03 Mbits/sec
[ 5] 9.00-10.00 sec 318 KBytes 2.61 Mbits/sec
[ 5] 10.00-11.00 sec 283 KBytes 2.32 Mbits/sec
[ 5] 11.00-12.00 sec 1012 KBytes 8.29 Mbits/sec
[ 5] 12.00-13.00 sec 573 KBytes 4.69 Mbits/sec
[ 5] 13.00-14.00 sec 411 KBytes 3.37 Mbits/sec
[ 5] 14.00-15.00 sec 290 KBytes 2.37 Mbits/sec
[ 5] 15.00-16.00 sec 426 KBytes 3.49 Mbits/sec
[ 5] 16.00-17.00 sec 115 KBytes 938 Kbits/sec
[ 5] 17.00-18.00 sec 393 KBytes 3.22 Mbits/sec
[ 5] 18.00-19.00 sec 635 KBytes 5.20 Mbits/sec
[ 5] 19.00-20.00 sec 378 KBytes 3.09 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-20.00 sec 22.8 MBytes 9.57 Mbits/sec 158 sender
[ 5] 0.00-20.00 sec 21.6 MBytes 9.04 Mbits/sec receiver
iperf Done.
osmc@vero4k:~$ iperf3 -R -t 20 -c 172.16.11.40
Connecting to host 172.16.11.40, port 5201
Reverse mode, remote host 172.16.11.40 is sending
[ 5] local 172.16.11.36 port 48470 connected to 172.16.11.40 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 510 KBytes 4.18 Mbits/sec
[ 5] 1.00-2.00 sec 112 KBytes 915 Kbits/sec
[ 5] 2.00-3.00 sec 157 KBytes 1.29 Mbits/sec
[ 5] 3.00-4.00 sec 257 KBytes 2.11 Mbits/sec
[ 5] 4.00-5.00 sec 352 KBytes 2.89 Mbits/sec
[ 5] 5.00-6.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 6.00-7.00 sec 235 KBytes 1.92 Mbits/sec
[ 5] 7.00-8.00 sec 84.8 KBytes 695 Kbits/sec
[ 5] 8.00-9.00 sec 56.6 KBytes 463 Kbits/sec
[ 5] 9.00-10.00 sec 28.3 KBytes 232 Kbits/sec
[ 5] 10.00-11.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 11.00-12.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 12.00-13.00 sec 28.3 KBytes 232 Kbits/sec
[ 5] 13.00-14.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 14.00-15.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 15.00-16.00 sec 42.4 KBytes 348 Kbits/sec
[ 5] 16.00-17.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 17.00-18.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 18.00-19.00 sec 0.00 Bytes 0.00 bits/sec
[ 5] 19.00-20.00 sec 0.00 Bytes 0.00 bits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-20.00 sec 1.85 MBytes 777 Kbits/sec 17 sender
[ 5] 0.00-20.00 sec 1.82 MBytes 763 Kbits/sec receiver
iperf Done.
.40 is my primary FreeNAS server and .25 is the one I’m working to decomm but is still serving NFS shares to my VMware cluster. Both are connected with dual GB NICs in LAGG to my Cisco 3560 and are definitely capable of sustained gigabit throughput in iperf. Testing from every other source, the NUC, my desktop, multiple laptops, VMs all show results as expected in the 930+ MB/s range.
I also have an older Vero 4k with a USB gigabit NIC that I pulled out of storage for testing. Plugged into the same 5 port switch and testing to the same FreeNAS servers yields results like this:
osmc@vero:~$ iperf3 -R -t 20 -c 172.16.11.40
Connecting to host 172.16.11.40, port 5201
Reverse mode, remote host 172.16.11.40 is sending
[ 4] local 172.16.11.37 port 46056 connected to 172.16.11.40 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 34.7 MBytes 291 Mbits/sec
[ 4] 1.00-2.00 sec 35.2 MBytes 295 Mbits/sec
[ 4] 2.00-3.00 sec 34.9 MBytes 292 Mbits/sec
[ 4] 3.00-4.00 sec 35.1 MBytes 295 Mbits/sec
[ 4] 4.00-5.00 sec 34.4 MBytes 289 Mbits/sec
[ 4] 5.00-6.00 sec 34.8 MBytes 292 Mbits/sec
[ 4] 6.00-7.00 sec 34.1 MBytes 286 Mbits/sec
[ 4] 7.00-8.00 sec 17.9 MBytes 150 Mbits/sec
[ 4] 8.00-9.00 sec 26.5 MBytes 222 Mbits/sec
[ 4] 9.00-10.00 sec 35.2 MBytes 295 Mbits/sec
[ 4] 10.00-11.00 sec 35.2 MBytes 295 Mbits/sec
[ 4] 11.00-12.00 sec 34.5 MBytes 289 Mbits/sec
[ 4] 12.00-13.00 sec 29.4 MBytes 246 Mbits/sec
[ 4] 13.00-14.00 sec 23.6 MBytes 198 Mbits/sec
[ 4] 14.00-15.00 sec 35.1 MBytes 294 Mbits/sec
[ 4] 15.00-16.00 sec 35.1 MBytes 294 Mbits/sec
[ 4] 16.00-17.00 sec 34.9 MBytes 293 Mbits/sec
[ 4] 17.00-18.00 sec 27.0 MBytes 226 Mbits/sec
[ 4] 18.00-19.00 sec 33.8 MBytes 284 Mbits/sec
[ 4] 19.00-20.00 sec 26.6 MBytes 223 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-20.00 sec 638 MBytes 268 Mbits/sec 4344 sender
[ 4] 0.00-20.00 sec 638 MBytes 268 Mbits/sec receiver
iperf Done.
osmc@vero:~$ iperf3 -R -t 20 -c 172.16.11.25
Connecting to host 172.16.11.25, port 5201
Reverse mode, remote host 172.16.11.25 is sending
[ 4] local 172.16.11.37 port 50182 connected to 172.16.11.25 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 35.2 MBytes 295 Mbits/sec
[ 4] 1.00-2.00 sec 35.8 MBytes 300 Mbits/sec
[ 4] 2.00-3.00 sec 35.4 MBytes 297 Mbits/sec
[ 4] 3.00-4.00 sec 35.6 MBytes 299 Mbits/sec
[ 4] 4.00-5.00 sec 35.4 MBytes 297 Mbits/sec
[ 4] 5.00-6.00 sec 35.5 MBytes 298 Mbits/sec
[ 4] 6.00-7.00 sec 35.6 MBytes 299 Mbits/sec
[ 4] 7.00-8.00 sec 35.5 MBytes 298 Mbits/sec
[ 4] 8.00-9.00 sec 27.2 MBytes 228 Mbits/sec
[ 4] 9.00-10.00 sec 35.8 MBytes 300 Mbits/sec
[ 4] 10.00-11.00 sec 35.9 MBytes 301 Mbits/sec
[ 4] 11.00-12.00 sec 35.3 MBytes 296 Mbits/sec
[ 4] 12.00-13.00 sec 35.5 MBytes 298 Mbits/sec
[ 4] 13.00-14.00 sec 35.4 MBytes 297 Mbits/sec
[ 4] 14.00-15.00 sec 34.3 MBytes 288 Mbits/sec
[ 4] 15.00-16.00 sec 35.7 MBytes 299 Mbits/sec
[ 4] 16.00-17.00 sec 35.5 MBytes 298 Mbits/sec
[ 4] 17.00-18.00 sec 35.8 MBytes 300 Mbits/sec
[ 4] 18.00-19.00 sec 35.7 MBytes 300 Mbits/sec
[ 4] 19.00-20.00 sec 35.8 MBytes 300 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-20.00 sec 702 MBytes 294 Mbits/sec 5662 sender
[ 4] 0.00-20.00 sec 702 MBytes 294 Mbits/sec receiver
iperf Done.
All right around the 300Mb/s range I’d expect using the USB NIC.
For the final bit of oddness, if I run iperf from the 4k+ to the NUC on the same 5 port switch I can consistently get full gigabit throughput on run after run after run.
In case it helps here are system logs - https://paste.osmc.tv/uluvuwogom
I believe I’ve tested and validated every piece of hardware and software in my setup and the only common issue is the 4k+, except when it talks to the NUC on the same local switch. I am truly baffled. The only thing I haven’t yet tested is reinstalling the OS on the 4k+ which I will even though I can’t think of a reason why it would matter.
Is there anything else that I’ve missed here?