Заметил однажды на одном из серверов доступа, что немного растет значение RX overruns.
Выполнил несколько раз команды (где p2p1 и p2p2 — имя сетевых интерфейсов):
ifconfig p2p1 ifconfig p2p2
Увеличивалось только значение RX overruns, на 10 пакетов каждую секунду, при трафике около 2Gb/s (100 000 пакетов в секунду).
На сервере был установлен сетевой адаптер «HP NC552SFP 10Gb 2-Port Ethernet Server Adapter» с сетевым контроллером от Emulex.
Посмотрев размер максимального и текущего буфера:
ethtool -g p2p1 ethtool -g p2p2
Обнаружил, что буферы установлены на максимум, TX буфер — 4096, а максимально возможный RX буфер был только 512.
Смотрите также мою статью — Изменение TX и RX буферов сетевых интерфейсов в Linux
Посмотрев правильно ли распределены прерывания сетевой платы по ядрам процессора:
grep p2p1 /proc/interrupts
Обнаружил что у сетевого адаптера 4 IRQ прерывания максимум, и irqbalance соответственно их распределил на 4 ядра, а ядер то 24.
Проблему решил заменой сетевого адаптера на более дорогой — «665249-B21 Контроллер HP Ethernet 10Gb 2-port 560SFP+ Adapter» с сетевым контроллером Intel 82599.
После этого ошибка не наблюдалась, RX и TX буферы были 4096, а IRQ распределено на все 24 ядра.
Спустя пару дней, счетчики ошибок оставались по нулям:
p2p1 RX packets:62535001155 errors:0 dropped:0 overruns:0 frame:0 TX packets:36343078751 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:77395016742081 (77.3 TB) TX bytes:10991051263063 (10.9 TB) p2p2 RX packets:35672087256 errors:0 dropped:0 overruns:0 frame:0 TX packets:58598868464 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10996254475480 (10.9 TB) TX bytes:73378418623349 (73.3 TB)
Вероятно предыдущий сетевой адаптер был какой-то урезанной версии, так как цена была в два раза ниже, да и вообще для серьезных целей лучше использовать сетевые адаптеры с контроллером от Intel.
Смотрите также мою статью Настройка сети в Linux