[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] xennet: skb rides the rocket: 20 slots



On Fri, 2013-01-04 at 16:28 +0000, Sander Eikelenboom wrote:
> Hi Ian,

I'm not actually the netfront maintainer. Adding Konrad. Annie too since
IIRC she was at one point looking at various buffer coalescing schemes.

> Today i fired up an old VM with a bittorrent client, trying to
> download some torrents.

How old? Which kernel?

> I seem to be hitting the unlikely case of "xennet: skb rides the
> rocket: xx slots" and this results in some dropped packets in domU, I
> don't see any warnings in dom0.
> 
> I have added some extra info, but i don't have enough knowledge if
> this could/should be prevented from happening ?

MAX_SKB_FRAGS has never, AFAIK, been as big as 19 or 20 so I'm not sure
this can have ever worked.

These SKBs seem to be pretty big (not quite 64KB), seemingly most of the
data is contained in a smallish number of frags, which suggests compound
pages and therefore a reasonably modern kernel?

This probably relates somewhat to the issues described in the
"netchannel vs MAX_SKB_FRAGS" thread last year, or at least the solution
to that would necessarily involve fixing this issue.

In the meantime you could try disabling sg and/or various offloads for
that domain's vif.

> [16798.629141] xennet: skb rides the rocket: 19 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:18 offset:106 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:4 
> page_size:4096 prot:0800
> [16800.575182] xennet: skb rides the rocket: 19 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:18 offset:2154 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:4 
> page_size:4096 prot:0800
> [16801.589166] xennet: skb rides the rocket: 20 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:19 offset:2154 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:5 
> page_size:4096 prot:0800
> [16803.279039] xennet: skb rides the rocket: 19 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:18 offset:106 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:3 
> page_size:4096 prot:0800
> [16809.973268] xennet: skb rides the rocket: 19 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:18 offset:2154 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:4 
> page_size:4096 prot:0800
> [16811.420048] xennet: skb rides the rocket: 19 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:18 offset:2154 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:6 
> page_size:4096 prot:0800
> [16814.872686] xennet: skb rides the rocket: 19 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:18 offset:106 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:5 
> page_size:4096 prot:0800
> [16815.359099] xennet: skb rides the rocket: 21 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:20 offset:2154 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:5 
> page_size:4096 prot:0800
> [16825.851906] xennet: skb rides the rocket: 20 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:19 offset:106 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:4 
> page_size:4096 prot:0800
> [16828.295083] xennet: skb rides the rocket: 19 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:18 offset:2154 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:5 
> page_size:4096 prot:0800
> [16837.386684] xennet: skb rides the rocket: 19 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:18 offset:106 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:4 
> page_size:4096 prot:0800
> [16838.609683] xennet: skb rides the rocket: 20 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:19 offset:106 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:4 
> page_size:4096 prot:0800
> [16841.783729] xennet: skb rides the rocket: 19 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:18 offset:106 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:6 
> page_size:4096 prot:0800
> [16843.841678] xennet: skb rides the rocket: 20 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:19 offset:2154 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:4 
> page_size:4096 prot:0800
> [16849.847614] xennet: skb rides the rocket: 19 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:18 offset:3690 skb_headlen:54 
> skb->len:64294, skb->data_len:64240 skb->truesize:65008 nr_frags:4 
> page_size:4096 prot:0800
> [16853.787128] xennet: skb rides the rocket: 20 slots MAX_SKB_FRAGS: 17 
> div_roundup:1 xennet_count_skb_frag_slots:19 offset:2154 skb_headlen:1622 
> skb->len:64294, skb->data_len:62672 skb->truesize:64976 nr_frags:4 
> page_size:4096 prot:0800
> 
> # ifconfig
> eth0      Link encap:Ethernet  HWaddr 00:16:3e:c4:20:46
>           inet addr:192.168.1.12  Bcast:192.168.1.255  Mask:255.255.255.0
>           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>           RX packets:9090214 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:5902090 errors:0 dropped:304 overruns:0 carrier:0
>           collisions:0 txqueuelen:1000
>           RX bytes:19757934770 (18.4 GiB)  TX bytes:16855238200 (15.6 GiB)
>           Interrupt:25
> 
> 
> 
> 
> diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
> index c26e28b..50ac403 100644
> --- a/drivers/net/xen-netfront.c
> +++ b/drivers/net/xen-netfront.c
> @@ -552,7 +552,11 @@ static int xennet_start_xmit(struct sk_buff *skb, struct 
> net_device *dev)
>                 xennet_count_skb_frag_slots(skb);
>         if (unlikely(slots > MAX_SKB_FRAGS + 1)) {
>                 net_alert_ratelimited(
> -                       "xennet: skb rides the rocket: %d slots\n", slots);
> +                       "xennet: skb rides the rocket: %d slots 
> MAX_SKB_FRAGS: %d div_roundup:%d xennet_count_skb_frag_slots:%d offset:%d 
> skb_headlen:%d skb->len:%d, skb->data_len:%d skb->truesize:%d nr_frags:%d 
> page_size:%d prot:%04x \n
> +                             slots, MAX_SKB_FRAGS,DIV_ROUND_UP(offset + len, 
> PAGE_SIZE),
> +                             xennet_count_skb_frag_slots(skb), offset, len, 
> skb->len,
> +                             skb->data_len, skb->truesize, 
> skb_shinfo(skb)->nr_frags,
> +                             PAGE_SIZE, ntohs(skb->protocol));
>                 goto drop;
>         }
> 



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.