All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: kernel oops/IRQ exception when networking between many domUs
       [not found] ` <b60a57e1c8d95c01eb0c5b383b9b8e18@cl.cam.ac.uk>
@ 2005-06-06  6:42   ` Birger Toedtmann
       [not found]   ` <20050605165716.GA1231@exp-math.uni-essen.de>
  1 sibling, 0 replies; 10+ messages in thread
From: Birger Toedtmann @ 2005-06-06  6:42 UTC (permalink / raw)
  To: xen-users, xen-devel


Re-post without attachments for list readers.


Keir Fraser schrieb am Sun, Jun 05, 2005 at 05:52:13PM +0100:
> 
> On 4 Jun 2005, at 18:05, Birger Tödtmann wrote:
> 
> >Funnily, nothing happend after
> >starting the first 10-12 nodes, but after "xm create"ing one or two 
> >more
> >nodes, the system oopsed with at least some info, but sysrq gone as
> >well.  So I wrote it down on a peace of paper ;-) , hopefully someone
> >can make sense of it:
> 
> Do you have the vmlinux file? It would be useful to know where in 
> net_rx_action the crash is happening.

Apparently it is happening somewhere here:

[...]
0xc028cbe5 <net_rx_action+1135>:        test   %eax,%eax
0xc028cbe7 <net_rx_action+1137>:        je     0xc028ca82 <net_rx_action+780>
0xc028cbed <net_rx_action+1143>:        mov    %esi,%eax
0xc028cbef <net_rx_action+1145>:        shr    $0xc,%eax
0xc028cbf2 <net_rx_action+1148>:        mov    %eax,(%esp)
0xc028cbf5 <net_rx_action+1151>:        call   0xc028c4c4 <free_mfn>
0xc028cbfa <net_rx_action+1156>:        mov    $0xffffffff,%ecx
^^^^^^^^^^
0xc028cbff <net_rx_action+1161>:        jmp    0xc028ca82 <net_rx_action+780>
0xc028cc04 <net_rx_action+1166>:        call   0xc02c59fe <net_ratelimit>
0xc028cc09 <net_rx_action+1171>:        test   %eax,%eax
0xc028cc0b <net_rx_action+1173>:        jne    0xc028cc47 <net_rx_action+1233>
0xc028cc0d <net_rx_action+1175>:        mov    0xc0378b60,%eax
[...]


which is, I presume, reflected by this section within net_rx_action():


[...]
        /* Check the reassignment error code. */
        status = NETIF_RSP_OKAY;
        if ( unlikely(mcl[1].args[5] != 0) )
        {
            DPRINTK("Failed MMU update transferring to DOM%u\n", netif->domid);
            free_mfn(mdata >> PAGE_SHIFT);
            status = NETIF_RSP_ERROR;
        }
[...]


Kernel image and System.map attached.


Regards,
-- 
Birger Tödtmann
Technik der Rechnernetze, Institut für Experimentelle Mathematik und Institut 
für Informatik und Wirtschaftsinformatik, Universität Duisburg-Essen
email:btoedtmann@iem.uni-due.de skype:birger.toedtmann pgp:0x6FB166C9 icq:294947817

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

* Re: [Xen-devel] kernel oops/IRQ exception when networking between many domUs
       [not found]   ` <20050605165716.GA1231@exp-math.uni-essen.de>
@ 2005-06-06  8:23     ` Keir Fraser
  2005-06-06  8:52       ` Birger Tödtmann
  0 siblings, 1 reply; 10+ messages in thread
From: Keir Fraser @ 2005-06-06  8:23 UTC (permalink / raw)
  To: Birger Toedtmann; +Cc: doll, xen-devel, xen-users


On 5 Jun 2005, at 17:57, Birger Toedtmann wrote:

> Apparently it is happening somewhere here:
>
> [...]
> 0xc028cbe5 <net_rx_action+1135>:        test   %eax,%eax
> 0xc028cbe7 <net_rx_action+1137>:        je     0xc028ca82 
> <net_rx_action+780>
> 0xc028cbed <net_rx_action+1143>:        mov    %esi,%eax
> 0xc028cbef <net_rx_action+1145>:        shr    $0xc,%eax
> 0xc028cbf2 <net_rx_action+1148>:        mov    %eax,(%esp)
> 0xc028cbf5 <net_rx_action+1151>:        call   0xc028c4c4 <free_mfn>
> 0xc028cbfa <net_rx_action+1156>:        mov    $0xffffffff,%ecx
> ^^^^^^^^^^

Most likely the driver has tried to send a bogus page to a domU. 
Because it's bogus the transfer fails. The driver then tries to free 
the page back to Xen, but that also fails because the page is bogus. 
This confuses the driver, which then BUG()s out.

It's not at all clear where the bogus address comes from: the driver 
basically just reads the address out of an skbuff, and converts it from 
virtual to physical address. But something is obviously going wrong, 
perhaps under memory pressure. :-(

  -- Keir

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

* Re: kernel oops/IRQ exception when networking between many domUs
  2005-06-06  8:23     ` [Xen-devel] " Keir Fraser
@ 2005-06-06  8:52       ` Birger Tödtmann
  2005-06-06  8:56         ` [Xen-devel] " Birger Tödtmann
  2005-06-06  9:26         ` Keir Fraser
  0 siblings, 2 replies; 10+ messages in thread
From: Birger Tödtmann @ 2005-06-06  8:52 UTC (permalink / raw)
  To: Keir Fraser; +Cc: xen-devel, xen-users

Am Montag, den 06.06.2005, 09:23 +0100 schrieb Keir Fraser:
> On 5 Jun 2005, at 17:57, Birger Toedtmann wrote:
> 
> > Apparently it is happening somewhere here:
> >
> > [...]
> > 0xc028cbe5 <net_rx_action+1135>:        test   %eax,%eax
> > 0xc028cbe7 <net_rx_action+1137>:        je     0xc028ca82 
> > <net_rx_action+780>
> > 0xc028cbed <net_rx_action+1143>:        mov    %esi,%eax
> > 0xc028cbef <net_rx_action+1145>:        shr    $0xc,%eax
> > 0xc028cbf2 <net_rx_action+1148>:        mov    %eax,(%esp)
> > 0xc028cbf5 <net_rx_action+1151>:        call   0xc028c4c4 <free_mfn>
> > 0xc028cbfa <net_rx_action+1156>:        mov    $0xffffffff,%ecx
> > ^^^^^^^^^^
> 
> Most likely the driver has tried to send a bogus page to a domU. 
> Because it's bogus the transfer fails. The driver then tries to free 
> the page back to Xen, but that also fails because the page is bogus. 
> This confuses the driver, which then BUG()s out.

I commented out the free_mfn() and status= lines: the kernel now reports
the following after it configured the 10th domU and ~80th vif, with
approx. 20-25 bridges up.  Just an idea: the number of vifs + bridges is
somewhere around the magic 128 (NR_IRQS problem in 2.0.x!) when the
crash happens - could this hint to something?


[...]
Jun  6 10:12:14 lomin kernel: 10.2.23.8: port 2(vif10.3) entering
forwarding state
Jun  6 10:12:14 lomin kernel: 10.2.35.16: topology change detected,
propagating
Jun  6 10:12:14 lomin kernel: 10.2.35.16: port 2(vif10.4) entering
forwarding state
Jun  6 10:12:14 lomin kernel: 10.2.35.20: topology change detected,
propagating
Jun  6 10:12:14 lomin kernel: 10.2.35.20: port 2(vif10.5) entering
forwarding state
Jun  6 10:12:20 lomin kernel: c014cea4
Jun  6 10:12:20 lomin kernel:  [do_page_fault+643/1665] do_page_fault
+0x469/0x738
Jun  6 10:12:20 lomin kernel:  [<c0115720>] do_page_fault+0x469/0x738
Jun  6 10:12:20 lomin kernel:  [fixup_4gb_segment+2/12] page_fault
+0x2e/0x34
Jun  6 10:12:20 lomin kernel:  [<c0109a7e>] page_fault+0x2e/0x34
Jun  6 10:12:20 lomin kernel:  [do_page_fault+49/1665] do_page_fault
+0x217/0x738
Jun  6 10:12:20 lomin kernel:  [<c01154ce>] do_page_fault+0x217/0x738
Jun  6 10:12:20 lomin kernel:  [fixup_4gb_segment+2/12] page_fault
+0x2e/0x34
Jun  6 10:12:20 lomin kernel:  [<c0109a7e>] page_fault+0x2e/0x34
Jun  6 10:12:20 lomin kernel: PREEMPT
Jun  6 10:12:20 lomin kernel: Modules linked in: dm_snapshot pcmcia
bridge ipt_REJECT ipt_state iptable_filter ipt_MASQUERADE iptable_nat
ip_conntrack ip_tables autofs4 snd_seq snd_seq_device evdev usbhid
rfcomm l2cap bluetooth dm_mod cryptoloop snd_pcm_oss snd_mixer_oss
snd_intel8x0 snd_ac97_codec snd_pcm snd_timer snd soundcore
snd_page_alloc tun uhci_hcd usb_storage usbcore irtty_sir sir_dev
ircomm_tty ircomm irda yenta_socket rsrc_nonstatic pcmcia_core 3c59x
Jun  6 10:12:20 lomin kernel: CPU:    0
Jun  6 10:12:20 lomin kernel: EIP:    0061:[do_wp_page+622/1175]    Not
tainted VLI
Jun  6 10:12:20 lomin kernel: EIP:    0061:[<c014cea4>]    Not tainted
VLI
Jun  6 10:12:20 lomin kernel: EFLAGS: 00010206   (2.6.11.11-xen0)
Jun  6 10:12:20 lomin kernel: EIP is at handle_mm_fault+0x5d/0x222
Jun  6 10:12:20 lomin kernel: eax: 15555b18   ebx: d8788000   ecx:
00000b18   edx: 15555b18
Jun  6 10:12:20 lomin kernel: esi: dcfc3b4c   edi: dcaf5580   ebp:
d8789ee4   esp: d8789ebc
Jun  6 10:12:20 lomin kernel: ds: 0069   es: 0069   ss: 0069
Jun  6 10:12:20 lomin kernel: Process python (pid: 4670,
threadinfo=d8788000 task=de1a1520)
Jun  6 10:12:20 lomin kernel: Stack: 00000040 00000001 d40e687c d40e6874
00000006 d40e685c d8789f14 dcaf5580
Jun  6 10:12:20 lomin kernel:        dcaf55ac d40e6b1c d8789fbc c01154ce
dcaf5580 d40e6b1c b4ec6ff0 00000001
Jun  6 10:12:20 lomin kernel:        00000001 de1a1520 b4ec6ff0 00000006
d8789fc4 d8789fc4 c03405b0 00000006
Jun  6 10:12:20 lomin kernel: Call Trace:
Jun  6 10:12:20 lomin kernel:  [dump_stack+16/32] show_stack+0x80/0x96
Jun  6 10:12:20 lomin kernel:  [<c0109c51>] show_stack+0x80/0x96
Jun  6 10:12:20 lomin kernel:  [show_registers+384/457] show_registers
+0x15a/0x1d1
Jun  6 10:12:20 lomin kernel:  [<c0109de1>] show_registers+0x15a/0x1d1
Jun  6 10:12:20 lomin kernel:  [die+301/458] die+0x106/0x1c4
Jun  6 10:12:20 lomin kernel:  [<c010a001>] die+0x106/0x1c4
Jun  6 10:12:20 lomin kernel:  [do_page_fault+675/1665] do_page_fault
+0x489/0x738
Jun  6 10:12:20 lomin kernel:  [<c0115740>] do_page_fault+0x489/0x738
Jun  6 10:12:20 lomin kernel:  [fixup_4gb_segment+2/12] page_fault
+0x2e/0x34
Jun  6 10:12:20 lomin kernel:  [<c0109a7e>] page_fault+0x2e/0x34
Jun  6 10:12:20 lomin kernel:  [do_page_fault+49/1665] do_page_fault
+0x217/0x738
Jun  6 10:12:20 lomin kernel:  [<c01154ce>] do_page_fault+0x217/0x738
Jun  6 10:12:20 lomin kernel:  [fixup_4gb_segment+2/12] page_fault
+0x2e/0x34
Jun  6 10:12:20 lomin kernel:  [<c0109a7e>] page_fault+0x2e/0x34
Jun  6 10:12:20 lomin kernel: Code: 8b 47 1c c1 ea 16 83 43 14 01 8d 34
90 85 f6 0f 84 52 01 00 00 89 f2 8b 4d 10 89 f8 e8 4a d1 ff ff 85 c0 89
c2 0f 84 3c 01 00 00 <8b> 00 a8 81 75 3d 85 c0 0f 84 01 01 00 00 a8 40
0f 84 a4 00 00


> 
> It's not at all clear where the bogus address comes from: the driver 
> basically just reads the address out of an skbuff, and converts it from 
> virtual to physical address. But something is obviously going wrong, 
> perhaps under memory pressure. :-(

Where, within the domUs or dom0?  The latter has lots of memory at hand,
the domU are quite strapped of memory.  I'll try to find out...


Regards,
-- 
Birger Tödtmann
Technik der Rechnernetze, Institut für Experimentelle Mathematik
Universität Duisburg-Essen, Campus Essen email:btoedtmann@iem.uni-due.de
skype:birger.toedtmann pgp:0x6FB166C9

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

* Re: [Xen-devel] kernel oops/IRQ exception when networking between many domUs
  2005-06-06  8:52       ` Birger Tödtmann
@ 2005-06-06  8:56         ` Birger Tödtmann
  2005-06-06  9:26         ` Keir Fraser
  1 sibling, 0 replies; 10+ messages in thread
From: Birger Tödtmann @ 2005-06-06  8:56 UTC (permalink / raw)
  To: Keir Fraser; +Cc: xen-devel, xen-users

Am Montag, den 06.06.2005, 10:52 +0200 schrieb Birger Tödtmann:
[...]
> 
> I commented out the free_mfn() and status= lines: the kernel now reports
> the following after it configured the 10th domU and ~80th vif, with
> approx. 20-25 bridges up.  Just an idea: the number of vifs + bridges is

Correction: I meant 40-45 bridge devices are then up and running.

> somewhere around the magic 128 (NR_IRQS problem in 2.0.x!) when the
> crash happens - could this hint to something?
> 


-- 
Birger Tödtmann
Technik der Rechnernetze, Institut für Experimentelle Mathematik
Universität Duisburg-Essen, Campus Essen email:btoedtmann@iem.uni-due.de
skype:birger.toedtmann pgp:0x6FB166C9

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

* Re: kernel oops/IRQ exception when networking between many domUs
  2005-06-06  8:52       ` Birger Tödtmann
  2005-06-06  8:56         ` [Xen-devel] " Birger Tödtmann
@ 2005-06-06  9:26         ` Keir Fraser
  2005-06-06 12:30           ` Birger Tödtmann
  1 sibling, 1 reply; 10+ messages in thread
From: Keir Fraser @ 2005-06-06  9:26 UTC (permalink / raw)
  To: Birger Tödtmann; +Cc: xen-devel, xen-users


On 6 Jun 2005, at 09:52, Birger Tödtmann wrote:

> I commented out the free_mfn() and status= lines: the kernel now 
> reports
> the following after it configured the 10th domU and ~80th vif, with
> approx. 20-25 bridges up.  Just an idea: the number of vifs + bridges 
> is
> somewhere around the magic 128 (NR_IRQS problem in 2.0.x!) when the
> crash happens - could this hint to something?

The crashes you see with free_mfn removed will be impossible to debug 
-- things are very screwed by that point. Even the crash within 
free_mfn might be far removed from the cause of the crash, if it's due 
to memory corruption.

It's perhaps worth investigating what critical limit you might be 
hitting, and what resource it is that's limited. e.g., can you can 
create a few vifs, but connected together by some very large number of 
bridges (daisy chained together)? Or can you create a large number of 
vifs if they are connected together by just one bridge?

This kind of thing will give us an idea of where the bug might be 
lurking.

  -- Keir

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

* Re: kernel oops/IRQ exception when networking between many domUs
  2005-06-06  9:26         ` Keir Fraser
@ 2005-06-06 12:30           ` Birger Tödtmann
  2005-06-07 16:46             ` Nils Toedtmann
  2005-06-07 16:47             ` Nils Toedtmann
  0 siblings, 2 replies; 10+ messages in thread
From: Birger Tödtmann @ 2005-06-06 12:30 UTC (permalink / raw)
  To: Keir Fraser; +Cc: xen-devel, xen-users

Am Montag, den 06.06.2005, 10:26 +0100 schrieb Keir Fraser:
[...]
> > somewhere around the magic 128 (NR_IRQS problem in 2.0.x!) when the
> > crash happens - could this hint to something?
> 
> The crashes you see with free_mfn removed will be impossible to debug 
> -- things are very screwed by that point. Even the crash within 
> free_mfn might be far removed from the cause of the crash, if it's due 
> to memory corruption.
> 
> It's perhaps worth investigating what critical limit you might be 
> hitting, and what resource it is that's limited. e.g., can you can 
> create a few vifs, but connected together by some very large number of 
> bridges (daisy chained together)? Or can you create a large number of 
> vifs if they are connected together by just one bridge?

This is getting really weird - as I found out I'll enounter problems
with far fewer vifs/bridges that suspected.  I just fired up a network
with 7 nodes, all with four interfaces each connected to the same four
bridge interfaces.  The nodes can ping through the network, however
after a short time, the system (dom0) crashes as well.  This time, it
dies in net_rx_action() at a slightly different place:

[...]
 [<c02b6e15>] kfree_skbmem+0x12/0x29
 [<c02b6ed1>] __kfree_skb+0xa5/0x13f
 [<c028c9b3>] net_rx_action+0x23d/0x4df
[...]

Funnily, I cannot reproduce this with 5 nodes (domUs) running.  I'm a
bit unsure where to go from here...  Maybe I should try a different
machine for further testing.


Regards
-- 
Birger Tödtmann
Technik der Rechnernetze, Institut für Experimentelle Mathematik
Universität Duisburg-Essen, Campus Essen email:btoedtmann@iem.uni-due.de
skype:birger.toedtmann pgp:0x6FB166C9

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

* Re: kernel oops/IRQ exception when networking between many domUs
  2005-06-06 12:30           ` Birger Tödtmann
@ 2005-06-07 16:46             ` Nils Toedtmann
  2005-06-07 16:47             ` Nils Toedtmann
  1 sibling, 0 replies; 10+ messages in thread
From: Nils Toedtmann @ 2005-06-07 16:46 UTC (permalink / raw)
  To: Birger Tödtmann; +Cc: xen-devel

Am Montag, den 06.06.2005, 14:30 +0200 schrieb Birger Tödtmann: 
> Am Montag, den 06.06.2005, 10:26 +0100 schrieb Keir Fraser:
> [...]
> > > somewhere around the magic 128 (NR_IRQS problem in 2.0.x!) when the
> > > crash happens - could this hint to something?
> > 
> > The crashes you see with free_mfn removed will be impossible to debug 
> > -- things are very screwed by that point. Even the crash within 
> > free_mfn might be far removed from the cause of the crash, if it's due 
> > to memory corruption.
> > 
> > It's perhaps worth investigating what critical limit you might be 
> > hitting, and what resource it is that's limited. e.g., can you can 
> > create a few vifs, but connected together by some very large number of 
> > bridges (daisy chained together)? Or can you create a large number of 
> > vifs if they are connected together by just one bridge?
> 
> This is getting really weird - as I found out I'll enounter problems
> with far fewer vifs/bridges that suspected.  I just fired up a network
> with 7 nodes, all with four interfaces each connected to the same four
> bridge interfaces.  The nodes can ping through the network, however
> after a short time, the system (dom0) crashes as well.  This time, it
> dies in net_rx_action() at a slightly different place:
> 
> [...]
>  [<c02b6e15>] kfree_skbmem+0x12/0x29
>  [<c02b6ed1>] __kfree_skb+0xa5/0x13f
>  [<c028c9b3>] net_rx_action+0x23d/0x4df
> [...]
> 
> Funnily, I cannot reproduce this with 5 nodes (domUs) running.  I'm a
> bit unsure where to go from here...  Maybe I should try a different
> machine for further testing.

I can confirm this bug on AMD Athlon using xen-unstable from june 5th
(latest ChangeSet 1.1677). All testing domains run OSPF daemons which
will start talking via multicast to each other as soon as the network
connections are established.

  * 'xm create' 20 domains with 122 vifs (+ vif0.0), but that xen-
    version does not UP the vifs. Everything is fine.

  * Create 51 transfer bridges, connect the some vifs to them (not
    more than two vifs to each) UP all vifs. Now i have lo + eth0
    + veth0 + 123 vif* + 51 br* = 177 devices, all UP. 
    All transfer networks work, OSPF tables grow, everything is fine.

  * Create a 52th bridge. Connect 20 vifs to it but DOWN THEM BEFORE.
    Everything ist fine. 

  * Now UP all the vifs connected to the 52th bridge one after the
    other. More and more multicast traffic shows up. After UPing the
    9th vif, dom0 BOOOOOMs (net_rx_action, too).

Further experiments show that its seems to be the amount of traffic (and
the number of connected vifs?) which triggers the oops: with all OSPF
daemons stopped, i could UP all bridges & vifs. But when i did a flood-
broadcast ping (ping -f -b $broadcastadr) on the 52th bridge (that one
with more that two active ports), dom0 OOPSed again.

I could only reproduce that "too-much-traffic-oops" on bridges
connecting more that 10 vifs.

Would be interesting if that happens with unicast traffic, too. Have no
time left, test more tomorrow.

/nils.

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

* Re: kernel oops/IRQ exception when networking between many domUs
  2005-06-06 12:30           ` Birger Tödtmann
  2005-06-07 16:46             ` Nils Toedtmann
@ 2005-06-07 16:47             ` Nils Toedtmann
  2005-06-08 12:34               ` Nils Toedtmann
  1 sibling, 1 reply; 10+ messages in thread
From: Nils Toedtmann @ 2005-06-07 16:47 UTC (permalink / raw)
  To: Birger Tödtmann; +Cc: xen-devel

Am Montag, den 06.06.2005, 14:30 +0200 schrieb Birger Tödtmann: 
> Am Montag, den 06.06.2005, 10:26 +0100 schrieb Keir Fraser:
> [...]
> > > somewhere around the magic 128 (NR_IRQS problem in 2.0.x!) when the
> > > crash happens - could this hint to something?
> > 
> > The crashes you see with free_mfn removed will be impossible to debug 
> > -- things are very screwed by that point. Even the crash within 
> > free_mfn might be far removed from the cause of the crash, if it's due 
> > to memory corruption.
> > 
> > It's perhaps worth investigating what critical limit you might be 
> > hitting, and what resource it is that's limited. e.g., can you can 
> > create a few vifs, but connected together by some very large number of 
> > bridges (daisy chained together)? Or can you create a large number of 
> > vifs if they are connected together by just one bridge?
> 
> This is getting really weird - as I found out I'll enounter problems
> with far fewer vifs/bridges that suspected.  I just fired up a network
> with 7 nodes, all with four interfaces each connected to the same four
> bridge interfaces.  The nodes can ping through the network, however
> after a short time, the system (dom0) crashes as well.  This time, it
> dies in net_rx_action() at a slightly different place:
> 
> [...]
>  [<c02b6e15>] kfree_skbmem+0x12/0x29
>  [<c02b6ed1>] __kfree_skb+0xa5/0x13f
>  [<c028c9b3>] net_rx_action+0x23d/0x4df
> [...]
> 
> Funnily, I cannot reproduce this with 5 nodes (domUs) running.  I'm a
> bit unsure where to go from here...  Maybe I should try a different
> machine for further testing.

I can confirm this bug on AMD Athlon using xen-unstable from june 5th
(latest ChangeSet 1.1677). All testing domains run OSPF daemons which
will start talking via multicast to each other as soon as the network
connections are established.

  * 'xm create' 20 domains with 122 vifs (+ vif0.0), but that xen-
    version does not UP the vifs. Everything is fine.

  * Create 51 transfer bridges, connect the some vifs to them (not
    more than two vifs to each) UP all vifs. Now i have lo + eth0
    + veth0 + 123 vif* + 51 br* = 177 devices, all UP. 
    All transfer networks work, OSPF tables grow, everything is fine.

  * Create a 52th bridge. Connect 20 vifs to it but DOWN THEM BEFORE.
    Everything ist fine. 

  * Now UP all the vifs connected to the 52th bridge one after the
    other. More and more multicast traffic shows up. After UPing the
    9th vif, dom0 BOOOOOMs (net_rx_action, too).

Further experiments show that its seems to be the amount of traffic (and
the number of connected vifs?) which triggers the oops: with all OSPF
daemons stopped, i could UP all bridges & vifs. But when i did a flood-
broadcast ping (ping -f -b $broadcastadr) on the 52th bridge (that one
with more that two active ports), dom0 OOPSed again.

I could only reproduce that "too-much-traffic-oops" on bridges
connecting more that 10 vifs.

Would be interesting if that happens with unicast traffic, too. Have no
time left, test more tomorrow.

/nils.


ps: Shall we continue crossporting to devel+users?

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

* Re: kernel oops/IRQ exception when networking between many domUs
  2005-06-07 16:47             ` Nils Toedtmann
@ 2005-06-08 12:34               ` Nils Toedtmann
  2005-06-08 14:40                 ` Nils Toedtmann
  0 siblings, 1 reply; 10+ messages in thread
From: Nils Toedtmann @ 2005-06-08 12:34 UTC (permalink / raw)
  To: Birger Tödtmann; +Cc: xen-devel

Am Dienstag, den 07.06.2005, 18:47 +0200 schrieb Nils Toedtmann:
> Am Montag, den 06.06.2005, 14:30 +0200 schrieb Birger Tödtmann: 
> > Am Montag, den 06.06.2005, 10:26 +0100 schrieb Keir Fraser:
> > [...]
> > > > somewhere around the magic 128 (NR_IRQS problem in 2.0.x!) when the
> > > > crash happens - could this hint to something?
> > > 
> > > The crashes you see with free_mfn removed will be impossible to debug 
> > > -- things are very screwed by that point. Even the crash within 
> > > free_mfn might be far removed from the cause of the crash, if it's due 
> > > to memory corruption.
> > > 
> > > It's perhaps worth investigating what critical limit you might be 
> > > hitting, and what resource it is that's limited. e.g., can you can 
> > > create a few vifs, but connected together by some very large number of 
> > > bridges (daisy chained together)? Or can you create a large number of 
> > > vifs if they are connected together by just one bridge?
> > 
> > This is getting really weird - as I found out I'll enounter problems
> > with far fewer vifs/bridges that suspected.  I just fired up a network
> > with 7 nodes, all with four interfaces each connected to the same four
> > bridge interfaces.  The nodes can ping through the network, however
> > after a short time, the system (dom0) crashes as well.  This time, it
> > dies in net_rx_action() at a slightly different place:
> > 
> > [...]
> >  [<c02b6e15>] kfree_skbmem+0x12/0x29
> >  [<c02b6ed1>] __kfree_skb+0xa5/0x13f
> >  [<c028c9b3>] net_rx_action+0x23d/0x4df
> > [...]
> > 
> > Funnily, I cannot reproduce this with 5 nodes (domUs) running.  I'm a
> > bit unsure where to go from here...  Maybe I should try a different
> > machine for further testing.
> 
> I can confirm this bug on AMD Athlon using xen-unstable from june 5th
> (latest ChangeSet 1.1677). 
[...]

errr ... sorry for the dupe.

> Further experiments show that its seems to be the amount of traffic (and
> the number of connected vifs?) which triggers the oops: with all OSPF
> daemons stopped, i could UP all bridges & vifs. But when i did a flood-
> broadcast ping (ping -f -b $broadcastadr) on the 52th bridge (that one
> with more that two active ports), dom0 OOPSed again.
> 
> I could only reproduce that "too-much-traffic-oops" on bridges
> connecting more that 10 vifs.
> 
> Would be interesting if that happens with unicast traffic, too. Have no
> time left, test more tomorrow.

Ok, reproduced the dom0 kernel panic in a simpler situation:

* create some domUs, each having 1 interface in the same subnet
* bridge all the interfaces together (dom0 not having an ip on that
  bridge)
* trigger unicast traffic as much as you want (like unicast flood
  pings): No problem.
* Now trigger some broadcast traffic between the domUs:

    ping -i 0,1 -b 192.168.0.255

  BOOOM.


Instead, you may down all vifs first, start the flood broadcast ping in
the first domU and bring up one vif after the other (wait each time
>15sec until the bridge put the added port in forwarding state). After
bringing up 10-15 vifs, dom0 panics. 

I could _not_ reproduce this with massive unicast traffic. The problem
disappears if i set "net.ipv4.icmp_echo_ignore_broadcasts=1" in all
domains. Maybe the probem rises if to many domUs answer to broadcasts at
the same time (collisions?).

/nils.

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

* Re: kernel oops/IRQ exception when networking between many domUs
  2005-06-08 12:34               ` Nils Toedtmann
@ 2005-06-08 14:40                 ` Nils Toedtmann
  0 siblings, 0 replies; 10+ messages in thread
From: Nils Toedtmann @ 2005-06-08 14:40 UTC (permalink / raw)
  To: Birger Tödtmann; +Cc: xen-devel

Am Mittwoch, den 08.06.2005, 14:34 +0200 schrieb Nils Toedtmann:
[...] 
> Ok, reproduced the dom0 kernel panic in a simpler situation:
> 
> * create some domUs, each having 1 interface in the same subnet
> * bridge all the interfaces together (dom0 not having an ip on that
>   bridge)
> * trigger unicast traffic as much as you want (like unicast flood
>   pings): No problem.
> * Now trigger some broadcast traffic between the domUs:
> 
>     ping -i 0,1 -b 192.168.0.255
> 
>   BOOOM.
> 
> 
> Instead, you may down all vifs first, start the flood broadcast ping in
> the first domU and bring up one vif after the other (wait each time
> >15sec until the bridge put the added port in forwarding state). After
> bringing up 10-15 vifs, dom0 panics. 
> 
> I could _not_ reproduce this with massive unicast traffic. The problem
> disappears if i set "net.ipv4.icmp_echo_ignore_broadcasts=1" in all
> domains. Maybe the probem rises if to many domUs answer to broadcasts at
> the same time (collisions?).


More testing: again doing a 

  [root@domUtest01 ~]# ping -f -b 192.168.0.255

into the bridged vif-subnet. With all domains having
"net.ipv4.icmp_echo_ignore_broadcasts=1" (so noone answers the pings)
everything is fine. When i switch in the pinging domUtest01 itself (and
_only_ in that domain) to "net.ipv4.icmp_echo_ignore_broadcasts=0", dom0
immediately panics (if there are 15-20 domUs in that bridged subnet).

Another test: putting dom0's vif0.0 on the bridge too, pinging from
dom0. Then in needed (yet) all domains to have
"net.ipv4.icmp_echo_ignore_broadcasts=0" to get my oops.

The oopses happen in different places, not all contain
"net_rx_action" (all are "Fatal exception in interupt". These "dumps"
may contain typos because i copied them from monitor by hand):

  [...] 
  error_code
  kfree_skbmem
  __kfree_skb
  net_rx_action
  tasklet_action
  __do_softirq
  soft_irq
  irq_exit
  do_IRQ
  evtchn_do_upcall
  hypervisor_callback
  __wake_up
  sock_def_readable
  unix_stream_sendmsg
  sys_sendto
  sys_send
  sys_socketcall
  syscall_call

or

  [...] 
  error_code
  tasklet_action
  __do_softirq
  soft_irq
  irq_exit
  do_IRQ
  evtchn_do_upcall
  hypervisor_callback

or

  [...] 
  error_code
  tasklet_action
  __do_softirq
  soft_irq
  evtchn_do_upcall
  hypervisor_callback
  cpu_idle
  start_kernel

or

  [...] 
  error_code
  kfree_skbmem
  __kfree_skb
  net_rx_action
  tasklet_action
  __do_softirq
  soft_irq
  irq_exit
  do_IRQ
  evtchn_do_upcall
  hypervisor_callback
  __mmx_memcpy
  memcpy
  dup_task_struct
  copy_process
  do_fork
  sys_clone
  syscall_call

or

  [...] 
  error_code
  kfree_skbmem
  __kfree_skb
  net_rx_action
  tasklet_action
  __do_softirq
  soft_irq
  irq_exit
  do_IRQ
  evtchn_do_upcall
  hypervisor_callback
  __wake_up
  sock_def_readable
  unix_stream_sendmsg
  sys_sendto
  sys_send
  sys_socketcall
  syscall_call

or

  [...] 
  error_code
  kfree_skbmem
  __kfree_skb
  net_rx_action
  tasklet_action
  __do_softirq
  do_softirq
  local_bh_enable
  dev_queue_xmit
  nf_hook_slow
  ip_finish_output
  dst_output
  ip_push_pending_frames
  raw_sendmsg
  sock_sendmsg
  sys_sendmsg
  sys_socketcall
  syscall_call

and more ...

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

end of thread, other threads:[~2005-06-08 14:40 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1117904746.7507.31.camel@lomin>
     [not found] ` <b60a57e1c8d95c01eb0c5b383b9b8e18@cl.cam.ac.uk>
2005-06-06  6:42   ` kernel oops/IRQ exception when networking between many domUs Birger Toedtmann
     [not found]   ` <20050605165716.GA1231@exp-math.uni-essen.de>
2005-06-06  8:23     ` [Xen-devel] " Keir Fraser
2005-06-06  8:52       ` Birger Tödtmann
2005-06-06  8:56         ` [Xen-devel] " Birger Tödtmann
2005-06-06  9:26         ` Keir Fraser
2005-06-06 12:30           ` Birger Tödtmann
2005-06-07 16:46             ` Nils Toedtmann
2005-06-07 16:47             ` Nils Toedtmann
2005-06-08 12:34               ` Nils Toedtmann
2005-06-08 14:40                 ` Nils Toedtmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.