aboutsummaryrefslogtreecommitdiffstats
path: root/src/vlib/threads.c
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2018-07-03 17:24:45 +0200
committerDave Barach <openvpp@barachs.net>2018-07-03 18:41:57 +0000
commit7752b39af3b4d99e6ff649ec7c294ad56665b1f9 (patch)
tree0e01a568f7ac1161c8ae28fde90e7bb4fadab647 /src/vlib/threads.c
parent6b1cdd3a2050ed9eb79817a01ca311915edf5d9e (diff)
Set main thread affinity before main heap is allocated
Change-Id: I524909570fc1736f51fd437d6d30566c461139bd Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vlib/threads.c')
-rw-r--r--src/vlib/threads.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/vlib/threads.c b/src/vlib/threads.c
index 487c501db5f..4e4f13eae86 100644
--- a/src/vlib/threads.c
+++ b/src/vlib/threads.c
@@ -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;