netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* s2io: packet reordering with 2.6.25.4
@ 2008-06-26  0:11 Tom Quetchenbach
  2008-06-26  0:36 ` Ramkrishna Vepa
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Tom Quetchenbach @ 2008-06-26  0:11 UTC (permalink / raw)
  To: netdev; +Cc: ram.vepa, santosh.rastapur, sivakumar.subramani,
	sreenivasa.honnur

We've been encountering some packet reordering with our Neterion 10
Gigabit Ethernet-SR cards using the s2io driver in linux 2.6.25.4.

We have a WAN testbed with the Neterion cards in two dual-processor AMD
Opteron machines; when the machines are connected back-to-back we start
to encounter reordering when sending UDP traffic at over 500 Mbit/s.
(This is synthetic traffic generated with iperf, which reports how many
datagrams are received out-of-order.)

We also see the problem when sending iperf TCP traffic from a machine
with an e1000 gigabit card to the Neterion card via a Cisco 7609 router.
It seems to be related to the burstiness of the traffic, as inserting an
intermediate 2.5Gbit/s POS link seems to reduce the reordering, and
inserting a gigabit ethernet link eliminates it.

We see reordering with 64-bit and 32-bit kernels, but possibly more with
the 32-bit kernel.

Is this a known issue? Is there anything that I can do to debug it
further? (I'm fairly familiar with the Linux TCP stack, but pretty much
a newbie when it comes to debugging network device drivers.)

Thanks, and let me know if there's anything I can do to help debug,
-Tom

Some possibly relevant information:

NAPI is enabled; LRO is disabled. The s2io module is loaded with default
settings.

lspci, .config, and some other info are available here:
http://wil-ns.cs.caltech.edu/~quetchen/s2io-reordering/

After loading the s2io module, dmesg output is:
PM: Writing back config space on device 0000:03:01.0 at offset 1 (was
2300142, writing 2300146)
eth2: Enabling MSIX failed
eth2: MSI-X requested but failed to enable
Copyright(c) 2002-2007 Neterion Inc.
eth2: Neterion 10 Gigabit Ethernet-SR PCI-X 2.0 DDR Adapter (rev 2)
eth2: Driver version 2.0.26.22
eth2: MAC ADDR: 00:0c:fc:00:0d:22
SERIAL NUMBER: SXT0541048
eth2: Device is on 64 bit 133MHz PCIX(M1) bus
eth2: 1-Buffer receive mode enabled
eth2: Interrupt type INTA
eth2: Link down

Here's a sample of the output we see from iperf:
[quetchen@fast-2 ~]$ iperf -usi1 -w10M
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 9.54 MByte (WARNING: requested 10.0 MByte)
------------------------------------------------------------
[  3] local 10.4.72.2 port 5001 connected with 10.4.72.3 port 42532
[  3]  0.0- 1.0 sec    279 MBytes  2.34 Gbits/sec  0.004 ms   65/198856
[  3]  0.0- 1.0 sec  65 datagrams received out-of-order
[  3]  1.0- 2.0 sec    278 MBytes  2.33 Gbits/sec  0.004 ms   60/198413
[  3]  1.0- 2.0 sec  60 datagrams received out-of-order
[  3]  2.0- 3.0 sec    279 MBytes  2.34 Gbits/sec  0.004 ms   87/199063
[  3]  2.0- 3.0 sec  87 datagrams received out-of-order
[  3]  3.0- 4.0 sec    279 MBytes  2.34 Gbits/sec  0.004 ms   50/198882
[  3]  3.0- 4.0 sec  50 datagrams received out-of-order
[  3]  4.0- 5.0 sec    276 MBytes  2.32 Gbits/sec  0.004 ms    0/197179
[  3]  5.0- 6.0 sec    270 MBytes  2.27 Gbits/sec  0.001 ms  127/192705
[  3]  5.0- 6.0 sec  127 datagrams received out-of-order
[  3]  6.0- 7.0 sec    279 MBytes  2.34 Gbits/sec  0.001 ms   71/198909
[  3]  6.0- 7.0 sec  71 datagrams received out-of-order
[  3]  7.0- 8.0 sec    277 MBytes  2.32 Gbits/sec  0.003 ms   18/197584
[  3]  7.0- 8.0 sec  18 datagrams received out-of-order
[  3]  8.0- 9.0 sec    280 MBytes  2.35 Gbits/sec  0.015 ms   41/199648
[  3]  8.0- 9.0 sec  41 datagrams received out-of-order
[  3]  0.0-10.0 sec  2.71 GBytes  2.33 Gbits/sec  0.002 ms  519/1979857
[  3]  0.0-10.0 sec  520 datagrams received out-of-order

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: s2io: packet reordering with 2.6.25.4
  2008-06-26  0:11 s2io: packet reordering with 2.6.25.4 Tom Quetchenbach
@ 2008-06-26  0:36 ` Ramkrishna Vepa
  2008-06-26  1:27 ` David Miller
  2008-06-26  8:28 ` Jarek Poplawski
  2 siblings, 0 replies; 6+ messages in thread
From: Ramkrishna Vepa @ 2008-06-26  0:36 UTC (permalink / raw)
  To: Tom Quetchenbach, netdev
  Cc: Rastapur Santosh, Sivakumar Subramani, Sreenivasa Honnur,
	Peter Phan

Tom,

We have tested udp traffic on other kernel versions and did not observe
this problem. We will reproduce this problem in our lab and let you
know.

Alternatively, you are welcome to download the driver on our website and
try.

Ram
> -----Original Message-----
> From: Tom Quetchenbach [mailto:virtualphtn@gmail.com]
> Sent: Wednesday, June 25, 2008 5:11 PM
> To: netdev@vger.kernel.org
> Cc: ram.vepa@neterion.com; Rastapur Santosh; Sivakumar Subramani;
> Sreenivasa Honnur
> Subject: s2io: packet reordering with 2.6.25.4
> 
> We've been encountering some packet reordering with our Neterion 10
> Gigabit Ethernet-SR cards using the s2io driver in linux 2.6.25.4.
> 
> We have a WAN testbed with the Neterion cards in two dual-processor
AMD
> Opteron machines; when the machines are connected back-to-back we
start
> to encounter reordering when sending UDP traffic at over 500 Mbit/s.
> (This is synthetic traffic generated with iperf, which reports how
many
> datagrams are received out-of-order.)
> 
> We also see the problem when sending iperf TCP traffic from a machine
> with an e1000 gigabit card to the Neterion card via a Cisco 7609
router.
> It seems to be related to the burstiness of the traffic, as inserting
an
> intermediate 2.5Gbit/s POS link seems to reduce the reordering, and
> inserting a gigabit ethernet link eliminates it.
> 
> We see reordering with 64-bit and 32-bit kernels, but possibly more
with
> the 32-bit kernel.
> 
> Is this a known issue? Is there anything that I can do to debug it
> further? (I'm fairly familiar with the Linux TCP stack, but pretty
much
> a newbie when it comes to debugging network device drivers.)
> 
> Thanks, and let me know if there's anything I can do to help debug,
> -Tom
> 
> Some possibly relevant information:
> 
> NAPI is enabled; LRO is disabled. The s2io module is loaded with
default
> settings.
> 
> lspci, .config, and some other info are available here:
> http://wil-ns.cs.caltech.edu/~quetchen/s2io-reordering/
> 
> After loading the s2io module, dmesg output is:
> PM: Writing back config space on device 0000:03:01.0 at offset 1 (was
> 2300142, writing 2300146)
> eth2: Enabling MSIX failed
> eth2: MSI-X requested but failed to enable
> Copyright(c) 2002-2007 Neterion Inc.
> eth2: Neterion 10 Gigabit Ethernet-SR PCI-X 2.0 DDR Adapter (rev 2)
> eth2: Driver version 2.0.26.22
> eth2: MAC ADDR: 00:0c:fc:00:0d:22
> SERIAL NUMBER: SXT0541048
> eth2: Device is on 64 bit 133MHz PCIX(M1) bus
> eth2: 1-Buffer receive mode enabled
> eth2: Interrupt type INTA
> eth2: Link down
> 
> Here's a sample of the output we see from iperf:
> [quetchen@fast-2 ~]$ iperf -usi1 -w10M
> ------------------------------------------------------------
> Server listening on UDP port 5001
> Receiving 1470 byte datagrams
> UDP buffer size: 9.54 MByte (WARNING: requested 10.0 MByte)
> ------------------------------------------------------------
> [  3] local 10.4.72.2 port 5001 connected with 10.4.72.3 port 42532
> [  3]  0.0- 1.0 sec    279 MBytes  2.34 Gbits/sec  0.004 ms
65/198856
> [  3]  0.0- 1.0 sec  65 datagrams received out-of-order
> [  3]  1.0- 2.0 sec    278 MBytes  2.33 Gbits/sec  0.004 ms
60/198413
> [  3]  1.0- 2.0 sec  60 datagrams received out-of-order
> [  3]  2.0- 3.0 sec    279 MBytes  2.34 Gbits/sec  0.004 ms
87/199063
> [  3]  2.0- 3.0 sec  87 datagrams received out-of-order
> [  3]  3.0- 4.0 sec    279 MBytes  2.34 Gbits/sec  0.004 ms
50/198882
> [  3]  3.0- 4.0 sec  50 datagrams received out-of-order
> [  3]  4.0- 5.0 sec    276 MBytes  2.32 Gbits/sec  0.004 ms
0/197179
> [  3]  5.0- 6.0 sec    270 MBytes  2.27 Gbits/sec  0.001 ms
127/192705
> [  3]  5.0- 6.0 sec  127 datagrams received out-of-order
> [  3]  6.0- 7.0 sec    279 MBytes  2.34 Gbits/sec  0.001 ms
71/198909
> [  3]  6.0- 7.0 sec  71 datagrams received out-of-order
> [  3]  7.0- 8.0 sec    277 MBytes  2.32 Gbits/sec  0.003 ms
18/197584
> [  3]  7.0- 8.0 sec  18 datagrams received out-of-order
> [  3]  8.0- 9.0 sec    280 MBytes  2.35 Gbits/sec  0.015 ms
41/199648
> [  3]  8.0- 9.0 sec  41 datagrams received out-of-order
> [  3]  0.0-10.0 sec  2.71 GBytes  2.33 Gbits/sec  0.002 ms
519/1979857
> [  3]  0.0-10.0 sec  520 datagrams received out-of-order

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: s2io: packet reordering with 2.6.25.4
  2008-06-26  0:11 s2io: packet reordering with 2.6.25.4 Tom Quetchenbach
  2008-06-26  0:36 ` Ramkrishna Vepa
@ 2008-06-26  1:27 ` David Miller
  2008-06-26  8:28 ` Jarek Poplawski
  2 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2008-06-26  1:27 UTC (permalink / raw)
  To: virtualphtn
  Cc: netdev, ram.vepa, santosh.rastapur, sivakumar.subramani,
	sreenivasa.honnur

From: Tom Quetchenbach <virtualphtn@gmail.com>
Date: Wed, 25 Jun 2008 17:11:16 -0700

> Is this a known issue? Is there anything that I can do to debug it
> further?

Reordering can and will happen quite naturally on an SMP
system under Linux.

Our TCP stack has heurstics which are able to successfully
detect reordering and cope with it just fine.

For UDP based applications, they need to be able to properly handle
reordering.  Even in a completely controlled network configuration,
reordering by external aspects of the network is still possible, so
even if Linux never reordered packets, the UDP applications would
still need to cope with this for correct operation.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: s2io: packet reordering with 2.6.25.4
  2008-06-26  0:11 s2io: packet reordering with 2.6.25.4 Tom Quetchenbach
  2008-06-26  0:36 ` Ramkrishna Vepa
  2008-06-26  1:27 ` David Miller
@ 2008-06-26  8:28 ` Jarek Poplawski
  2008-06-26  8:44   ` Jarek Poplawski
  2 siblings, 1 reply; 6+ messages in thread
From: Jarek Poplawski @ 2008-06-26  8:28 UTC (permalink / raw)
  To: Tom Quetchenbach
  Cc: netdev, ram.vepa, santosh.rastapur, sivakumar.subramani,
	sreenivasa.honnur

Tom Quetchenbach wrote, On 06/26/2008 02:11 AM:

> We've been encountering some packet reordering with our Neterion 10
> Gigabit Ethernet-SR cards using the s2io driver in linux 2.6.25.4.

...

> Thanks, and let me know if there's anything I can do to help debug,

Out of curiosity: is there affinity set for eths' irqs or they are
balanced between cpus? (/proc/interrupts?)

Regards,
Jarek P.



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: s2io: packet reordering with 2.6.25.4
  2008-06-26  8:28 ` Jarek Poplawski
@ 2008-06-26  8:44   ` Jarek Poplawski
  2008-06-27  0:05     ` Tom Quetchenbach
  0 siblings, 1 reply; 6+ messages in thread
From: Jarek Poplawski @ 2008-06-26  8:44 UTC (permalink / raw)
  To: Tom Quetchenbach
  Cc: netdev, ram.vepa, santosh.rastapur, sivakumar.subramani,
	sreenivasa.honnur

Jarek Poplawski wrote, On 06/26/2008 10:28 AM:
...

> Out of curiosity: is there affinity set for eths' irqs or they are
> balanced between cpus? (/proc/interrupts?)

...and maybe ifconfig on TX side?

Jarek P.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: s2io: packet reordering with 2.6.25.4
  2008-06-26  8:44   ` Jarek Poplawski
@ 2008-06-27  0:05     ` Tom Quetchenbach
  0 siblings, 0 replies; 6+ messages in thread
From: Tom Quetchenbach @ 2008-06-27  0:05 UTC (permalink / raw)
  To: Jarek Poplawski
  Cc: netdev, ram.vepa, santosh.rastapur, sivakumar.subramani,
	sreenivasa.honnur

Jarek Poplawski wrote:
> 
>> Out of curiosity: is there affinity set for eths' irqs or they are
>> balanced between cpus? (/proc/interrupts?)

No affinity set, but they're not exactly balanced either:

           CPU0       CPU1
  0:         73          0   IO-APIC-edge      timer
  1:          0          2   IO-APIC-edge      i8042
  2:          0          0    XT-PIC-XT        cascade
  8:          0          1   IO-APIC-edge      rtc
 12:          0          5   IO-APIC-edge      i8042
 25:         47      53074   IO-APIC-fasteoi   eth0
 26:         21        334   IO-APIC-fasteoi   eth1
 28:        358    1280440   IO-APIC-fasteoi   eth2 Neterion 10 Gigabit
Ethernet-SR PCI-X 2.0 DDR Adapter
NMI:          0          0   Non-maskable interrupts
LOC:     227793     227721   Local timer interrupts
RES:       6483       3213   Rescheduling interrupts
CAL:         40         31   function call interrupts
TLB:       1119        105   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
SPU:          0          0   Spurious interrupts
ERR:          0

Anyhow, it looks like setting CPU affinity for the card on the receiver
(echo 1 > /proc/irq/28/smp_affinity) does eliminate the reordering, at
least with UDP at up to 2.5 Gbit/s (which is as fast as iperf can spit
out packets on this machine). So, it looks like the "mystery" is solved :-)

> 
> ...and maybe ifconfig on TX side?

eth2      Link encap:Ethernet  HWaddr 00:0C:FC:00:0D:3F
          inet addr:10.4.72.3  Bcast:10.4.72.15  Mask:255.255.255.240
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:496 (496.0 b)  TX bytes:532 (532.0 b)
          Interrupt:28

Thanks
-Tom

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-06-27  0:05 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-26  0:11 s2io: packet reordering with 2.6.25.4 Tom Quetchenbach
2008-06-26  0:36 ` Ramkrishna Vepa
2008-06-26  1:27 ` David Miller
2008-06-26  8:28 ` Jarek Poplawski
2008-06-26  8:44   ` Jarek Poplawski
2008-06-27  0:05     ` Tom Quetchenbach

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).