*/
static int numa_detect_topology()
{
- struct dirent **node_dirlist;
- int node_dirlist_size;
+ struct dirent **node_dirlist = NULL;
+ int node_dirlist_size = 0;
struct hap_cpuset active_cpus, node_cpu_set;
const char *parse_cpu_set_args[2];
/* node_cpu_set count is used as return value */
ha_cpuset_zero(&node_cpu_set);
+ /* let's ignore restricted affinity */
+ if (cpu_mask_forced || cpu_map_configured())
+ goto free_scandir_entries;
+
/* 1. count the sysfs node<X> directories */
node_dirlist = NULL;
node_dirlist_size = scandir(NUMA_DETECT_SYSTEM_SYSFS_PATH"/node", &node_dirlist, numa_filter, alphasort);
size_t len = sizeof(ndomains);
int grp, thr;
+ ha_cpuset_zero(&node_cpu_set);
+
+ /* let's ignore restricted affinity */
+ if (cpu_mask_forced || cpu_map_configured())
+ goto leave;
+
if (sysctlbyname("vm.ndomains", &ndomains, &len, NULL, 0) == -1) {
ha_notice("Cannot assess the number of CPUs domains\n");
return 0;
}
BUG_ON(ndomains > MAXMEMDOM);
- ha_cpuset_zero(&node_cpu_set);
-
if (ndomains < 2)
goto leave;
{
int numa_cores = 0;
#if defined(USE_CPU_AFFINITY)
- if (global.numa_cpu_mapping && !cpu_mask_forced && !cpu_map_configured())
+ if (global.numa_cpu_mapping)
numa_cores = numa_detect_topology();
#endif
global.nbthread = numa_cores ? numa_cores :