IGB buffer size

50 views
Skip to first unread message

Anton Gorlov

unread,
Feb 4, 2021, 3:57:21 PM2/4/21
to
Привет All!

А что нынче в 12.X отвечает за увеличение размера буфера сетевых (igb) с
дефолтных до 4к?

Привычных опций
hw.igb.txd
hw.igb.rxd

Не обнаружено..
в прочем для em аналогично (это я про If you have a custom kernel configuration
that excludes em(4) but you use igb(4), you need to re-add em)

И как нынче принято крутить ring buffer size на сетевых igb/ix ?



С уважением. Anton aka Stalker

Linux Registered User #386476
[#*TEAM:*#] [#_Злой СисОп_#] [*Heavy Metal!*] [*_Усачи_*]

Eugene Grosbein

unread,
Feb 4, 2021, 4:32:21 PM2/4/21
to
04 февр. 2021, четверг, в 23:44 NOVT, Anton Gorlov написал(а):

AG> А что нынче в 12.X отвечает за увеличение размера буфера сетевых (igb) с
AG> дефолтных до 4к?
AG> Привычных опций
AG> hw.igb.txd
AG> hw.igb.rxd
AG> Hе обнаружено..
AG> в прочем для em аналогично (это я про If you have a custom kernel
AG> configuration
AG> that excludes em(4) but you use igb(4), you need to re-add em)
AG> И как нынче принято крутить ring buffer size на сетевых igb/ix ?

Драйвера em/igb (теперь это реально один драйвер) переведены в 12
на фреймворк iflib и настройки эти документированы в man iflib,
например dev.igb.0.iflib.override_nrxds для прежнего hw.igb.rxd,
при этом значение 0 используется для отсутствия переопределения
дефолта конкретного драйвера (1024 для em/igb).

Лимит по-прежнему 4096, он определяется аппаратно.

Eugene
--
Устав от вечных упований,
Устав от радостных пиров

Anton Gorlov

unread,
Feb 5, 2021, 4:47:22 AM2/5/21
to
Привет Eugene!

05 фев 21 года (а было тогда 04:24)
Eugene Grosbein в своем письме к Anton Gorlov писал:

EG> Драйвера em/igb (теперь это реально один драйвер) переведены в 12
EG> на фреймворк iflib и настройки эти документированы в man iflib,

Да про перезд на ifliub я в курсе.. в смысле поэтому и играюсь пока что на
стенде...

EG> например dev.igb.0.iflib.override_nrxds для прежнего hw.igb.rxd,
EG> при этом значение 0 используется для отсутствия переопределения
EG> дефолта конкретного драйвера (1024 для em/igb).
EG> Лимит по-прежнему 4096, он определяется аппаратно.

А вот в мане от iflib описание override_nrxds как-то не очень коррелирует с
ring buffer size... поэтому и ступор наступил

===
override_nrxds
Override the number of RX descriptors for each queue. The value
is a comma separated list of positive integers. Some drivers
only use a single value, but others may use more. These numbers
must be powers of two, and zero means to use the default.
Individual drivers may have additional restrictions on allowable
values. Defaults to all zeros.
====

Anton Gorlov

unread,
Feb 5, 2021, 4:47:22 AM2/5/21
to
Привет Eugene!

05 фев 21 года (а было тогда 04:24)
Eugene Grosbein в своем письме к Anton Gorlov писал:

EG> Драйвера em/igb (теперь это реально один драйвер) переведены в 12
EG> на фреймворк iflib и настройки эти документированы в man iflib,

Да про перезд на ifliubя в курсе.. в смысле поэму иишграюсьпокапчто на
стенде...

EG> например dev.igb.0.iflib.override_nrxds для прежнего hw.igb.rxd,
EG> при этом значение 0 используется для отсутствия переопределения
EG> дефолта конкретного драйвера (1024 для em/igb).
EG> Лимит по-прежнему 4096, он определяется аппаратно.

А вот в мане от iflib описание override_nrxds как-то не очнеь коррелирует с

Anton Gorlov

unread,
Feb 5, 2021, 5:17:22 AM2/5/21
to
Привет Eugene!

05 фев 21 года (а было тогда 04:24)
Eugene Grosbein в своем письме к Anton Gorlov писал:

EG> Драйвера em/igb (теперь это реально один драйвер) переведены в 12
EG> на фреймворк iflib и настройки эти документированы в man iflib,
EG> например dev.igb.0.iflib.override_nrxds для прежнего hw.igb.rxd,


Кстати а как можно проверить что оно работает?

====
root@stand:~ # sysctl dev.igb.0.iflib.override_nrxds
dev.igb.0.iflib.override_nrxds: 4096
root@stand:~ # sysctl dev.igb.0.iflib.override_ntxds
dev.igb.0.iflib.override_ntxds: 4096
====

При этом sysctl dev.igb.0.debug=1 выдаёт:
====
Interface is RUNNING and ACTIVE
igb0: TX Queue 0 ------
igb0: hw tdh = 0, hw tdt = 0
igb0: TX Queue 1 ------
igb0: hw tdh = 0, hw tdt = 0
igb0: RX Queue 0 ------
igb0: hw rdh = 0, hw rdt = 128
igb0: RX Queue 1 ------
igb0: hw rdh = 0, hw rdt = 128
===

uname -a
FreeBSD stand 12.2-STABLE FreeBSD 12.2-STABLE stable/12-n232658-40a37d24a8e
GENERIC amd64

Eugene Grosbein

unread,
Feb 5, 2021, 8:32:21 AM2/5/21
to
05 февр. 2021, пятница, в 13:08 NOVT, Anton Gorlov написал(а):

AG> Кстати а как можно проверить что оно работает?
AG> ====
AG> root@stand:~ # sysctl dev.igb.0.iflib.override_nrxds
AG> dev.igb.0.iflib.override_nrxds: 4096
AG> root@stand:~ # sysctl dev.igb.0.iflib.override_ntxds
AG> dev.igb.0.iflib.override_ntxds: 4096
AG> ====

Это вообще всё имеет смысл только если у тебя гигабит трафика
фигачит регулярно и одновременно с этим CPU настолько
занят обработкой трафика (NAT, роутинг, сложный файрвол,
обработка PPP с шифрованием и т.п.), что периодически идут
дропы пакетов. Если нет дропов, то можешь вообще этим
тюнингом не заморачиваться.

Так и проверять - стало меньше дропов, значит работает.

Eugene
--
http://www.grosbein.net/papirosn.mp3
http://dadv.livejournal.com/2006/03/11/

Anton Gorlov

unread,
Feb 5, 2021, 8:52:22 AM2/5/21
to
Привет Eugene!

05 фев 21 года (а было тогда 20:19)
Eugene Grosbein в своем письме к Anton Gorlov писал:

AG>> Кстати а как можно проверить что оно работает?
AG>> ====
AG>> root@stand:~ # sysctl dev.igb.0.iflib.override_nrxds
AG>> dev.igb.0.iflib.override_nrxds: 4096
AG>> root@stand:~ # sysctl dev.igb.0.iflib.override_ntxds
AG>> dev.igb.0.iflib.override_ntxds: 4096
AG>> ====
EG> Это вообще всё имеет смысл только если у тебя гигабит трафика
EG> фигачит регулярно и одновременно с этим CPU настолько
EG> занят обработкой трафика (NAT, роутинг, сложный файрвол,
EG> обработка PPP с шифрованием и т.п.), что периодически идут
EG> дропы пакетов. Если нет дропов, то можешь вообще этим
EG> тюнингом не заморачиваться.

EG> Так и проверять - стало меньше дропов, значит работает.

Там бгп..кучка lagg,вланов и так далее по списку. Да нагрузка близка к гигу на
каждом интерфейсе.. под 600-800 в среднем

Eugene Grosbein

unread,
Feb 5, 2021, 9:27:22 AM2/5/21
to
05 февр. 2021, пятница, в 16:45 NOVT, Anton Gorlov написал(а):

AG>>> Кстати а как можно проверить что оно работает?
AG>>> ====
AG>>> root@stand:~ # sysctl dev.igb.0.iflib.override_nrxds
AG>>> dev.igb.0.iflib.override_nrxds: 4096
AG>>> root@stand:~ # sysctl dev.igb.0.iflib.override_ntxds
AG>>> dev.igb.0.iflib.override_ntxds: 4096
AG>>> ====
EG>> Это вообще всё имеет смысл только если у тебя гигабит трафика
EG>> фигачит регулярно и одновременно с этим CPU настолько
EG>> занят обработкой трафика (NAT, роутинг, сложный файрвол,
EG>> обработка PPP с шифрованием и т.п.), что периодически идут
EG>> дропы пакетов. Если нет дропов, то можешь вообще этим
EG>> тюнингом не заморачиваться.
EG>> Так и проверять - стало меньше дропов, значит работает.
AG> Там бгп..кучка lagg,вланов и так далее по списку. Да нагрузка близка к
AG> гигу на
AG> каждом интерфейсе.. под 600-800 в среднем

Рисуй графики дропов, суммарное значение по всем очередям
можно брать из вывода netstat -idn, колонка Drop.

Eugene
--
http://grosbeyn.moikrug.ru/

Anton Gorlov

unread,
Feb 14, 2021, 1:02:27 PM2/14/21
to
Привет Eugene!

05 фев 21 года (а было тогда 21:21)
Eugene Grosbein в своем письме к Anton Gorlov писал:

EG>>> Так и проверять - стало меньше дропов, значит работает.
AG>> Там бгп..кучка lagg,вланов и так далее по списку. Да нагрузка
AG>> близка к гигу на каждом интерфейсе.. под 600-800 в среднем
EG> Рисуй графики дропов, суммарное значение по всем очередям
EG> можно брать из вывода netstat -idn, колонка Drop.

Вопрос тут спорый возник... а нужны ли опции
VLAN_MTU
VLAN_HWTAGGING
VLAN_HWCSUM
VLAN_HWFILTER
VLAN_HWTSO

на роутере...если там пачки вланов?

Eugene Grosbein

unread,
Feb 15, 2021, 1:12:27 AM2/15/21
to
14 февр. 2021, воскресенье, в 20:54 NOVT, Anton Gorlov написал(а):

EG>>>> Так и проверять - стало меньше дропов, значит работает.
AG>>> Там бгп..кучка lagg,вланов и так далее по списку. Да нагрузка
AG>>> близка к гигу на каждом интерфейсе.. под 600-800 в среднем
EG>> Рисуй графики дропов, суммарное значение по всем очередям
EG>> можно брать из вывода netstat -idn, колонка Drop.
AG> Вопрос тут спорый возник... а нужны ли опции
AG> VLAN_MTU
AG> VLAN_HWTAGGING
AG> VLAN_HWCSUM
AG> VLAN_HWFILTER
AG> VLAN_HWTSO
AG> на роутере...если там пачки вланов?

TSO роутеру не нужен, так как работает на уровне TCP,
а роутер роутит уровнем ниже, IP-пакеты. Hу разве что на роутере
есть что-нибудь типа прокси, что от собственного имени
прокачивает данные по TCP.

Остальное теоретически скидывает часть нагрузки с основного CPU
на чип сетевой и если этот offload не глючит, так и пусть работает.

Иногда аппаратное вычисление контрольных сумм почему-либо глючит
и мне всегда проще его отключить, может быть зарепортив этот баг
с приложением номера версии, но разбираться до упора никогда не хотелось,
потому что в современных CPU дикие гигагерцы и разница у меня несущественна,
так как под нагрузкой у меня концентраторы PPPoE с шейпингом,
которые всё равно основным CPU делают в разы больше.

Eugene
--
Сердце - малочувствительный, мускулистый, грубый и жесткий орган.
Reply all
Reply to author
Forward
0 new messages