Thread (63 messages) 63 messages, 10 authors, 2016-12-21

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;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help