mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-06 23:27:04 +02:00
CLEANUP: cfgparse: modify preprocessor guards around numa detection code
numa_detect_topology() is always define now if USE_CPU_AFFINITY is activated. For the moment, only on Linux an actual implementation is provided. For other platforms, it always return 0. This change has been made to easily add implementation of NUMA detection for other platforms. The phrasing of the documentation has also been edited to removed the mention of Linux-only on numa-cpu-mapping configuration option.
This commit is contained in:
parent
740629e296
commit
b09f4477f4
@ -1736,15 +1736,16 @@ nbthread <number>
|
||||
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
|
||||
|
@ -2212,7 +2212,9 @@ int readcfgfile(const char *file)
|
||||
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)
|
||||
{
|
||||
@ -2372,7 +2374,15 @@ static int numa_detect_topology()
|
||||
|
||||
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 :
|
||||
@ -2425,7 +2435,7 @@ int check_config_validity()
|
||||
#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
|
||||
|
Loading…
Reference in New Issue
Block a user