Re: [PATCH v3] eal: restrict cores detection
From: Thomas Monjalon <hidden>
Date: 2016-09-16 14:02:02
2016-09-01 01:31, Jianfeng Tan:
This patch uses pthread_getaffinity_np() to narrow down detected cores before parsing coremask (-c), corelist (-l), and coremap (--lcores). The purpose of this patch is to leave out these core related options when DPDK applications are deployed under container env, so that users only specify core restriction as starting the instance.
[...]
quoted hunk ↗ jump to hunk
--- a/lib/librte_eal/common/eal_common_lcore.c +++ b/lib/librte_eal/common/eal_common_lcore.c@@ -57,6 +57,12 @@ rte_eal_cpu_init(void) struct rte_config *config = rte_eal_get_configuration(); unsigned lcore_id; unsigned count = 0; + rte_cpuset_t affinity_set; + pthread_t tid = pthread_self(); +
A comment is needed here to explain which errors we are checking.
quoted hunk ↗ jump to hunk
+ if (pthread_getaffinity_np(tid, sizeof(rte_cpuset_t), + &affinity_set) < 0) + CPU_ZERO(&affinity_set); /* * Parse the maximum set of logical cores, detect the subset of running@@ -70,7 +76,8 @@ rte_eal_cpu_init(void) /* in 1:1 mapping, record related cpu detected state */ lcore_config[lcore_id].detected = eal_cpu_detected(lcore_id); - if (lcore_config[lcore_id].detected == 0) { + if (lcore_config[lcore_id].detected == 0 || + !CPU_ISSET(lcore_id, &affinity_set)) { config->lcore_role[lcore_id] = ROLE_OFF; lcore_config[lcore_id].core_index = -1; continue;