OPNsense Forum

Archive => 20.7 Legacy Series => Topic started by: Ypsilon on August 07, 2020, 12:35:44 pm

Title: Tunables changed for igb driver
Post by: Ypsilon on August 07, 2020, 12:35:44 pm
Hi, I'm rather new to opnsense, coming from sophos UTM, so I consider myself a beginner.
Recently I replaced my desktop nics by a i340-t4 card, so igb driver in opnsense 20.1.
I discovered that the tunables
Code: [Select]
hw.igb.txd="4096" and
Code: [Select]
hw.igb.rxd="4096" contributed in speed and stability.
In dmesg I could see that netmap applied the descriptot settings during boot.
Code: [Select]
igb0: netmap queues/slots: TX 2/4096, RX 2/4096
igb1: netmap queues/slots: TX 2/4096, RX 2/4096


A few days ago I upgraded to 20.7 and because there are major changes, like suricata 5 and bsd 12.1, it was somewhat harder to investigate issues, for example throughput being lower with IPS enabled.
During this investigation I thought it's always wise to check if certain custom settings are still being applied.
And they are not.
Apparently old descriptor settings have moved to iflib sysctl tunables. So now I have set for my two igb ports instead:

Code: [Select]
dev.igb.0.iflib.override_ntxds="4096"
dev.igb.1.iflib.override_ntxds="4096"
dev.igb.0.iflib.override_nrxds="4096"
dev.igb.1.iflib.override_nrxds="4096"

With these settings, the descriptor values are applied again to netmap.
I guess more tunables for igb have moved, so I think if you set "old" ones, you should doublecheck if they are actually applied.

P.S. In my opinion the actual current systctl tunables for igb are rather hard to find. Since bsd 12.1 the em driver is used for igb.
In the end I used a combination of the actual available values the my system displays for sysctl -a and:
https://www.freebsd.org/cgi/man.cgi?query=iflib&apropos=0&sektion=4&manpath=FreeBSD+12.1-RELEASE+and+Ports&arch=default&format=html
Title: Re: Tunables changed for igb driver
Post by: iMx on June 29, 2021, 11:23:38 am
Good catch - I think there is also some suggestions to set the queues equal to the number of cores:

Code: [Select]
dev.x.x.iflib.override_qs_enable="1"
dev.x.x.iflib.override_nrxqs="8"
dev.x.x.iflib.override_ntxqs="8"

So for 8 cores, something similar to the above. As always, YMMV.