Thread (15 messages) flat view 15 messages, 4 authors, 2012-12-11

RE: ipgre rss is broken since gro

From: Eric Dumazet <hidden>
Date: 2012-12-10 16:54:35
Subsystem: networking [general], the rest · Maintainers: "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds

On Mon, 2012-12-10 at 11:32 +0000, Dmitry Kravkov wrote:
CPU is not loaded at all 
quoted
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);
 }
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help