Вопрос по e1000e

Приветствую!

У меня есть сетевые платы Intel Pro/1000 PT (82572EI), Intel Pro/1000 PT Dual Port (82571EB) и Intel Pro/1000 (82574L), последняя - встроенная сетевая в Intel Server Board S3420GPLC. Драйвер для всех - e1000e. Ядро - 2.6.30.9 vanilla, драйвер скачал с интела (e1000e-1.1.2), собираю его отдельно модулем.

У каждой из перечисленных сетевух заявлены по 2 rx и tx очереди. В исходнике драйвера есть весь необходимый код для multiqueue. Однако при инициализации драйвера он ведет себя так, как будто multiqueue есть, но выделяет MSI-X вектор только под одну очередь. Т.е. - в /proc/interrupts для, допустим, eth1, есть два прерывания - одно для eth1-Q0, другое для eth1 (на котором прерываний не возникает). Вчера гуглил c вечера до сегодняшнего раннего утра, нашел кучу людей, задающих подобные вопросы. Разработчики драйвера на такой вопрос еще год назад ответили, что, мол, прирост производительности от multiqueue незначительный, поэтому у них даже в планах нет внесения такой поддержки в драйвер. Хотя - повторюсь - в исходнике соответствующий код есть, и поведение драйвера соответствует multiqueue (иначе зачем этот цирк с eth1-Q0, ведь достаточно было бы и одного вектора, если нет второй очереди. А если есть - то должен быть и вектор для eth1-Q1).

В этой связи вопрос: никто не достиг успеха в применении multiqueue с указанными сетевыми платами? Или может, кто видел доработанные сторонними программерами драйверы e1000e? Можно, конечно, и самому попробовать, но маловато опыта, да и нет пока под рукой полигона для отладки...

Вот что у меня по плате на 82574L

cat /proc/interrupts:

38:   56057563          0          2          0   PCI-MSI-edge      eth1-Q0
39:        599          0          0          0   PCI-MSI-edge      eth1

dmesg:

e1000e 0000:03:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16     
e1000e 0000:03:00.0: setting latency timer to 64                    
0000:03:00.0: : Interrupt Mode set to 2                             
e1000e 0000:03:00.0: irq 38 for MSI/MSI-X                           
e1000e 0000:03:00.0: irq 39 for MSI/MSI-X                           
0000:03:00.0: eth1: (PCI Express:2.5GB/s:Width x1) 00:15:17:ae:25:d0
0000:03:00.0: eth1: Intel(R) PRO/1000 Network Connection            
0000:03:00.0: eth1: MAC: 4, PHY: 8, PBA No: 1010ff-0ff

ethtool -i eth1:

driver: e1000e         
version: 1.1.2-NAPI    
firmware-version: 1.9-0
bus-info: 0000:03:00.0

Спасибо за внимание.

Что то я не увидел в описании

Что то я не увидел в описании e1000e поддержку нескольких очередей... может плохо смотрел...
Более того, мне так и не удалось разделить прерывания rx и tx. Вот моя сетевуха:

0e:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06)
0e:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06)

driver: e1000e
version: 1.1.2-NAPI
firmware-version: 5.6-2
bus-info: 0000:0e:00.0

  97:     167329 1399780076     653828      15578   PCI-MSI-edge      eth0
  98:     831371      13437      13236 1467769376   PCI-MSI-edge      eth1

С другой сетевухой всё гораздо лучше :-) , но и драйвер немного другой (igb). Можно задавать (и работает) число очередей, режим прерываний и тд, все в описании есть

10:00.0 Ethernet controller: Intel Corporation 82575GB Gigabit Network Connection (rev 02)
10:00.1 Ethernet controller: Intel Corporation 82575GB Gigabit Network Connection (rev 02)
11:00.0 Ethernet controller: Intel Corporation 82575GB Gigabit Network Connection (rev 02)
11:00.1 Ethernet controller: Intel Corporation 82575GB Gigabit Network Connection (rev 02)

driver: igb
version: 1.3.16-k2
firmware-version: 1.7-7
bus-info: 0000:10:00.1

  99:     609956  409826370         11         10   PCI-MSI-edge      eth0-tx-0
 100:     632277         17         10  413127564   PCI-MSI-edge      eth0-tx-1
 101:     124214  412758755     517537        907   PCI-MSI-edge      eth0-tx-2
 102:         12  413310681          7          1   PCI-MSI-edge      eth0-tx-3
 103:     729624       2084       2037  766948322   PCI-MSI-edge      eth0-rx-0
 104:     755967  770411115      19024       1957   PCI-MSI-edge      eth0-rx-1
 105:     820065      19911       2094  768340876   PCI-MSI-edge      eth0-rx-2
 106:       1978  761809686     851801      19733   PCI-MSI-edge      eth0-rx-3
 107:          1          2          1          5   PCI-MSI-edge      eth0
 108:         19        978        531  381657295   PCI-MSI-edge      eth1-tx-0
 109:        414  381726591         25       1033   PCI-MSI-edge      eth1-tx-1
 110:    1140776          9         10  402780196   PCI-MSI-edge      eth1-tx-2
 111:        378       1011         33  381891425   PCI-MSI-edge      eth1-tx-3
 112:         22  677847160     838314          2   PCI-MSI-edge      eth1-rx-0
 113:     880478          8          5  681025463   PCI-MSI-edge      eth1-rx-1
 114:          6  681155291         17          8   PCI-MSI-edge      eth1-rx-2
 115:         21          3          7  683186324   PCI-MSI-edge      eth1-rx-3
 116:          1          8          3          0   PCI-MSI-edge      eth1

С новой версией igb начали глючить все утилиты (ifstat, nload и тд), откатился на те что в ядре (2.6.31-gentoo-r6)

Вот что хотелось бы, так это распределить нагрузку по ядрам, а то сейчас получается задействовано и в первом и во втором случае по 2 интерфейса и загружены 2 ядра из 4х.
Примерно так:

Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni, 78.4%id,  0.0%wa,  2.0%hi, 19.6%si,  0.0%st
Cpu2  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni, 66.8%id,  0.0%wa,  3.3%hi, 29.9%si,  0.0%st

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".