aboutsummaryrefslogtreecommitdiff
path: root/src/miner.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2015-07-01 17:38:15 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2015-07-01 18:01:16 +0200
commit47162673c79c757a9c038c4ddc41fb3022223bde (patch)
treeeb472ad23b918630102983ba5ca776e8bb3c7016 /src/miner.cpp
parentda77a6f7611f71443914e1c71df1e52468cf507d (diff)
downloadbitcoin-47162673c79c757a9c038c4ddc41fb3022223bde.tar.xz
Use real number of cores for default -par, ignore virtual cores
To determine the default for `-par`, the number of script verification threads, use [boost::thread::physical_concurrency()](http://www.boost.org/doc/libs/1_58_0/doc/html/thread/thread_management.html#thread.thread_management.thread.physical_concurrency) which counts only physical cores, not virtual cores. Virtual cores are roughly a set of cached registers to avoid context switches while threading, they cannot actually perform work, so spawning a verification thread for them could even reduce efficiency and will put undue load on the system. Should fix issue #6358, as well as some other reported system overload issues, especially on Intel processors. The function was only introduced in boost 1.56, so provide a utility function `GetNumCores` to fall back for older Boost versions.
Diffstat (limited to 'src/miner.cpp')
-rw-r--r--src/miner.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/miner.cpp b/src/miner.cpp
index f5919ca3af..57af2981dd 100644
--- a/src/miner.cpp
+++ b/src/miner.cpp
@@ -560,7 +560,7 @@ void GenerateBitcoins(bool fGenerate, CWallet* pwallet, int nThreads)
if (Params().DefaultMinerThreads())
nThreads = Params().DefaultMinerThreads();
else
- nThreads = boost::thread::hardware_concurrency();
+ nThreads = GetNumCores();
}
if (minerThreads != NULL)