Implement computeHostNumHardwareThreads() for FreeBSD
commitd989ffd109b2b5e7fd7c577ea549f4d1c5f5492c
authorDimitry Andric <dimitry@andric.com>
Sat, 28 Nov 2020 20:42:52 +0000 (28 21:42 +0100)
committerDimitry Andric <dimitry@andric.com>
Sat, 28 Nov 2020 23:49:39 +0000 (29 00:49 +0100)
tree346c707b3a2935aa829d2ba3c45725b59d026dd6
parentf502b14d40e751fe00afc493ef0d08f196524886
Implement computeHostNumHardwareThreads() for FreeBSD

This retrieves CPU affinity via FreeBSD's cpuset(2) API, and makes LLVM
respect affinity settings configured by the user via the cpuset(1)
command.

In particular, this allows to reduce the number of threads used on
machines with high core counts, which can interact badly with
parallelized build systems. This is particularly noticable with lld,
which spawns lots of threads even for linking e.g. hello_world!

This fix is related to PR48193, but does not adress the more fundamental
problem, which is that LLVM by default grabs as many CPUs and/or threads
as possible.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D92271
llvm/lib/Support/Unix/Threading.inc