[ovs-dev] [PATCH v6 0/2] dpif-netlink: distribute polling to discreet handlers
Mark Gray
mark.d.gray at redhat.com
Mon Sep 7 08:37:53 UTC 2020
Currently, the channel handlers are polled globally. On some
systems, this causes a thundering herd issue where multiple
handler threads become active, only to do no work and immediately
sleep.
The approach here is to push the netlink socket channels to discreet
handler threads to process, rather than polling on every thread.
This will eliminate the need to wake multiple threads.
To check:
ip netns add left
ip netns add right
ip link add center-left type veth peer name left0 netns left
ip link add center-right type veth peer name right0 netns right
ip link set center-left up
ip link set center-right up
ip -n left ip link set left0 up
ip -n left ip addr add 172.31.110.10/24 dev left0
ip -n right ip link set right0 up
ip -n right ip addr add 172.31.110.11/24 dev right0
ovs-vsctl add-br br0
ovs-vsctl add-port br0 center-right
ovs-vsctl add-port br0 center-left
# in one terminal
perf record -e sched:sched_wakeup,irq:softirq_entry -ag
# in a separate terminal
ip netns exec left arping -I left0 -c 1 172.31.110.11
# in the perf terminal after exiting
perf script
Look for the number of 'handler' threads which were made active.
-----
v2: Oops - forgot to commit my whitespace cleanups.
v3: one port latency results as per Matteo's comments
Stock:
min/avg/max/mdev = 21.5/36.5/96.5/1.0 us
With Patch:
min/avg/max/mdev = 5.3/9.7/98.4/0.5 us
v4: Oops - first email did not send
v5: min/avg/max/mdev = 9.3/10.4/33.6/2.2 us
v6: Split out the AUTHORS patch and added a cover letter as
per Ilya's suggestion.
Fixed 0-day issues.
Aaron Conole (1):
dpif-netlink: distribute polling to discreet handlers
Mark Gray (1):
id-pool: Add interface to check if id has been allocated
lib/dpif-netlink.c | 320 +++++++++++++++++++++++++--------------------
lib/id-pool.c | 10 ++
lib/id-pool.h | 1 +
3 files changed, 189 insertions(+), 142 deletions(-)
--
2.26.2
More information about the dev
mailing list