LINUX.ORG.RU

FreeBSD, Inet Gigabit и странные ошибки


0

0

Имеется РС в качестве маршрутизатора, ксеон, две двуголовых карты,
pciconf -l -v показывает их как:

em0@pci2:1:0: class=0x020000 card=0x10118086 chip=0x10108086 rev=0x01
hdr=0 x00 vendor = 'Intel Corporation' device = '82546EB Dual Port Gigabit Ethernet Controller (Copper)' class = network subclass =
ethernet

Т.е. 4 гигабитных порта на две карты PCI 64. В режиме 100Мбит вроде бы
всё нормально (хотя про главный ифейс я не помню уже :-)), когда
главный ифейс перевели на гигабит, то с ростом трафика начались ошибки
типа:

netstat -w 1 -I em1
input (em1) output
packets errs bytes packets errs bytes colls
12862 0 3274497 11392 0 6503511 0
13425 27183 4166430 11654 0 6679570 0
13835 0 4409499 11944 0 6674627 0
12683 23999 3479012 11294 0 6548969 0
13227 0 3972377 11307 0 6141135 0
13524 24502 4429783 11475 0 6339650 0
13136 0 3923602 11720 0 6623467 0
13713 26140 4166549 11577 0 6599761 0

СТранно, что ошибок больше чем пакетов. Естественно нам пришлось
включить polling, включили для всех карт. Без поллинга нет ошибок, но
машина почти колом стоит порой. Есть подозрение, что ошибки
коррелируют с числом маленьких пакетов. Пробовали крутить всевозможные
параметры поллинга - результат почти ноль. Пробовали менять коммутор с
цыско 2950Т на какой-то 3сом, результат ноль.

Подскажите в чём может быть дело ?

В драйвере для таких интелов от линукса написано, что, мол, если у вас
есть проблемы с производительностью, то вам следует включить polling и
оставить все другие параметры по-умолчанию. ВОбщем-то мы так же сперва
и поступили: взяли последний драйвер на support.intel.com и заменили
идущий (постарше) в исходниках ядра БЗД. Вообще говорят, что РС
способен разрулить 800 килопакетов в секунду почти легко, но у нас тут
даже сотни нет. Вобщем я уже не знаю что делать :-).


Посмотрите включился ли polling на самом деле, сколько IRQ генерируется для сетевушек?

А вообще не потянут они 4x1Гбит при всем уважении.

saper ★★★★★
()
Ответ на: комментарий от saper

Это мнение знатока ? ;-). В приведённо мною нетстате нет даже 150 Мбит.

Даже PCI32 гигабитный адаптер потянет 600Мбит в пределе, на счёт килопакетов в секунду числа не знаю. ВОбщем считать можно так если что:

PCI32 сама по себе имеет 1Гбит, это 32 разрадя в шине и частота 33 МГц. Мы же имеем 64 разряда и 66 МГц (а может и больше). Т.е. теоретический предел PCI64 на частоте 66МГц составляет 4 Гигабита, знаит два такая шина всяко потянет. Там вообще дело не в этом ... я не знаю в чём. Из всех карт только одна в гигабите работает, остальные все в 100Мбит. Так что всё должно работать. Косяк либо в БЗД, либо в железе. Железо просто так заменить я не имею возможности.

warm
() автор топика
Ответ на: комментарий от warm

> Даже PCI32 гигабитный адаптер потянет 600Мбит в пределе, на счёт килопакетов в секунду числа не знаю.
PCI32/33 = 132Мб/с = 1056Мбит/с, лучший адаптер может разгоняться до 850Мбит/с (вы правы, что обычный до ~600). Потери съедают разницу 1056-850.

PCI64/66 = 4224Мбит/с

Когда на шине устройств много потери растут, они также существенно зависят от значения латентности устройства на шине.

Выяснить значения латентности и на какой частоте работает устройство позволяет lspci -vv (не знаю, покажет ли в BSD).

> Мы же имеем 64 разряда и 66 МГц (а может и больше).
Больше будет только PCI-X 100 или 133, но для этого и матплата и сетевуха должны быть такими, сетевухи 64/66 как правило могут и до 64/100 (верно для 3Com и Intel), а вот материнка - нужно смотреть руководство.

Вы таки не ответили на вопрос про кол-во IRQ и polling, кто еще использует IRQ сетевушек?

saper ★★★★★
()
Ответ на: комментарий от warm

Я не уловил BSD netstat, скажи пакеты дропаются в RX, то есть в приемной очереди? ifconfig можете привести и lspci -vv. Будем разбираться :-)

saper ★★★★★
()
Ответ на: комментарий от saper

em1@pci2:1:1:   class=0x020000 card=0x10118086 chip=0x10108086 rev=0x01 hdr=0x00
    vendor   = 'Intel Corporation'
    device   = '82546EB Dual Port Gigabit Ethernet Controller (Copper)'
    class    = network
    subclass = ethernet

Это всё, что я знаю про адаптер :-). прерываний тратится примерно 1500
штук в секунду всего и чуть меньше тысячи на этот адаптер. Это судя по
systat: vmstat, но там я не нашёл, что em0 сидит на каком-то прерывании, там вообще адаптеры сети не значаться. Все адаптеры в поллинге работают,
раньше они там точно значились :-). Может версия БЗД такая стала, что в
вмстат больше нет имён адаптеров. Я БЗД знаю значительно хуже чем линукс ...



warm
() автор топика

sysctl -a | grep fast
net.inet.ip.fastforwarding: 1

А было ноль! Вот за такие под###ки я ненавижу БЗДшников :-))).
Всё стало нормально, во всяком случае пока я ошибок не видел.

Лучше бы там был линукс.
Му-га-га :-)))

warm
() автор топика
Ответ на: комментарий от warm

Не знаю, вопрос не ко мне :-) Думаю пересобирать придется или параметры модулю, если они у тебя модулем подключены.

saper ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.