aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2016-07-06 07:46:41 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2016-07-06 07:46:47 +0200
commit396f9d629662ae8c95bc576000166f5b8941ef0b (patch)
tree2cfbab9d10bcd7cfb3af0aabc126d3f56b366b74 /src
parent042c323922fce00a1cd0d955a0c8b8bfa80e4045 (diff)
parentefd1d8339ad9a2bb7a164e7475734a90f6fa034c (diff)
Merge #8273: Bump `-dbcache` default to 300MiB
efd1d83 doc: Mention dbcache increase in release notes (Wladimir J. van der Laan) 32cab91 Bump `-dbcache` default to 300MiB (Wladimir J. van der Laan)
Diffstat (limited to 'src')
-rw-r--r--src/init.cpp4
-rw-r--r--src/txdb.h14
2 files changed, 13 insertions, 5 deletions
diff --git a/src/init.cpp b/src/init.cpp
index 0f641821d4..7e91e0ba8b 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -1216,10 +1216,10 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
nTotalCache = std::max(nTotalCache, nMinDbCache << 20); // total cache cannot be less than nMinDbCache
nTotalCache = std::min(nTotalCache, nMaxDbCache << 20); // total cache cannot be greated than nMaxDbcache
int64_t nBlockTreeDBCache = nTotalCache / 8;
- if (nBlockTreeDBCache > (1 << 21) && !GetBoolArg("-txindex", DEFAULT_TXINDEX))
- nBlockTreeDBCache = (1 << 21); // block tree db cache shouldn't be larger than 2 MiB
+ nBlockTreeDBCache = std::min(nBlockTreeDBCache, (GetBoolArg("-txindex", DEFAULT_TXINDEX) ? nMaxBlockDBAndTxIndexCache : nMaxBlockDBCache) << 20);
nTotalCache -= nBlockTreeDBCache;
int64_t nCoinDBCache = std::min(nTotalCache / 2, (nTotalCache / 4) + (1 << 23)); // use 25%-50% of the remainder for disk cache
+ nCoinDBCache = std::min(nCoinDBCache, nMaxCoinsDBCache << 20); // cap total coins db cache
nTotalCache -= nCoinDBCache;
nCoinCacheUsage = nTotalCache; // the rest goes to in-memory cache
LogPrintf("Cache configuration:\n");
diff --git a/src/txdb.h b/src/txdb.h
index ce3c39d7fe..5b98d2792c 100644
--- a/src/txdb.h
+++ b/src/txdb.h
@@ -22,11 +22,19 @@ class CCoinsViewDBCursor;
class uint256;
//! -dbcache default (MiB)
-static const int64_t nDefaultDbCache = 100;
-//! max. -dbcache in (MiB)
+static const int64_t nDefaultDbCache = 300;
+//! max. -dbcache (MiB)
static const int64_t nMaxDbCache = sizeof(void*) > 4 ? 16384 : 1024;
-//! min. -dbcache in (MiB)
+//! min. -dbcache (MiB)
static const int64_t nMinDbCache = 4;
+//! Max memory allocated to block tree DB specific cache, if no -txindex (MiB)
+static const int64_t nMaxBlockDBCache = 2;
+//! Max memory allocated to block tree DB specific cache, if -txindex (MiB)
+// Unlike for the UTXO database, for the txindex scenario the leveldb cache make
+// a meaningful difference: https://github.com/bitcoin/bitcoin/pull/8273#issuecomment-229601991
+static const int64_t nMaxBlockDBAndTxIndexCache = 1024;
+//! Max memory allocated to coin DB specific cache (MiB)
+static const int64_t nMaxCoinsDBCache = 8;
struct CDiskTxPos : public CDiskBlockPos
{