Set main thread affinity before main heap is allocated
[vpp.git] / src / vlib / threads.c
index 487c501..4e4f13e 100644 (file)
@@ -337,6 +337,12 @@ vlib_thread_init (vlib_main_t * vm)
 
   avail_cpu = clib_bitmap_dup (tm->cpu_core_bitmap);
 
+  /* by default we skip core 0, unless it is the only one available */
+  if (tm->skip_cores == ~0 && clib_bitmap_count_set_bits (avail_cpu) == 1)
+    tm->skip_cores = 0;
+  else
+    tm->skip_cores = 1;
+
   /* skip cores */
   for (i = 0; i < tm->skip_cores; i++)
     {
@@ -372,13 +378,6 @@ vlib_thread_init (vlib_main_t * vm)
     {
       tm->cb.vlib_thread_set_lcore_cb (0, tm->main_lcore);
     }
-  else
-    {
-      cpu_set_t cpuset;
-      CPU_ZERO (&cpuset);
-      CPU_SET (tm->main_lcore, &cpuset);
-      pthread_setaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset);
-    }
 
   /* as many threads as stacks... */
   vec_validate_aligned (vlib_worker_threads, vec_len (vlib_thread_stacks) - 1,
@@ -1262,6 +1261,7 @@ cpu_config (vlib_main_t * vm, unformat_input_t * input)
   tm->n_thread_stacks = 1;     /* account for main thread */
   tm->sched_policy = ~0;
   tm->sched_priority = ~0;
+  tm->skip_cores = ~0;
 
   tr = tm->next;