eal/windows: set worker thread affinity at init
authorPallavi Kadam <pallavi.kadam@intel.com>
Fri, 21 Jan 2022 00:17:49 +0000 (16:17 -0800)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 2 Feb 2022 22:44:05 +0000 (23:44 +0100)
Sometimes OS tries to switch the core. So, bind the lcore thread
to a fixed core.
Implement affinity call on Windows similar to Linux.

Signed-off-by: Qiao Liu <qiao.liu@intel.com>
Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
Acked-by: Narcisa Vasile <navasile@linux.microsoft.com>
Acked-by: Ranjit Menon <ranjit.menon@intel.com>
Acked-by: Tal Shnaiderman <talshn@nvidia.com>
Tested-by: Idan Hackmon <idanhac@nvidia.com>
lib/eal/windows/eal.c

index 67db7f0..ca3c41a 100644 (file)
@@ -422,6 +422,10 @@ rte_eal_init(int argc, char **argv)
                /* create a thread for each lcore */
                if (eal_thread_create(&lcore_config[i].thread_id) != 0)
                        rte_panic("Cannot create thread\n");
+               ret = pthread_setaffinity_np(lcore_config[i].thread_id,
+                       sizeof(rte_cpuset_t), &lcore_config[i].cpuset);
+               if (ret != 0)
+                       RTE_LOG(DEBUG, EAL, "Cannot set affinity\n");
        }
 
        /* Initialize services so drivers can register services during probe. */