netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/6 v2] ipv6: Only create RTF_CACHE route after encountering pmtu exception
@ 2015-04-28 21:07 Martin KaFai Lau
  2015-04-28 21:07 ` [PATCH net-next 1/6] ipv6: Remove external dependency on rt6i_dst and rt6i_src Martin KaFai Lau
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Martin KaFai Lau @ 2015-04-28 21:07 UTC (permalink / raw)
  To: netdev; +Cc: Hannes Frederic Sowa, Steffen Klassert, David Miller, Kernel Team

v1 -> v2:
- Move the /128 route bug fixes to another series (posted).
- Create a function for checking (rt6i_flags & (RTF_NONEXTHOP | RTF_GATEWAY)).
- Avoid shuffling the skb network_header.  Instead, change the function
  signature to take iph instead of skb.

The perf numbers do not change much since v1.

It depends on another patch series,
'ipv6: Stop /128 route from disappearing after pmtu update', which
should be applied first.

Many thanks to "Hannes Frederic Sowa <hannes@stressinduktion.org>" on
reviewing the patches and giving advice.

--Martin

~~~ start: v1 compose message (with the out-dated parts removed) ~~~

This series is to avoid creating a RTF_CACHE route whenever we are consulting
the fib6 tree with a new destination.  Instead, only create RTF_CACHE route
when we see a pmtu exception.

Out of all ipv6 RTF_CACHE routes that are created, the percentage that has a
different mtu is very small. In one of our end-user facing proxy server,
only 1k out of 80k RTF_CACHE routes have a smaller MTU.  For our DC
traffic, there is no mtu exception.

A large fib6 tree has problems like, 'ip -6 r show' takes a long time.
gc may kick in too often.  Also, when a service has restarted and a lot
of new TCP conn requests come in, it creates pressure on the tree by inserting
a lot of RTF_CACHE in a short time and it currently requires a write lock
to do that.

The first few patches are prep works to remove assumption that the
returned rt is always RTF_CACHE.

The patch 'ipv6: Only create RTF_CACHE routes after encountering pmtu exception'
do the lazy RTF_CACHE route creation.

The following patches added percpu rt to compensate the performance loss after
doing the RTF_CACHE lazy creation.

Here is some numbers of the udpflood test.  The udpflood has been
slightly modified to have a time limit instead of count limit.

A /64 via gateway route is used for the test. Each udpflood uses 10000 dst
addresses.  The dst addresses of different udpflood processes do not overlap
with each other.

# of udpflood        # of trans (patched)        # of trans (upstream)

1                    16M                          15M
10                   61M                          61M
20                   65M                          62M
40                   88M                          83M

~~~ end: v1 compose message ~~~

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2015-04-29 21:19 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-28 21:07 [PATCH net-next 0/6 v2] ipv6: Only create RTF_CACHE route after encountering pmtu exception Martin KaFai Lau
2015-04-28 21:07 ` [PATCH net-next 1/6] ipv6: Remove external dependency on rt6i_dst and rt6i_src Martin KaFai Lau
2015-04-28 21:07 ` [PATCH net-next 2/6] ipv6: Remove external dependency on rt6i_gateway and RTF_ANYCAST Martin KaFai Lau
2015-04-29  8:28   ` Julian Anastasov
2015-04-29  9:02     ` Julian Anastasov
2015-04-29 21:19     ` Martin KaFai Lau
2015-04-28 21:07 ` [PATCH net-next 3/6] ipv6: Combine rt6_alloc_cow and rt6_alloc_clone Martin KaFai Lau
2015-04-28 21:07 ` [PATCH net-next 4/6] ipv6: Only create RTF_CACHE routes after encountering pmtu exception Martin KaFai Lau
2015-04-29 11:39   ` Steffen Klassert
2015-04-29 18:31     ` Martin KaFai Lau
2015-04-28 21:07 ` [PATCH net-next 5/6] ipv6: Break up ip6_rt_copy() Martin KaFai Lau
2015-04-28 21:07 ` [PATCH net-next 6/6] ipv6: Create percpu rt6_info Martin KaFai Lau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).