When I was struggling to figure out why so many of my devices on my gigabit network were only getting 100 megabits, I learned that a lot more of my devices were on 10/100 ethernet than I expected. Including some recent purchases (TV's especially).
It took me a while because I assumed gigabit had been kind for far longer than it actually was in practice.
TV stuff doesn't tend to need more than 100Mbps, unless you're playing blu-ray 4k discs which have higher peak rates. Saving a buck or two on the SoC adds up for the manufacturer.
It is so frustrating that this can bring down the rest of the network to the lowest common denominator. I know it is the fault of a cheap switch, not the TV, but still.
Yes - I think in cases where you have a good wireless setup at home it's actually preferable to not hardwire the TV. It's easy to get better performance over wifi when the port is only 100mbps.
Recently I found my bilateral
Bandwidth was limited from the switch to host. Turns out I didn’t plug the sfp+ all the way in. Amazing it worked at all
Another example: PCIe ASPM exit latency. Fast LAN speed (because the card does not have time to go into sleep) but low internet speed (manages to enter ASPM if the host is at least 3ms away)
anyone old enough from dialup modems and RS232 to remember the trick of replacing the 16450 UART with 16550 if you were lucky enough to have it on a socket instead of soldered?
that took it from a 1-byte buffer to 16-bytes, instant speed boost
same idea going from X-modem to Y-modem for transfers, 128bytes vs 1024bytes before checksum
surprised ethernet by now doesn't constantly try to negotiate larger buffer windows
A lot of these drivers were written in a different era and the defaults are less appropriate now.
Having too few receive buffers leaves a trail in diagnostics (if you know to look for it!), having too many gives more subtle problems. But with 10G ethernet, you can get a lot of packets really quickly and the buffer default was probably set for a card doing 100M or 1G and the driver was updated to handle 10G without new defaults. Interrupt modulation is also common now, which is great for throughput, but means packets buffers will get more full.
I feel like segmentation offload is a nice idea, but weirdness always lurks in the shadows and I don't hesitate to turn it off if any weirdness appears. I haven't noticed a perf difference when I turn it off, but I also haven't run great tests.
Awesome writeup, thanks. I wasn't aware of iperf3 as a tool. This helped me confirm that the 10GbE lines I ran a while ago are in good shape.
I didn't need to change any NIC settings, but I'm on an X540 instead of an E610-XT2
Might also want to see: https://docs.pixeldrain.com/posts/2024-03-07_network_optimiz...
When I was struggling to figure out why so many of my devices on my gigabit network were only getting 100 megabits, I learned that a lot more of my devices were on 10/100 ethernet than I expected. Including some recent purchases (TV's especially).
It took me a while because I assumed gigabit had been kind for far longer than it actually was in practice.
TV stuff doesn't tend to need more than 100Mbps, unless you're playing blu-ray 4k discs which have higher peak rates. Saving a buck or two on the SoC adds up for the manufacturer.
It is so frustrating that this can bring down the rest of the network to the lowest common denominator. I know it is the fault of a cheap switch, not the TV, but still.
Yes - I think in cases where you have a good wireless setup at home it's actually preferable to not hardwire the TV. It's easy to get better performance over wifi when the port is only 100mbps.
Recently I found my bilateral Bandwidth was limited from the switch to host. Turns out I didn’t plug the sfp+ all the way in. Amazing it worked at all
Another example: PCIe ASPM exit latency. Fast LAN speed (because the card does not have time to go into sleep) but low internet speed (manages to enter ASPM if the host is at least 3ms away)
https://lore.kernel.org/intel-wired-lan/803760bf-04ff-4b23-8...
good old buffer packet size
anyone old enough from dialup modems and RS232 to remember the trick of replacing the 16450 UART with 16550 if you were lucky enough to have it on a socket instead of soldered?
that took it from a 1-byte buffer to 16-bytes, instant speed boost
same idea going from X-modem to Y-modem for transfers, 128bytes vs 1024bytes before checksum
surprised ethernet by now doesn't constantly try to negotiate larger buffer windows
A lot of these drivers were written in a different era and the defaults are less appropriate now.
Having too few receive buffers leaves a trail in diagnostics (if you know to look for it!), having too many gives more subtle problems. But with 10G ethernet, you can get a lot of packets really quickly and the buffer default was probably set for a card doing 100M or 1G and the driver was updated to handle 10G without new defaults. Interrupt modulation is also common now, which is great for throughput, but means packets buffers will get more full.
I feel like segmentation offload is a nice idea, but weirdness always lurks in the shadows and I don't hesitate to turn it off if any weirdness appears. I haven't noticed a perf difference when I turn it off, but I also haven't run great tests.