forked from OSchip/llvm-project
Use sched_getaffinity instead of std:🧵:hardware_concurrency.
The issue with std:🧵:hardware_concurrency is that it forwards
to libc and some implementations (like glibc) don't take thread
affinity into consideration.
With this change a llvm program that can execute in only 2 cores will
use 2 threads, even if the machine has 32 cores.
This makes benchmarking a lot easier, but should also help if someone
doesn't want to use all cores for compilation for example.
llvm-svn: 314810
This commit is contained in:
parent
6e182fbab4
commit
c804bf9397
|
@ -2240,8 +2240,8 @@ void MergeNoTailSection::finalizeContents() {
|
|||
// operations in the following tight loop.
|
||||
size_t Concurrency = 1;
|
||||
if (Config->Threads)
|
||||
if (int N = std::thread::hardware_concurrency())
|
||||
Concurrency = std::min<size_t>(PowerOf2Floor(N), NumShards);
|
||||
Concurrency =
|
||||
std::min<size_t>(PowerOf2Floor(hardware_concurrency()), NumShards);
|
||||
|
||||
// Add section pieces to the builders.
|
||||
parallelForEachN(0, Concurrency, [&](size_t ThreadId) {
|
||||
|
|
Loading…
Reference in New Issue