mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-17 13:22:03 +01:00
coins: bump default LevelDB write batch size to 64 MiB
The UTXO set has grown significantly, and flushing it from memory to LevelDB often takes over 20 minutes after a successful IBD with large dbcache values. The final UTXO set is written to disk in batches, which LevelDB sorts into SST files. By increasing the default batch size, we can reduce overhead from repeated compaction cycles, minimize constant overhead per batch, and achieve more sequential writes. Experiments with different batch sizes (loaded via assumeutxo at block 840k, then measuring final flush time) show that 64 MiB batches significantly reduce flush time without notably increasing memory usage: | dbbatchsize | flush_sum (ms) | |-------------|----------------| | 8 MiB | ~240,000 | | 16 MiB | ~220,000 | | 32 MiB | ~200,000 | | *64 MiB* | *~150,000* | | 128 MiB | ~156,000 | | 256 MiB | ~166,000 | | 512 MiB | ~186,000 | | 1 GiB | ~186,000 | Checking the impact of a `-reindex-chainstate` with `-stopatheight=878000` and `-dbcache=30000` gives: 16 << 20 ``` 2025-01-12T07:31:05Z Flushed fee estimates to fee_estimates.dat. 2025-01-12T07:31:05Z [warning] Flushing large (26 GiB) UTXO set to disk, it may take several minutes 2025-01-12T07:53:51Z Shutdown: done ``` Flush time: 22 minutes and 46 seconds 64 >> 20 ``` 2025-01-12T18:30:00Z Flushed fee estimates to fee_estimates.dat. 2025-01-12T18:30:00Z [warning] Flushing large (26 GiB) UTXO set to disk, it may take several minutes 2025-01-12T18:44:43Z Shutdown: done ``` Flush time: ~14 minutes 43 seconds.
This commit is contained in:
parent
df8bf65745
commit
868413340f
@ -22,7 +22,7 @@ class COutPoint;
|
||||
class uint256;
|
||||
|
||||
//! -dbbatchsize default (bytes)
|
||||
static const int64_t nDefaultDbBatchSize = 16 << 20;
|
||||
static const int64_t nDefaultDbBatchSize = 64 << 20;
|
||||
|
||||
//! User-controlled performance and debug options.
|
||||
struct CoinsViewOptions {
|
||||
|
Loading…
x
Reference in New Issue
Block a user