On Tue, Jul 28, 2015 at 09:55:52AM +0300, Ilya Maximets wrote:
> Currently pmd threads select queues in pmd_load_queues() according to
> get_n_pmd_threads_on_numa(). This behavior leads to race between pmds,
> beacause dp_netdev_set_pmds_on_numa() starts them one by one and
> current number of threads changes incrementally.
> 
> As a result we may have the following situation with 2 pmd threads:
> 
> * dp_netdev_set_pmds_on_numa()
> * pmd12 thread started. Currently only 1 pmd thread exists.
> dpif_netdev(pmd12)|INFO|Core 1 processing port 'port_1'
> dpif_netdev(pmd12)|INFO|Core 1 processing port 'port_2'
> * pmd14 thread started. 2 pmd threads exists.
> dpif_netdev|INFO|Created 2 pmd threads on numa node 0
> dpif_netdev(pmd14)|INFO|Core 2 processing port 'port_2'
> 
> We have:
> core 1 --> port 1, port 2
> core 2 --> port 2
> 
> Fix this by starting pmd threads only after all of them have
> been configured.
> 
> Cc: Daniele Di Proietto <diproiet...@vmware.com>
> Cc: Dyasly Sergey <s.dya...@samsung.com>
> Signed-off-by: Ilya Maximets <i.maxim...@samsung.com>
> ---


Looks good to me.
Acked-by: Flavio Leitner <f...@sysclose.org>


_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to