[PATCH] ipv4: Cache local output routes

Subsystems: networking [general], networking [ipv4/ipv6], the rest

STALE5101d

2 messages, 2 authors, 2012-08-14 · open the first message on its own page

[PATCH] ipv4: Cache local output routes

From: Yan, Zheng <hidden>
Date: 2012-08-13 06:10:01

Commit caacf05e5ad1abf causes big drop of UDP loop back performance.
The cause of the regression is that we do not cache the local output
routes. Each time we send a datagram from unconnected UDP socket,
the kernel allocates a dst_entry and adds it to the rt_uncached_list.
It creates lock contention on the rt_uncached_lock.

Reported-by: Alex Shi <redacted>
Signed-off-by: Yan, Zheng <redacted>
---
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index e4ba974..fd9ecb5 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2028,7 +2028,6 @@ struct rtable *__ip_route_output_key(struct net *net, struct flowi4 *fl4)
 		}
 		dev_out = net->loopback_dev;
 		fl4->flowi4_oif = dev_out->ifindex;
-		res.fi = NULL;
 		flags |= RTCF_LOCAL;
 		goto make_route;
 	}

Re: [PATCH] ipv4: Cache local output routes

From: David Miller <davem@davemloft.net>
Date: 2012-08-14 21:47:29

From: "Yan, Zheng" <redacted>
Date: Mon, 13 Aug 2012 14:09:59 +0800
Commit caacf05e5ad1abf causes big drop of UDP loop back performance.
The cause of the regression is that we do not cache the local output
routes. Each time we send a datagram from unconnected UDP socket,
the kernel allocates a dst_entry and adds it to the rt_uncached_list.
It creates lock contention on the rt_uncached_lock.

Reported-by: Alex Shi <redacted>
Signed-off-by: Yan, Zheng <redacted>
I was pretty sure not using 'fi' was necessary for semantic
reasons here, but I can't find any such requirement, so I've
applied this, thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help