output of "haproxy -vv".
numa-cpu-mapping
- By default, if running on Linux, HAProxy inspects on startup the CPU topology
- of the machine. If a multi-socket machine is detected, the affinity is
- automatically calculated to run on the CPUs of a single node. This is done in
- order to not suffer from the performance penalties caused by the inter-socket
- bus latency. However, if the applied binding is non optimal on a particular
- architecture, it can be disabled with the statement 'no numa-cpu-mapping'.
- This automatic binding is also not applied if a nbthread statement is present
- in the configuration, or the affinity of the process is already specified,
- for example via the 'cpu-map' directive or the taskset utility.
+ If running on a NUMA-aware platform, HAProxy inspects on startup the CPU
+ topology of the machine. If a multi-socket machine is detected, the affinity
+ is automatically calculated to run on the CPUs of a single node. This is done
+ in order to not suffer from the performance penalties caused by the
+ inter-socket bus latency. However, if the applied binding is non optimal on a
+ particular architecture, it can be disabled with the statement 'no
+ numa-cpu-mapping'. This automatic binding is also not applied if a nbthread
+ statement is present in the configuration, or the affinity of the process is
+ already specified, for example via the 'cpu-map' directive or the taskset
+ utility.
pidfile <pidfile>
Writes PIDs of all daemons into file <pidfile> when daemon mode or writes PID
return err_code;
}
-#if defined(USE_THREAD) && defined(__linux__) && defined USE_CPU_AFFINITY
+#if defined(USE_THREAD) && defined USE_CPU_AFFINITY
+#if defined(__linux__)
+
/* filter directory name of the pattern node<X> */
static int numa_filter(const struct dirent *dir)
{
return ha_cpuset_count(&node_cpu_set);
}
-#endif /* __linux__ && USE_CPU_AFFINITY */
+
+#else
+static int numa_detect_topology()
+{
+ return 0;
+}
+
+#endif
+#endif /* USE_THREAD && USE_CPU_AFFINITY */
/*
* Returns the error code, 0 if OK, or any combination of :
#if defined(USE_THREAD)
{
int numa_cores = 0;
-#if defined(__linux__) && defined USE_CPU_AFFINITY
+#if defined(USE_CPU_AFFINITY)
if (global.numa_cpu_mapping && !thread_cpu_mask_forced())
numa_cores = numa_detect_topology();
#endif