Date: Sun, 9 Apr 2023 21:35:24 GMT From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: 801fd0db28cb - stable/13 - llvm/lld: damage control threading Message-ID: <202304092135.339LZOYF081685@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=801fd0db28cb43bee27dd297b7be92a39d9dff98 commit 801fd0db28cb43bee27dd297b7be92a39d9dff98 Author: Mateusz Guzik <mjg@FreeBSD.org> AuthorDate: 2023-04-02 12:38:49 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2023-04-09 14:54:53 +0000 llvm/lld: damage control threading See the comment inside. Reviewed by: dim Differential Revision: https://reviews.freebsd.org/D39389 (cherry picked from commit 04bab189b8a54974fcd9530140e4eed6ad137f48) --- contrib/llvm-project/llvm/lib/Support/Threading.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/contrib/llvm-project/llvm/lib/Support/Threading.cpp b/contrib/llvm-project/llvm/lib/Support/Threading.cpp index 04a1a9e19428..3ac3695fa9ed 100644 --- a/contrib/llvm-project/llvm/lib/Support/Threading.cpp +++ b/contrib/llvm-project/llvm/lib/Support/Threading.cpp @@ -62,8 +62,19 @@ unsigned llvm::ThreadPoolStrategy::compute_thread_count() const { : sys::getHostNumPhysicalCores(); if (MaxThreadCount <= 0) MaxThreadCount = 1; - if (ThreadsRequested == 0) - return MaxThreadCount; + // Damage control threading. + // + // There are no heuristics to figure out how many threads makes sense to spawn, + // all while rolling with all available hw threads starts being detrimental to + // performance really early. + // + // Work around by putting a hard cap unless the user explicitly requested a certain amount. + // + // See https://discourse.llvm.org/t/avoidable-overhead-from-threading-by-default/69160 + // for more details. + if (ThreadsRequested == 0) { + return std::min(MaxThreadCount, 4); + } if (!Limit) return ThreadsRequested; return std::min((unsigned)MaxThreadCount, ThreadsRequested);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202304092135.339LZOYF081685>