[PATCH] D82352: [clangd] Make background index thread count calculation clearer
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 24 15:47:48 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG3c5745cb1f3c: [clangd] Make background index thread count calculation clearer (authored by sammccall).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D82352/new/
https://reviews.llvm.org/D82352
Files:
clang-tools-extra/clangd/index/Background.cpp
clang-tools-extra/clangd/index/Background.h
clang-tools-extra/clangd/index/BackgroundRebuild.h
Index: clang-tools-extra/clangd/index/BackgroundRebuild.h
===================================================================
--- clang-tools-extra/clangd/index/BackgroundRebuild.h
+++ clang-tools-extra/clangd/index/BackgroundRebuild.h
@@ -49,9 +49,7 @@
public:
BackgroundIndexRebuilder(SwapIndex *Target, FileSymbols *Source,
unsigned Threads)
- : TUsBeforeFirstBuild(llvm::heavyweight_hardware_concurrency(Threads)
- .compute_thread_count()),
- Target(Target), Source(Source) {}
+ : TUsBeforeFirstBuild(Threads), Target(Target), Source(Source) {}
// Called to indicate a TU has been indexed.
// May rebuild, if enough TUs have been indexed.
@@ -72,7 +70,7 @@
// Ensures we won't start any more rebuilds.
void shutdown();
- // Thresholds for rebuilding as TUs get indexed.
+ // Thresholds for rebuilding as TUs get indexed. Exposed for testing.
const unsigned TUsBeforeFirstBuild; // Typically one per worker thread.
const unsigned TUsBeforeRebuild = 100;
Index: clang-tools-extra/clangd/index/Background.h
===================================================================
--- clang-tools-extra/clangd/index/Background.h
+++ clang-tools-extra/clangd/index/Background.h
@@ -135,7 +135,9 @@
Context BackgroundContext, const ThreadsafeFS &,
const GlobalCompilationDatabase &CDB,
BackgroundIndexStorage::Factory IndexStorageFactory,
- size_t ThreadPoolSize = 0, // 0 = use all hardware threads
+ // Arbitrary value to ensure some concurrency in tests.
+ // In production an explicit value is passed.
+ size_t ThreadPoolSize = 4,
std::function<void(BackgroundQueue::Stats)> OnProgress = nullptr);
~BackgroundIndex(); // Blocks while the current task finishes.
Index: clang-tools-extra/clangd/index/Background.cpp
===================================================================
--- clang-tools-extra/clangd/index/Background.cpp
+++ clang-tools-extra/clangd/index/Background.cpp
@@ -103,10 +103,9 @@
CDB.watch([&](const std::vector<std::string> &ChangedFiles) {
enqueue(ChangedFiles);
})) {
- assert(Rebuilder.TUsBeforeFirstBuild > 0 &&
- "Thread pool size can't be zero.");
+ assert(ThreadPoolSize > 0 && "Thread pool size can't be zero.");
assert(this->IndexStorageFactory && "Storage factory can not be null!");
- for (unsigned I = 0; I < Rebuilder.TUsBeforeFirstBuild; ++I) {
+ for (unsigned I = 0; I < ThreadPoolSize; ++I) {
ThreadPool.runAsync("background-worker-" + llvm::Twine(I + 1), [this] {
WithContext Ctx(this->BackgroundContext.clone());
Queue.work([&] { Rebuilder.idle(); });
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D82352.273183.patch
Type: text/x-patch
Size: 2719 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200624/b57ba519/attachment-0001.bin>
More information about the cfe-commits
mailing list