@@ -1052,18 +1052,20 @@ bool AppInit2(boost::thread_group& threadGroup)
1052
1052
}
1053
1053
1054
1054
// cache size calculations
1055
- size_t nTotalCache = (GetArg (" -dbcache" , nDefaultDbCache) << 20 );
1056
- if (nTotalCache < (nMinDbCache << 20 ))
1057
- nTotalCache = (nMinDbCache << 20 ); // total cache cannot be less than nMinDbCache
1058
- else if (nTotalCache > (nMaxDbCache << 20 ))
1059
- nTotalCache = (nMaxDbCache << 20 ); // total cache cannot be greater than nMaxDbCache
1060
- size_t nBlockTreeDBCache = nTotalCache / 8 ;
1055
+ int64_t nTotalCache = (GetArg (" -dbcache" , nDefaultDbCache) << 20 );
1056
+ nTotalCache = std::max (nTotalCache, nMinDbCache << 20 ); // total cache cannot be less than nMinDbCache
1057
+ nTotalCache = std::min (nTotalCache, nMaxDbCache << 20 ); // total cache cannot be greated than nMaxDbcache
1058
+ int64_t nBlockTreeDBCache = nTotalCache / 8 ;
1061
1059
if (nBlockTreeDBCache > (1 << 21 ) && !GetBoolArg (" -txindex" , false ))
1062
1060
nBlockTreeDBCache = (1 << 21 ); // block tree db cache shouldn't be larger than 2 MiB
1063
1061
nTotalCache -= nBlockTreeDBCache;
1064
- size_t nCoinDBCache = nTotalCache / 2 ; // use half of the remaining cache for coindb cache
1062
+ int64_t nCoinDBCache = std::min ( nTotalCache / 2 , (nTotalCache / 4 ) + ( 1 << 23 )) ; // use 25%-50% of the remainder for disk cache
1065
1063
nTotalCache -= nCoinDBCache;
1066
- nCoinCacheUsage = nTotalCache;
1064
+ nCoinCacheUsage = nTotalCache; // the rest goes to in-memory cache
1065
+ LogPrintf (" Cache configuration:\n " );
1066
+ LogPrintf (" * Using %.1fMiB for block index database\n " , nBlockTreeDBCache * (1.0 / 1024 / 1024 ));
1067
+ LogPrintf (" * Using %.1fMiB for chain state database\n " , nCoinDBCache * (1.0 / 1024 / 1024 ));
1068
+ LogPrintf (" * Using %.1fMiB for in-memory UTXO set\n " , nCoinCacheUsage * (1.0 / 1024 / 1024 ));
1067
1069
1068
1070
bool fLoaded = false ;
1069
1071
while (!fLoaded ) {
0 commit comments