summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python
diff options
context:
space:
mode:
authorPaolo Abeni <pabeni@redhat.com>2026-07-01 18:42:50 +0200
committerPaolo Abeni <pabeni@redhat.com>2026-07-01 18:42:51 +0200
commitd6e81529749190123aa0040626c7e5dbc20fdc9a (patch)
tree053a21d0e21a05b6a5e07202fd8cedb08da3021f /tools/perf/scripts/python
parent66c84c6d8b99783aa7dedba18f9a109ed06cc3bc (diff)
parentffc8a4b9ad2bdee41a207aaf546eef6ee3f19a2c (diff)
Merge branch 'net-fib_rules-rtnl-less-rtm_newrule-and-rtm_delrule'
Kuniyuki Iwashima says: ==================== net: fib_rules: RTNL-less RTM_NEWRULE and RTM_DELRULE. RTM_NEWRULE and RTM_DELRULE acquire rtnl_net_lock(), but this is only for fib_unmerge() in IPv4. Since commit d954a67a7dfa ("ipv4: fib_rule: Move fib4_rules_exit() to ->exit()."), RTM_DELRULE no longer needs RTNL. fib_unmerge() is one-time event for each netns, so we only need RTNL for the first IPv4 rule. This series introduces per-fib_rules_ops mutex and drops RTNL from fib_rules code except for the first IPv4 RTM_NEWRULE. The script below creates 1K rules in parallel in 4K netns, and it got 20x/30x faster for IPv4/IPv6. #!/bin/bash N=4096 F=rules.txt for i in $(seq $N); do ip netns add ns-$i; done printf 'rule add from all table %d\n' {1..1024} > $F for v in 4 6; do echo "=== IPv${v} ===" time { for i in $(seq $N); do nsenter \ --net=/var/run/netns/ns-$i ip -$v -batch $F & done; wait; } done for i in $(seq $N); do ip netns del ns-$i; done rm -f $F Without this series: # ./test.sh === IPv4 === real 0m22.752s user 0m7.834s sys 92m46.721s === IPv6 === real 0m35.181s user 0m8.635s sys 142m30.479s With this series: # ./test.sh === IPv4 === real 0m0.918s user 0m5.675s sys 2m7.024s === IPv6 === real 0m1.214s user 0m7.917s sys 4m19.489s ==================== Link: https://patch.msgid.link/20260629181226.1929658-1-kuniyu@google.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions