All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wei Liu <wei.liu2@citrix.com>
To: Sander Eikelenboom <linux@eikelenboom.it>
Cc: annie li <annie.li@oracle.com>,
	Paul Durrant <Paul.Durrant@citrix.com>,
	Wei Liu <wei.liu2@citrix.com>,
	Zoltan Kiss <zoltan.kiss@citrix.com>,
	xen-devel@lists.xen.org
Subject: Re: Xen-unstable Linux 3.14-rc3 and 3.13 Network troubles "bisected"
Date: Wed, 19 Mar 2014 11:35:32 +0000	[thread overview]
Message-ID: <20140319113532.GD16807@zion.uk.xensource.com> (raw)
In-Reply-To: <1688396550.20140319001104@eikelenboom.it>

On Wed, Mar 19, 2014 at 12:11:04AM +0100, Sander Eikelenboom wrote:
[...]
> 
> >>> Before Paul's change, we always reserve very large room for an incoming
> >>> SKB. After Paul's change, we only reserve just enough room. Probably
> >>> some extra room prevents this bug being triggered.
> 
> >> [  599.970745] vif vif-7-0 vif7.0: ?!? get_next_rx_buffer before req npo->meta_prod:37 vif->rx.sring->req_prod:506387 vif->rx.req_cons:506387 vif->rx.sring->req_event:504174
> >> [  599.972487] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue !  min_slots_needed:1 vif->rx.sring->req_prod:506387 vif->rx.req_cons:506387 vif->rx.sring->req_event:506388
> >> [  600.044322] vif vif-7-0 vif7.0: ?!? get_next_rx_buffer after req npo->meta_prod:37 vif->rx.sring->req_prod:506387 vif->rx.req_cons:506388 req->gref:165543936 req->id:19 vif->rx.sring->req_event:506388
> >> [  600.081167] vif vif-7-0 vif7.0: ?!? xenvif_gop_frag_copy Me here 2  npo->meta_prod:38 vif->rx.sring->req_prod:506387 vif->rx.req_cons:506388 npo->copy_gref:165543936  npo->copy_off:0  MAX_BUFFER_OFFSET:4096 bytes:1168 size:1168 i:6 vif->rx.sring->req_event:506388 estimated_slots_needed:8
> >> [  600.118268] vif vif-7-0 vif7.0: ?!? xenvif_gop_frag_copy Me here end npo->meta_prod:38 vif->rx.sring->req_prod:506387 vif->rx.req_cons:506388 npo->copy_gref:165543936 npo->copy_off:1168  MAX_BUFFER_OFFSET:4096 bytes:1168 size:0 i:7 vif->rx.sring->req_event:506388 estimated_slots_needed:8
> >> [  600.155378] vif vif-7-0 vif7.0: ?!? xenvif_gop_skb Me here 4 npo->meta_prod:38 old_meta_prod:30 vif->rx.sring->req_prod:506387 vif->rx.req_cons:506388 gso_type:1 gso_size:1448 nr_frags:1 req->gref:570 req->id:11 estimated_slots_needed:8 i(frag): 0
> >> [  600.192438] vif vif-7-0 vif7.0: ?!? xenvif_gop_skb Me here 5 npo->meta_prod:38 old_meta_prod:30 vif->rx.sring->req_prod:506387 vif->rx.req_cons:506388 gso_type:1 gso_size:1448 nr_frags:1 req->gref:570 req->id:11 estimated_slots_needed:8
> >> [  600.229395] vif vif-7-0 vif7.0: ?!? xenvif_rx_action me here 2 ..  vif->rx.sring->req_prod:506387 vif->rx.req_cons:506388 sco->meta_slots_used:8 max_upped_gso:1 skb_is_gso(skb):1 max_slots_needed:8 j:3 is_gso:1 nr_frags:1 firstpart:1 secondpart:6 min_slots_needed:3
> >> [  600.266518] vif vif-7-0 vif7.0: ?!? xenvif_rx_action me here 1 ..  vif->rx.sring->req_prod:506387 vif->rx.req_cons:506388                         max_upped_gso:1 skb_is_gso(skb):0 max_slots_needed:1 j:4 is_gso:0 nr_frags:0 firstpart:1 secondpart:0 min_slots_needed:1
> 
> >> It seems to estimate 8 slots and need 8 slots ... however .. shouldn't the queue have been stopped before getting here ..
> 
> > *hrmm please just ignore* .. got to get some sleep i guess ..
> 
> Just went the empirical way .. and unconditionally upped the calculated "max_slots_needed" by one in "xenvif_rx_action"  just before checking the "xenvif_rx_ring_slots_available",
> this has prevented all non-fatal and fatal occurrences of "cons > prod" so far. I will leave my tests running overnight, see if it survives the pounding.
> 
> >From other net drivers i see different calculations .. seems it is kind of voodoo to determine the value .. one of which (drivers/net/ethernet/marvell/sky2.c)
> seems to unconditionally reserve a slot for both GSO and CKSUM. Don't know if that makes any sense though:
> 
> /* This is the worst case number of transmit list elements for a single skb:
>    VLAN:GSO + CKSUM + Data + skb_frags * DMA */
> #define MAX_SKB_TX_LE   (2 + (sizeof(dma_addr_t)/sizeof(u32))*(MAX_SKB_FRAGS+1))
> 

Xen network "wire" format doesn't have a CKSUM metadata type though.

> 
> 
> >>> Wei.
> 
> >>>> 
> >>>> >> The second time it does get to the code after the RING_GET_REQUEST in 'get_next_rx_buffer' and that leads to mayhem ...
> >>>> >> 
> >>>> >> So added a netdev_warn to xenvif_start_xmit for the "stop queue" case .. unfortunately it now triggers net_ratelimit at the end:
> >>>> >> 
> >>>> >> [  402.909693] vif vif-7-0 vif7.0: ?!? xenvif_start_xmit stopping queue !  min_slots_needed:7 vif->rx.sring->req_prod:189228 vif->rx.req_cons:189222
> >>>> 
> >>>> > I think xenvif_rx_ring_slots_available is doing its job. If req_prod -
> >>>> > req_cons < needed, the queue is stopeed.
> 
> >> So it seems .. most of the time .. but if i look at the calculation of "min_slots_needed" in this function it seems completely different from the one in
> >> xenvif_rx_action for max_slots_needed .. though both seem to be used for the same thing .. to calcultate how many slots the brokendown SKB would need to fit in ..
> >> So i added the calculation method from xenvif_start_xmit to xenvif_rx_action .. in the error case you see min_slots_needed was 3 .. but max_slots_needed and max_slots_used both were 8.
> 

Those are different estimations. max_slots_needed estimates the worst
case while min_slots_needed estimates the best case. When
min_slots_needed is met, netback puts the SKB into its internal queue.
xenvif_rx_action then will dequeue that packet, check max_slots_needed,
if met, break SKB down.

What I would expect is, even if they yield different values, checking
the ring availability is enough before breaking SKB down.

In your above case, max_slots_needed was met and SKB broken down. And as
you said in your empirical test, bumping max_slots_needed by 1 prevented
issues, then we might have problem calculating max_slots_needed. If you
can work out what went wrong that can be very useful.

Wei.

  reply	other threads:[~2014-03-19 11:35 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-18 21:25 Xen-unstable Linux 3.14-rc3 and 3.13 Network troubles Sander Eikelenboom
2014-02-19 11:28 ` Wei Liu
2014-02-19 11:33   ` Sander Eikelenboom
2014-02-20  9:49 ` annie li
2014-02-20 11:18   ` Sander Eikelenboom
2014-02-21  6:32     ` annie li
2014-02-26  9:14       ` Sander Eikelenboom
2014-02-26 15:11         ` Sander Eikelenboom
2014-02-27 14:18           ` Wei Liu
2014-02-27 14:43             ` Sander Eikelenboom
2014-02-27 15:15               ` Wei Liu
2014-02-27 15:26                 ` Sander Eikelenboom
2014-02-27 15:57                   ` Wei Liu
2014-03-07 10:33                     ` Sander Eikelenboom
2014-03-07 11:19                       ` Wei Liu
2014-03-07 11:55                         ` Sander Eikelenboom
2014-03-10 23:00                           ` Xen-unstable Linux 3.14-rc3 and 3.13 Network troubles "bisected" Sander Eikelenboom
2014-03-11 10:19                             ` Wei Liu
2014-03-11 10:21                               ` Sander Eikelenboom
2014-03-11 12:31                               ` Sander Eikelenboom
2014-03-11 12:38                                 ` Wei Liu
2014-03-11 12:56                                   ` Wei Liu
2014-03-11 13:00                                   ` Sander Eikelenboom
2014-03-11 15:36                                     ` Wei Liu
2014-03-11 16:28                                       ` Sander Eikelenboom
2014-03-12  1:42                                       ` Sander Eikelenboom
2014-03-12  1:50                                         ` Sander Eikelenboom
2014-03-12 11:35                                         ` Wei Liu
2014-03-12 11:45                                           ` Sander Eikelenboom
2014-03-12 12:04                                             ` Wei Liu
2014-03-12 14:23                                               ` Sander Eikelenboom
2014-03-12 14:48                                                 ` Wei Liu
2014-03-12 14:49                                                   ` Sander Eikelenboom
2014-03-12 14:59                                                     ` Wei Liu
2014-03-12 15:01                                                       ` Sander Eikelenboom
2014-03-12 15:04                                                         ` Wei Liu
2014-03-12 15:20                                                           ` Sander Eikelenboom
2014-03-12 15:45                                                             ` Wei Liu
2014-03-12 16:47                                                               ` Sander Eikelenboom
2014-03-14  9:53                                                                 ` Sander Eikelenboom
2014-03-17 10:35                                                                 ` Wei Liu
2014-03-17 22:33                                                                   ` Sander Eikelenboom
2014-03-18 12:04                                                                     ` Wei Liu
2014-03-18 15:21                                                                       ` Sander Eikelenboom
2014-03-18 16:04                                                                         ` Wei Liu
2014-03-18 20:14                                                                           ` Sander Eikelenboom
2014-03-18 21:18                                                                             ` Sander Eikelenboom
2014-03-18 23:11                                                                               ` Sander Eikelenboom
2014-03-19 11:35                                                                                 ` Wei Liu [this message]
2014-03-19 21:07                                                                                   ` Sander Eikelenboom
2014-03-21 16:49                                                                                     ` Wei Liu
2014-03-21 17:27                                                                                       ` Sander Eikelenboom
2014-03-22 18:28                                                                                         ` Sander Eikelenboom
2014-03-25 14:26                                                                                           ` Sander Eikelenboom
2014-03-25 15:15                                                                                           ` Wei Liu
2014-03-25 15:29                                                                                             ` Sander Eikelenboom
2014-03-26 11:11                                                                                               ` [Xen-devel] " Sander Eikelenboom
2014-03-26 14:44                                                                                                 ` Paul Durrant
2014-03-26 15:22                                                                                                   ` Sander Eikelenboom
2014-03-26 15:22                                                                                                   ` [Xen-devel] " Sander Eikelenboom
2014-03-26 15:50                                                                                                     ` Paul Durrant
2014-03-26 15:50                                                                                                     ` [Xen-devel] " Paul Durrant
2014-03-26 16:06                                                                                                       ` Sander Eikelenboom
2014-03-26 16:06                                                                                                       ` [Xen-devel] " Sander Eikelenboom
2014-03-26 16:25                                                                                                         ` Paul Durrant
2014-03-26 16:25                                                                                                         ` [Xen-devel] " Paul Durrant
2014-03-26 16:53                                                                                                           ` Sander Eikelenboom
2014-03-26 16:53                                                                                                           ` [Xen-devel] " Sander Eikelenboom
2014-03-26 17:16                                                                                                             ` Paul Durrant
2014-03-26 17:33                                                                                                               ` Sander Eikelenboom
2014-03-26 17:46                                                                                                                 ` Paul Durrant
2014-03-26 17:46                                                                                                                 ` [Xen-devel] " Paul Durrant
2014-03-26 18:07                                                                                                                   ` Sander Eikelenboom
2014-03-26 18:15                                                                                                                     ` Paul Durrant
2014-03-26 18:15                                                                                                                     ` [Xen-devel] " Paul Durrant
2014-03-26 18:42                                                                                                                       ` Paul Durrant
2014-03-26 18:42                                                                                                                       ` Paul Durrant
2014-03-26 20:17                                                                                                                       ` [Xen-devel] " Sander Eikelenboom
2014-03-27  9:54                                                                                                                         ` Paul Durrant
2014-03-27 10:05                                                                                                                           ` Sander Eikelenboom
2014-03-27 10:05                                                                                                                           ` [Xen-devel] " Sander Eikelenboom
2014-03-27  9:54                                                                                                                         ` Paul Durrant
2014-03-26 20:17                                                                                                                       ` Sander Eikelenboom
2014-03-26 18:07                                                                                                                   ` Sander Eikelenboom
2014-03-26 17:48                                                                                                                 ` [Xen-devel] " Paul Durrant
2014-03-26 19:57                                                                                                                   ` Sander Eikelenboom
2014-03-26 19:57                                                                                                                   ` [Xen-devel] " Sander Eikelenboom
2014-03-27  9:47                                                                                                                     ` Paul Durrant
2014-03-27  9:47                                                                                                                     ` [Xen-devel] " Paul Durrant
2014-03-27 10:00                                                                                                                       ` Sander Eikelenboom
2014-03-27 10:00                                                                                                                       ` [Xen-devel] " Sander Eikelenboom
2014-03-26 17:48                                                                                                                 ` Paul Durrant
2014-03-26 17:33                                                                                                               ` Sander Eikelenboom
2014-03-26 17:16                                                                                                             ` Paul Durrant
2014-03-26 14:44                                                                                                 ` Paul Durrant
2014-03-26 11:11                                                                                               ` Sander Eikelenboom
2014-03-26 15:10                                                                                               ` Paul Durrant
2014-03-12 15:03                                                       ` Sander Eikelenboom
2014-02-27 15:36             ` Xen-unstable Linux 3.14-rc3 and 3.13 Network troubles Roger Pau Monné
2014-02-27 15:45               ` Wei Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140319113532.GD16807@zion.uk.xensource.com \
    --to=wei.liu2@citrix.com \
    --cc=Paul.Durrant@citrix.com \
    --cc=annie.li@oracle.com \
    --cc=linux@eikelenboom.it \
    --cc=xen-devel@lists.xen.org \
    --cc=zoltan.kiss@citrix.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.