Adapt memory usage estimation for flushing
This commit is contained in:
parent
013a56aa1a
commit
0580ee08ff
2 changed files with 2 additions and 4 deletions
|
@ -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)
|
||||
|
|
|
@ -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<int64_t>(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);
|
||||
|
|
Loading…
Reference in a new issue