From 0580ee08ff413f729bd34e5a5ce0fb75894f0256 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Wed, 19 Apr 2017 09:34:48 -0700 Subject: [PATCH] Adapt memory usage estimation for flushing --- src/txdb.h | 4 +--- src/validation.cpp | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/txdb.h b/src/txdb.h index fa6bce214..e5c0516a3 100644 --- a/src/txdb.h +++ b/src/txdb.h @@ -19,10 +19,8 @@ class CBlockIndex; class CCoinsViewDBCursor; class uint256; -//! Compensate for extra memory peak (x1.5-x1.9) at flush time. -static constexpr int DB_PEAK_USAGE_FACTOR = 2; //! No need to periodic flush if at least this much space still available. -static constexpr int MAX_BLOCK_COINSDB_USAGE = 10 * DB_PEAK_USAGE_FACTOR; +static constexpr int MAX_BLOCK_COINSDB_USAGE = 10; //! -dbcache default (MiB) static const int64_t nDefaultDbCache = 450; //! -dbbatchsize default (bytes) diff --git a/src/validation.cpp b/src/validation.cpp index f5e31e0a0..77b96be1e 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -1781,7 +1781,7 @@ bool static FlushStateToDisk(const CChainParams& chainparams, CValidationState & nLastSetChain = nNow; } int64_t nMempoolSizeMax = GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000; - int64_t cacheSize = pcoinsTip->DynamicMemoryUsage() * DB_PEAK_USAGE_FACTOR; + int64_t cacheSize = pcoinsTip->DynamicMemoryUsage(); int64_t nTotalSpace = nCoinCacheUsage + std::max(nMempoolSizeMax - nMempoolUsage, 0); // The cache is large and we're within 10% and 10 MiB of the limit, but we have time now (not in the middle of a block processing). bool fCacheLarge = mode == FLUSH_STATE_PERIODIC && cacheSize > std::max((9 * nTotalSpace) / 10, nTotalSpace - MAX_BLOCK_COINSDB_USAGE * 1024 * 1024);