複数の Intel ネットワーク カード (82571EB チップに基づく Intel EXPI9402PT) 用のドライバー e1000e を使用しています。問題は、複数のインターフェイスで最大速度 (1GB) を利用しようとすると、各インターフェイスの速度が低下し始めることです。
特定のパケットを送信するように設計されたカーネル空間に独自のドライバーがあります。次の方法でパケットを割り当てるだけです。
skb = dev_alloc_skb(packet->len);
そして彼らはそれらを次のように送ります:
result = dev->hard_start_xmit(skb,dev);
各インターフェイスには、ドライバーの独自のインスタンスがあります。
1 つのインターフェイスについては、120435948 バイト/秒が得られます。
2 つのインターフェイスの場合、61080233 バイト/秒と 60515294 バイト/秒が得られます。
3 つのインターフェイスの場合、28564020 バイト/秒、27111184 バイト/秒、27118907 バイト/秒が得られます。
原因は何ですか?hard_start_xmit 関数は再入可能ですか?