On Fri, Nov 4, 2022 at 6:02 PM Adrian Moreno <[email protected]> wrote: > > Currently, things like the number of handler and revalidator threads are > calculated based on the number of available CPUs. However, this number > is considered static and only calculated once, hence ignoring events > such as cpus being hotplugged, switched on/off or affinity mask > changing. > > On the other hand, checking the number of available CPUs multiple times > per second seems like an overkill. > Affinity should not change that often and, even if it does, the impact > of destroying and recreating all the threads so often is probably a > price too expensive to pay. > > This patch makes the number of cpus be calculated every time 5 seconds > which seems a reasonable middle point. > It generates an impact in the main loop duration of <1% and a worst-case > scenario impact in throughput of < 5% [1]. > > As a result of these changes (assuming the patch is backported): > - >=2.16: a change in the cpu affinity reflects on the number of threads > in (at most) 5 seconds. > - < 2.16: a change in the cpu affinity will be reflected on > the number of threads the next time there is a call to > bridge_reconfigure() (e.g: on the next DB change), and 5 seconds > have passed. > > The difference in behavior is because on older versions the thread > number calculation was done on bridge reconfiguration while newer > versions moved this logic down to the dpif layer and is run on > dpif->run() stage. > Considering it has not been a huge problem up to today and that the > cpu change would be reflected sooner or later (e.g the user could > force a recalculation with a simple ovs-vsctl command), I think it > might be OK to leave like that. > > [1] Tested in the worst-case scenario of disabling the kernel cache > (other_config:flow-size=0), modifying ovs-vswithd's affinity so the > number of handlers go up and down every 5 seconds and calculated the > difference in netperf's ops/sec. > > Fixes: be15ec48d766 ("lib: Use a more accurate value for CPU count > (sched_getaffinity).") > Cc: [email protected] > Signed-off-by: Adrian Moreno <[email protected]>
Acked-by: Mike Pattrick <[email protected]> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
