Я использую драйвер e1000e для нескольких сетевых карт Intel (Intel EXPI9402PT, основанный на чипе 82571EB). Проблема в том, что когда я пытаюсь использовать максимальную скорость (1 ГБ) на нескольких интерфейсах, скорость на каждом интерфейсе начинает снижаться.Тот же драйвер для нескольких сетевых карт - узкое место производительности?
У меня есть собственный драйвер в пространстве ядра, предназначенный только для отправки данных пакетов. Это просто ALLOCS пакеты по:
skb = dev_alloc_skb(packet->len);
и их посылает их:
result = dev->hard_start_xmit(skb,dev);
Каждый интерфейс имеет свой собственный экземпляр драйвера.
Для одного интерфейса я получаю: 120435948 байт/сек.
Для двух интерфейсов я получаю: 61080233 байт/с и 60515294 байта/сек.
Для трех интерфейсов я получаю: 28564020 bytes/sec, 27111184 bytes/sec, 27118907 bytes/sec.
В чем может быть причина? Является ли функция hard_start_xmit реентерабельной?
У меня есть PCI-Express x4 и x8, они должны быть достаточно быстрыми. –