[ovs-dev] [PATCH v4 3/3] dpif-netdev: Don't uninit emc on reload.

Ilya Maximets i.maximets at samsung.com
Fri Jul 21 12:51:42 UTC 2017


There are many reasons for reloading of pmd threads:
	* reconfiguration of one of the ports.
	* Adjusting of static_tx_qid.
	* Adding new tx/rx ports.

In many cases EMC is still useful after reload and uninit
will only lead to unnecessary upcalls/classifier lookups.

Such behaviour slows down the datapath. Uninit itself slows
down the reload path. All this factors leads to additional
unexpected latencies/drops on events not directly connected
to current PMD thread.

Lets not uninitialize emc cache on reload path.
'emc_cache_slow_sweep()' and replacements should free all
the old/unwanted entries.

Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
Acked-by: Cian Ferriter <cian.ferriter at intel.com>
Tested-by: Cian Ferriter <cian.ferriter at intel.com>
---
 lib/dpif-netdev.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index a1e8c56..74d3535 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -3810,9 +3810,9 @@ pmd_thread_main(void *f_)
     ovs_numa_thread_setaffinity_core(pmd->core_id);
     dpdk_set_lcore_id(pmd->core_id);
     poll_cnt = pmd_load_queues_and_ports(pmd, &poll_list);
+    emc_cache_init(&pmd->flow_cache);
 reload:
     pmd_alloc_static_tx_qid(pmd);
-    emc_cache_init(&pmd->flow_cache);
 
     /* List port/core affinity */
     for (i = 0; i < poll_cnt; i++) {
@@ -3866,13 +3866,13 @@ reload:
      * reloading the updated configuration. */
     dp_netdev_pmd_reload_done(pmd);
 
-    emc_cache_uninit(&pmd->flow_cache);
     pmd_free_static_tx_qid(pmd);
 
     if (!exiting) {
         goto reload;
     }
 
+    emc_cache_uninit(&pmd->flow_cache);
     free(poll_list);
     pmd_free_cached_ports(pmd);
     return NULL;
-- 
2.7.4



More information about the dev mailing list