mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-22 15:45:08 +00:00
Only target 80% of threads for indexers by default.
Using 100% - 1 tended to cause too much resource contention.
This commit is contained in:
parent
37ab94e7b4
commit
39de197e8a
@ -1386,13 +1386,16 @@ bool QueryDbMainLoop(Config* config,
|
|||||||
EnsureEndsInSlash(config->projectRoot);
|
EnsureEndsInSlash(config->projectRoot);
|
||||||
|
|
||||||
// Start indexer threads.
|
// Start indexer threads.
|
||||||
// Set default indexer count if not specified.
|
|
||||||
if (config->indexerCount == 0) {
|
if (config->indexerCount == 0) {
|
||||||
|
// If the user has not specified how many indexers to run, try to
|
||||||
|
// guess an appropriate value. Default to 80% utilization.
|
||||||
|
const float kDefaultTargetUtilization = 0.8;
|
||||||
config->indexerCount =
|
config->indexerCount =
|
||||||
std::max<int>(std::thread::hardware_concurrency(), 2) - 1;
|
std::thread::hardware_concurrency() * kDefaultTargetUtilization;
|
||||||
|
if (config->indexerCount <= 0)
|
||||||
|
config->indexerCount = 1;
|
||||||
}
|
}
|
||||||
std::cerr << "[querydb] Starting " << config->indexerCount
|
LOG_S(INFO) << "Starting " << config->indexerCount << " indexers";
|
||||||
<< " indexers" << std::endl;
|
|
||||||
for (int i = 0; i < config->indexerCount; ++i) {
|
for (int i = 0; i < config->indexerCount; ++i) {
|
||||||
WorkThread::StartThread("indexer" + std::to_string(i), [=]() {
|
WorkThread::StartThread("indexer" + std::to_string(i), [=]() {
|
||||||
return IndexMain(config, file_consumer_shared, timestamp_manager,
|
return IndexMain(config, file_consumer_shared, timestamp_manager,
|
||||||
|
Loading…
Reference in New Issue
Block a user