[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1355158471.27891.44.camel@edumazet-glaptop>
Date: Mon, 10 Dec 2012 08:54:31 -0800
From: Eric Dumazet <eric.dumazet@...il.com>
To: Dmitry Kravkov <dmitry@...adcom.com>
Cc: Eric Dumazet <edumazet@...gle.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: RE: ipgre rss is broken since gro
On Mon, 2012-12-10 at 11:32 +0000, Dmitry Kravkov wrote:
> CPU is not loaded at all
>
> > cat /proc/net/softnet_stat
> Please find attached.
>
> For gre interface RX and DROP statistics are advancing simultaneously (by one each ICMP request):
>
> [root@ ~]# ifconfig gre
> gre Link encap:UNSPEC HWaddr C0-A8-0A-40-73-72-83-D2-00-00-00-00-00-00-00-00
> inet addr:8.0.0.1 P-t-P:8.0.0.1 Mask:255.255.255.0
> inet6 addr: fe80::5efe:c0a8:a40/64 Scope:Link
> UP POINTOPOINT RUNNING NOARP MTU:1476 Metric:1
> RX packets:1646824 errors:0 dropped:51610 overruns:0 frame:0
> TX packets:140519 errors:1 dropped:0 overruns:0 carrier:1
> collisions:0 txqueuelen:0
> RX bytes:2357650904 (2.1 GiB) TX bytes:7309072 (6.9 MiB)
dropped:51610 so obviously one cpu is fully loaded.
I believe performance problem might come from the
skb_set_queue_mapping(skb, 0); in __skb_tunnel_rx()
So all packets are queued into a single GRO queue, instead of being
split as intended in multiple queues.
I cant find why we must clear queue_mapping, so could you try :
diff --git a/include/net/dst.h b/include/net/dst.h
index 9a78810..4cb27df 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -329,7 +329,6 @@ static inline void __skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev)
*/
if (!skb->l4_rxhash)
skb->rxhash = 0;
- skb_set_queue_mapping(skb, 0);
skb_dst_drop(skb);
nf_reset(skb);
}
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists