net: speedup netns create/delete time
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest7 patches 13 repliesIn review
- v17 patches 3 repliesSuperseded
Patches in v2 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/7 | kobject: add kobject_uevent_net_broadcast()lib/ | +53 | 0 replies | |
| 2/7 | kobject: copy env blob in one golib/ | +1 | 0 replies | |
| 3/7 | kobject: factorize skb setup in kobject_uevent_net_broadcast()lib/ | +19 | 0 replies | |
| 4/7 | ipv6: addrlabel: per netns listinclude/ net/ | +35 | 0 replies | |
| 5/7 | tcp: batch tcp_net_metrics_exitnet/ | +9 | 0 replies | |
| 6/7 | ipv6: speedup ipv6 tunnels dismantlenet/ net/ net/ +1 more | +36 | 0 replies | |
| 7/7 | ipv4: speedup ipv6 tunnels dismantleinclude/ net/ net/ +2 more | +26 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.
Cover letter [PATCH v2 net-next 0/7] net: speedup netns create/delete time
When rate of netns creation/deletion is high enough, we observe softlockups in cleanup_net() caused by huge list of netns and way too many rcu_barrier() calls.
This patch series does some optimizations in kobject, and add batching to tunnels so that netns dismantles are less costly.
IPv6 addrlabels also get a per netns list, and tcp_metrics also benefit from batch flushing.
This gives me one order of magnitude gain. (~50 ms -> ~5 ms for one netns create/delete pair)
Tested:
for i in seq 1 40
do
(for j in seq 1 100 ; do unshare -n /bin/true >/dev/null ; done) &
done
wait ; grep net_namespace /proc/slabinfo
Before patch series :
$ time ./add_del_unshare.sh net_namespace 116 258 5504 1 2 : tunables 8 4 0 : slabdata 116 258 0
real 3m24.910s
user 0m0.747s
sys 0m43.162s
After :
$ time ./add_del_unshare.sh net_namespace 135 291 5504 1 2 : tunables 8 4 0 : slabdata 135 291 0
real 0m22.117s
user 0m0.728s
sys 0m35.328s
Eric Dumazet (7):
kobject: add kobject_uevent_net_broadcast()
kobject: copy env blob in one go
kobject: factorize skb setup in kobject_uevent_net_broadcast()
ipv6: addrlabel: per netns list
tcp: batch tcp_net_metrics_exit
ipv6: speedup ipv6 tunnels dismantle
ipv4: speedup ipv6 tunnels dismantle
include/net/ip_tunnels.h | 3 +- include/net/netns/ipv6.h | 5 +++ lib/kobject_uevent.c | 94 ++++++++++++++++++++++++++---------------------- net/ipv4/ip_gre.c | 22 +++++------- net/ipv4/ip_tunnel.c | 12 +++++-- net/ipv4/ip_vti.c | 7 ++-- net/ipv4/ipip.c | 7 ++-- net/ipv4/tcp_metrics.c | 14 +++++--- net/ipv6/addrlabel.c | 81 ++++++++++++++++------------------------- net/ipv6/ip6_gre.c | 8 +++-- net/ipv6/ip6_tunnel.c | 20 ++++++----- net/ipv6/ip6_vti.c | 23 +++++++----- net/ipv6/sit.c | 9 +++-- 13 files changed, 157 insertions(+), 148 deletions(-)
Signature · 1 line
2.14.1.690.gbb1197296e-goog