Re: Tuning NIC Performance?

From: Frank Leonhardt <freebsd-doc_at_fjl.co.uk>
Date: Mon, 17 Mar 2025 22:00:02 UTC
On 2025-03-17 18:36, Tim Daneliuk wrote:
> On 3/17/25 13:32, Frank Leonhardt wrote:
> <SNIP>
>
>> Now if you've got a well supported chip with a good driver it's 
>> probably going to be optimized anyway. Probably the only thing I'd 
>> say was worth fiddling with was the MTU - send some pings go for the 
>> highest where the packet doesn't get fragmented but you have to 
>> fiddle with the switch and so on. I guess this wasn't your question.
>>
>> Have you tried looking in the man page for the ethernet card in 
>> question? Probably "man 4 em" if it's most Intel chips. Most tuning 
>> information can be found there, but don't go monkeying around if the 
>> machine is at a data centre and you're connected through it ;-)
>>
>> Perhaps this bump will prompt an Ethernet tuning fanatic to add some 
>> more.
>
>
> Thanks, I will look into it. It does look like the Intel NIC made a 
> huge difference.
>
> The switches I have in this particular environment are unmanaged and 
> dumb so I may be
> at the limit of this system.

In my experience, for large single transfers, cheap (not too cheap) 
switches just work, and will do so at maximum line rate. For servers 
receiving a large number of packets from various hosts a the same time, 
a good card makes a lot of difference. If you think about it, a dumb 
card has to interrupt the processor when anything happens and that has 
to do the calculations and do what's needed. If the NIC can do most of 
the work in hardware you're going to win.

About eight years ago I tried a Cisco Catalyst switch programmed by a 
Cisco evangelist (you know the type) to connect two servers using 4-way 
LAGG and could transfer files at about 400Mbytes/second. Yeah! I then 
put a cheap Netgear 16-port dumb switch in place of the Catalyst and 
got... 400Mbytes/second. My point is that if you work out theoretical 
maximum transfer rate, and you're getting close in the real world, stop.

The stuff for tweaking various NICs is normally set in loader.conf. But 
check your ISP etc and get the MTU to the maximum that works. The 
tendency is to default to the normal size (~1500) to avoid fragmentation.

Regards, Frank.