diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2016-07-06 07:46:41 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2016-07-06 07:46:47 +0200 |
commit | 396f9d629662ae8c95bc576000166f5b8941ef0b (patch) | |
tree | 2cfbab9d10bcd7cfb3af0aabc126d3f56b366b74 | |
parent | 042c323922fce00a1cd0d955a0c8b8bfa80e4045 (diff) | |
parent | efd1d8339ad9a2bb7a164e7475734a90f6fa034c (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)
-rw-r--r-- | doc/release-notes.md | 16 | ||||
-rw-r--r-- | src/init.cpp | 4 | ||||
-rw-r--r-- | src/txdb.h | 14 |
3 files changed, 27 insertions, 7 deletions
diff --git a/doc/release-notes.md b/doc/release-notes.md index 6e4f390cbc..df63bb53ee 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -41,9 +41,21 @@ report issues about Windows XP to the issue tracker. Notable changes =============== -Example item ----------------- +Database cache memory increased +-------------------------------- + +As a result of growth of the UTXO set, performance with the prior default +database cache of 100 MiB has suffered. +For this reason the default was changed to 300 MiB in this release. + +For nodes on low-memory systems, the database cache can be changed back to +100 MiB (or to another value) by either: + +- Adding `dbcache=100` in bitcoin.conf +- Changing it in the GUI under `Options → Size of database cache` +Note that the database cache setting has the most performance impact +during initial sync of a node, and when catching up after downtime. bitcoin-cli: arguments privacy -------------------------------- 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 { |