mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-20 14:05:23 +01:00
Merge bitcoin/bitcoin#26471: Reduce default mempool size in -blocksonly mode
8e85164e7d
doc: release note on mempool size in -blocksonly (willcl-ark)ae797463dc
doc: Update blocksonly behaviour in reduce-memory (willcl-ark)1134686ef9
mempool: Don't share mempool with dbcache in blocksonly (willcl-ark) Pull request description: Fixes #9526 When `-blocksonly` has been set reduce default mempool size to avoid surprising resource usage via sharing un-used mempool cache space with dbcache. In comparison to https://github.com/bitcoin/bitcoin/pull/9569 which either set `maxmempool` size to 0 when `-blocksonly` was set or else errored on startup, this change will permit `maxmempool` options being set. This preserves the current (surprising?) behaviour of having a functional mempool in `-blocksonly` mode, to permit whitelisted peer transaction relay, whilst reducing average runtime memory usage for blocksonly nodes which either use the default settings or have otherwise configured a `maxmempool` size. To use the previous old defaults node operators can configure their node with: `-blocksonly -maxmempool=300`. ACKs for top commit: ajtowns: ACK8e85164e7d
stickies-v: re-ACK8e85164e7d
Tree-SHA512: 1c461c24b6f14ba02cfe4e2cde60dc629e47485db5701bca3003b8df79e3aa311c0c967979f6a1dca3ba69f5b1e45fa2db6ff83352fdf2d4349d5f8d120e740d
This commit is contained in:
commit
ad09b76275
4 changed files with 22 additions and 4 deletions
|
@ -16,12 +16,12 @@ The size of some in-memory caches can be reduced. As caches trade off memory usa
|
|||
- The minimum value for `-maxmempool` is 5.
|
||||
- A lower maximum mempool size means that transactions will be evicted sooner. This will affect any uses of `bitcoind` that process unconfirmed transactions.
|
||||
|
||||
- To completely disable mempool functionality there is the option `-blocksonly`. This will make the client opt out of receiving (and thus relaying) transactions completely, except as part of blocks.
|
||||
- Since `0.14.0`, unused memory allocated to the mempool (default: 300MB) is shared with the UTXO cache, so when trying to reduce memory usage you should limit the mempool, with the `-maxmempool` command line argument.
|
||||
|
||||
- To disable most of the mempool functionality there is the `-blocksonly` option. This will reduce the default memory usage to 5MB and make the client opt out of receiving (and thus relaying) transactions, except from whitelisted peers and as part of blocks.
|
||||
|
||||
- Do not use this when using the client to broadcast transactions as any transaction sent will stick out like a sore thumb, affecting privacy. When used with the wallet it should be combined with `-walletbroadcast=0` and `-spendzeroconfchange=0`. Another mechanism for broadcasting outgoing transactions (if any) should be used.
|
||||
|
||||
- Since `0.14.0`, unused memory allocated to the mempool (default: 300MB) is shared with the UTXO cache, so when trying to reduce memory usage you should limit the mempool, with the `-maxmempool` command line argument.
|
||||
|
||||
## Number of peers
|
||||
|
||||
- `-maxconnections=<n>` - the maximum number of connections, which defaults to 125. Each active connection takes up some
|
||||
|
|
13
doc/release-notes-26471.md
Normal file
13
doc/release-notes-26471.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
Updated settings
|
||||
----------------
|
||||
|
||||
- Setting `-blocksonly` will now reduce the maximum mempool memory
|
||||
to 5MB (users may still use `-maxmempool` to override). Previously,
|
||||
the default 300MB would be used, leading to unexpected memory usage
|
||||
for users running with `-blocksonly` expecting it to eliminate
|
||||
mempool memory usage.
|
||||
|
||||
As unused mempool memory is shared with dbcache, this also reduces
|
||||
the dbcache size for users running with `-blocksonly`, potentially
|
||||
impacting performance.
|
||||
|
|
@ -736,10 +736,13 @@ void InitParameterInteraction(ArgsManager& args)
|
|||
LogPrintf("%s: parameter interaction: -externalip set -> setting -discover=0\n", __func__);
|
||||
}
|
||||
|
||||
// disable whitelistrelay in blocksonly mode
|
||||
if (args.GetBoolArg("-blocksonly", DEFAULT_BLOCKSONLY)) {
|
||||
// disable whitelistrelay in blocksonly mode
|
||||
if (args.SoftSetBoolArg("-whitelistrelay", false))
|
||||
LogPrintf("%s: parameter interaction: -blocksonly=1 -> setting -whitelistrelay=0\n", __func__);
|
||||
// Reduce default mempool size in blocksonly mode to avoid unexpected resource usage
|
||||
if (args.SoftSetArg("-maxmempool", ToString(DEFAULT_BLOCKSONLY_MAX_MEMPOOL_SIZE_MB)))
|
||||
LogPrintf("%s: parameter interaction: -blocksonly=1 -> setting -maxmempool=%d\n", __func__, DEFAULT_BLOCKSONLY_MAX_MEMPOOL_SIZE_MB);
|
||||
}
|
||||
|
||||
// Forcing relay from whitelisted hosts implies we will accept relays from them in the first place.
|
||||
|
|
|
@ -18,6 +18,8 @@ class CBlockPolicyEstimator;
|
|||
|
||||
/** Default for -maxmempool, maximum megabytes of mempool memory usage */
|
||||
static constexpr unsigned int DEFAULT_MAX_MEMPOOL_SIZE_MB{300};
|
||||
//** Default for -maxmempool when blocksonly is set */
|
||||
static constexpr unsigned int DEFAULT_BLOCKSONLY_MAX_MEMPOOL_SIZE_MB{5};
|
||||
/** Default for -mempoolexpiry, expiration time for mempool transactions in hours */
|
||||
static constexpr unsigned int DEFAULT_MEMPOOL_EXPIRY_HOURS{336};
|
||||
/** Default for -mempoolfullrbf, if the transaction replaceability signaling is ignored */
|
||||
|
|
Loading…
Add table
Reference in a new issue