go-ethereum/core
Martin Holst Swende 794c6133ef
core/rawdb: freezer batch write (#23462)
This change is a rewrite of the freezer code.

When writing ancient chain data to the freezer, the previous version first encoded each
individual item to a temporary buffer, then wrote the buffer. For small item sizes (for
example, in the block hash freezer table), this strategy causes a lot of system calls for
writing tiny chunks of data. It also allocated a lot of temporary []byte buffers.

In the new version, we instead encode multiple items into a re-useable batch buffer, which
is then written to the file all at once. This avoids performing a system call for every
inserted item.

To make the internal batching work, the ancient database API had to be changed. While
integrating this new API in BlockChain.InsertReceiptChain, additional optimizations were
also added there.

Co-authored-by: Felix Lange <fjl@twurst.com>
2021-09-07 12:31:17 +02:00
..
asm core/asm: fix the bug of "00" prefix number (#22883) 2021-05-18 10:22:58 +02:00
bloombits core/bloombits: avoid crash when storing errors of different type (#23437) 2021-08-24 13:32:19 +02:00
forkid core, params: define london block at 12965000 (#23176) 2021-07-08 12:34:56 +03:00
rawdb core/rawdb: freezer batch write (#23462) 2021-09-07 12:31:17 +02:00
state core: fix typo in iterator.go (#23502) 2021-08-31 10:21:42 +02:00
types core/types: add benchmarks for rlp encoding/decoding (#23190) 2021-08-24 13:59:15 +02:00
vm core/vm: rework jumpdest analysis benchmarks (#23499) 2021-08-30 14:13:06 +02:00
.gitignore Renamed chain => core 2014-12-04 10:28:02 +01:00
bench_test.go EIP-1559: miner changes (#22896) 2021-05-21 09:59:26 +02:00
block_validator_test.go cmd, core, eth, miner: deprecate miner.gastarget flag (#23213) 2021-08-10 11:28:33 +03:00
block_validator.go cmd, core, eth, miner: deprecate miner.gastarget flag (#23213) 2021-08-10 11:28:33 +03:00
blockchain_insert.go core: fix blockchain insert report time interval calculation (#21723) 2020-10-21 16:53:30 +02:00
blockchain_repair_test.go accounts/abi/bind: fix bounded contracts and sim backend for 1559 (#23038) 2021-06-15 13:56:14 +03:00
blockchain_sethead_test.go accounts/abi/bind: fix bounded contracts and sim backend for 1559 (#23038) 2021-06-15 13:56:14 +03:00
blockchain_snapshot_test.go accounts/abi/bind: fix bounded contracts and sim backend for 1559 (#23038) 2021-06-15 13:56:14 +03:00
blockchain_test.go core/rawdb: freezer batch write (#23462) 2021-09-07 12:31:17 +02:00
blockchain.go core/rawdb: freezer batch write (#23462) 2021-09-07 12:31:17 +02:00
blocks.go core: typos and comments improve 2017-05-25 17:14:33 +03:00
bloom_indexer.go eth: move eth.Config to a common package (#22205) 2021-02-05 13:51:15 +01:00
chain_indexer_test.go core: fix potential race in chainIndexerTest (#22346) 2021-03-19 13:32:57 +01:00
chain_indexer.go all: make logs a bit easier on the eye to digest (#22665) 2021-04-15 20:35:00 +03:00
chain_makers_test.go cmd, core, eth: background transaction indexing (#20302) 2020-05-11 18:58:43 +03:00
chain_makers.go cmd, core, eth, miner: deprecate miner.gastarget flag (#23213) 2021-08-10 11:28:33 +03:00
dao_test.go accounts/abi/bind: fix bounded contracts and sim backend for 1559 (#23038) 2021-06-15 13:56:14 +03:00
error.go core/rawdb: freezer batch write (#23462) 2021-09-07 12:31:17 +02:00
events.go eth/filters: remove use of event.TypeMux for pending logs (#20312) 2019-12-10 12:39:14 +01:00
evm.go all: implement EIP-1559 (#22837) 2021-05-17 15:13:22 +02:00
gaspool.go miner: avoid unnecessary work (#15883) 2018-01-15 12:57:06 +02:00
gen_genesis_account.go tests: update for London (#22976) 2021-06-07 14:37:56 +02:00
gen_genesis.go core: change baseFee into baseFeePerGas in genesis json 2021-06-14 14:04:44 +02:00
genesis_alloc.go cmd/geth, core, params: replace baikal with calaveras (#22972) 2021-05-31 10:06:48 +03:00
genesis_test.go cmd, core: remove calaveras testnet (#23366) 2021-08-17 18:43:25 +02:00
genesis.go cmd, core: remove calaveras testnet (#23366) 2021-08-17 18:43:25 +02:00
headerchain_test.go accounts/abi/bind: fix bounded contracts and sim backend for 1559 (#23038) 2021-06-15 13:56:14 +03:00
headerchain.go all: change blacklist terms 2021-07-29 11:17:40 +03:00
mkalloc.go all: add go:build lines (#23468) 2021-08-25 18:46:29 +02:00
rlp_test.go accounts/abi/bind: fix bounded contracts and sim backend for 1559 (#23038) 2021-06-15 13:56:14 +03:00
state_prefetcher.go all: removed blockhash from statedb (#23126) 2021-06-30 15:17:01 +02:00
state_processor_test.go core: check if sender is EOA (#23303) 2021-08-07 19:38:18 +02:00
state_processor.go all: removed blockhash from statedb (#23126) 2021-06-30 15:17:01 +02:00
state_transition.go core: only check sendernoeoa in non fake mode (#23424) 2021-08-23 12:49:39 +03:00
tx_cacher.go Comment error (#18303) 2018-12-14 11:15:31 +01:00
tx_journal.go core: transaction journal should not be executable (#23090) 2021-06-23 07:29:20 +03:00
tx_list_test.go Revert "core, txpool: less allocations when handling transactions (#21232)" 2020-07-09 14:02:03 +02:00
tx_list.go core: fix race conditions in txpool (#23474) 2021-08-31 10:33:39 +02:00
tx_noncer.go core: fix write concurrency in txpool (#19835) 2019-07-17 13:39:41 +03:00
tx_pool_test.go core: fix race conditions in txpool (#23474) 2021-08-31 10:33:39 +02:00
tx_pool.go core: fix race conditions in txpool (#23474) 2021-08-31 10:33:39 +02:00
types.go core: prefetch next block state concurrently 2019-04-01 11:06:15 +03:00