mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-02-26 15:47:21 +00:00
This pull request adjusts the number of allowed memory tables in Pebble. Pebble allows configuring an arbitrary number of memory tables to hold unflushed data. When the current memtable becomes full, it is scheduled for flushing, and a new memtable is allocated to accept subsequent writes. However, if too many memtables accumulate and are waiting to be flushed, subsequent writes will stall. Originally, only two memtables were configured, each with a size of 512 MB for Ethereum mainnet. While this setup works well under normal conditions, it becomes problematic under heavy write loads. In such scenarios, flushing is only triggered when more than 512 MB of data is pending, which may not be responsive enough. Even worse, if compactions are running concurrently, flushing memtables can become slow due to the heavy IO overhead, leading to write stalls across the system. This pull request tries to mitigate the performance degradation by having more memory tables but with a smaller size. In this case, the pending writes can be flushed more smoothly and responsively. |
||
|---|---|---|
| .. | ||
| dbtest | ||
| leveldb | ||
| memorydb | ||
| pebble | ||
| remotedb | ||
| batch.go | ||
| database.go | ||
| iterator.go | ||