Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1353062 > unrolled thread

[PATCH net-next v2 0/3] ipv6: per netns FIB6 walkers and garbage collector

Started byMichal Kubecek <mkubecek@suse.cz>
First post2016-03-08 14:50 +0100
Last post2016-03-08 21:20 +0100
Articles 2 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH net-next v2 0/3] ipv6: per netns FIB6 walkers and garbage collector Michal Kubecek <mkubecek@suse.cz> - 2016-03-08 14:50 +0100
    Re: [PATCH net-next v2 0/3] ipv6: per netns FIB6 walkers and  garbage collector David Miller <davem@davemloft.net> - 2016-03-08 21:20 +0100

#1353062 — [PATCH net-next v2 0/3] ipv6: per netns FIB6 walkers and garbage collector

FromMichal Kubecek <mkubecek@suse.cz>
Date2016-03-08 14:50 +0100
Subject[PATCH net-next v2 0/3] ipv6: per netns FIB6 walkers and garbage collector
Message-ID<raqbo-1xM-11@gated-at.bofh.it>
Commit 2ac3ac8f86f2 ("ipv6: prevent fib6_run_gc() contention") reduced
the risk of contention on FIB6 garbage collector lock on systems with
many CPUs. However, one of our customers can still observe heavy
contention on fib6_gc_lock which can even trigger the soft lockup
detector.

This is caused by garbage collector running in forced mode from a timer.
While there is one timer per network namespace, the instances of
fib6_run_gc() running from them are protected by one global spinlock so
that only one garbage collector can run at any moment and other
namespaces have to wait. As most relevant data structures are separated
per netns, there is little reason for garbage collectors blocking each
other.

Similar problem exists for walkers: changes in one tree do not need to
adjust (and block) walkers traversing FIB trees in other namespaces.

This series separates both the walkers infrastructure and garbage
collector so that they work independently in network namespaces.

v2: get rid of ifdef in ipv6_route_seq_setup_walk(), pass net from
callers instead

Michal Kubecek (3):
  ipv6: replace global gc_args with local variable
  ipv6: per netns fib6 walkers
  ipv6: per netns FIB garbage collection

 include/net/netns/ipv6.h |  3 ++
 net/ipv6/ip6_fib.c       | 91 +++++++++++++++++++++++++-----------------------
 2 files changed, 51 insertions(+), 43 deletions(-)

-- 
2.7.2

[toc] | [next] | [standalone]


#1353379 — Re: [PATCH net-next v2 0/3] ipv6: per netns FIB6 walkers and garbage collector

FromDavid Miller <davem@davemloft.net>
Date2016-03-08 21:20 +0100
SubjectRe: [PATCH net-next v2 0/3] ipv6: per netns FIB6 walkers and garbage collector
Message-ID<rawgO-5Tc-15@gated-at.bofh.it>
In reply to#1353062
From: Michal Kubecek <mkubecek@suse.cz>
Date: Tue,  8 Mar 2016 14:44:15 +0100 (CET)

> Commit 2ac3ac8f86f2 ("ipv6: prevent fib6_run_gc() contention") reduced
> the risk of contention on FIB6 garbage collector lock on systems with
> many CPUs. However, one of our customers can still observe heavy
> contention on fib6_gc_lock which can even trigger the soft lockup
> detector.
> 
> This is caused by garbage collector running in forced mode from a timer.
> While there is one timer per network namespace, the instances of
> fib6_run_gc() running from them are protected by one global spinlock so
> that only one garbage collector can run at any moment and other
> namespaces have to wait. As most relevant data structures are separated
> per netns, there is little reason for garbage collectors blocking each
> other.
> 
> Similar problem exists for walkers: changes in one tree do not need to
> adjust (and block) walkers traversing FIB trees in other namespaces.
> 
> This series separates both the walkers infrastructure and garbage
> collector so that they work independently in network namespaces.
> 
> v2: get rid of ifdef in ipv6_route_seq_setup_walk(), pass net from
> callers instead

Series applied, thanks.

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web