Вопрос по 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. Вот моя сетевуха:
С другой сетевухой всё гораздо лучше :-) , но и драйвер немного другой (igb). Можно задавать (и работает) число очередей, режим прерываний и тд, все в описании есть
С новой версией igb начали глючить все утилиты (ifstat, nload и тд), откатился на те что в ядре (2.6.31-gentoo-r6)
Вот что хотелось бы, так это распределить нагрузку по ядрам, а то сейчас получается задействовано и в первом и во втором случае по 2 интерфейса и загружены 2 ядра из 4х.
Примерно так: