From: Willy Tarreau Date: Tue, 11 Mar 2025 16:14:03 +0000 (+0100) Subject: CLEANUP: thread: now remove the temporary CPU node binding code X-Git-Tag: v3.2-dev8~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aaa4080b8bd41f1eff52da99a4f3f2084f398f90;p=thirdparty%2Fhaproxy.git CLEANUP: thread: now remove the temporary CPU node binding code This is now superseded by the default "safe" cpu-policy, and every time it's used, that code was bypassed anyway since global.nbthread was set. We can now safely remove it. Note that for other policies which do not set a thread count nor further restrict CPUs (such as "none", or even "safe" when finding a single node), we continue to go through the fallback code that automatically assigns CPUs to threads and counts them. --- diff --git a/src/thread.c b/src/thread.c index 57925b989..5a2257d08 100644 --- a/src/thread.c +++ b/src/thread.c @@ -1622,43 +1622,6 @@ void thread_detect_count(void) return; } - /* Let's implement here the automatic binding to the first available - * NUMA node when thread count is not set, taskset is not used and - * no cpu-map directive is present. - */ - - if (global.numa_cpu_mapping && !global.nbthread && !cpu_mask_forced && !cpu_map_configured()) { - int first_node_id = -1; - int second_node_id = -1; - int cpu_count = 0; - - /* determine first node with usable CPUs */ - for (cpu = 0; cpu <= cpu_topo_lastcpu; cpu++) { - if (ha_cpu_topo[cpu].st & HA_CPU_F_EXCL_MASK) - continue; - - if (ha_cpu_topo[cpu].no_id >= 0) { - if (first_node_id < 0) - first_node_id = ha_cpu_topo[cpu].no_id; - else { - second_node_id = ha_cpu_topo[cpu].no_id; - break; - } - } - } - - if (second_node_id >= 0) { - /* ignore all CPUs of other nodes, and count them */ - for (cpu = 0; cpu <= cpu_topo_lastcpu; cpu++) { - if (ha_cpu_topo[cpu].no_id != first_node_id) - ha_cpu_topo[cpu].st |= HA_CPU_F_IGNORED; - else if (!(ha_cpu_topo[cpu].st & HA_CPU_F_EXCL_MASK)) - cpu_count++; - } - ha_diag_warning("Multi-socket cpu detected, automatically binding on active CPUs of '%d' (%u active cpu(s))\n", first_node_id, cpu_count); - } - } - if (!ha_cpuset_count(&cpu_map[0].thread[0])) { /* thread 1 is not mapped, no policy was applied, so we have to * count the threads ourselves.