go-ethereum
go-ethereum copied to clipboard
core, cmd/utils: when configured via flag, in block execution: prefetch all reads from account/storage tries, terminate prefetcher synchronously.
Pulled out from https://github.com/ethereum/go-ethereum/pull/29719
jiejuelema
Okay
Oaky
~~Haven't quite got this working yet...~~. Seems somewhat okay now.
Full sync benchmark nodes are running around block 12.2 million (bench7 is running this PR with the witness collection flag enabled, bench8 is master)
Witness collection mode is causing additional prefetch reads which all hit the db cache. There appears to be no performance impact.
Prefetcher duplicate/waste metrics cease to be meaningful if --collectwitnesses is passed. The account/storage loads are higher (but again, these hit the db cache so it's not a problem).
@karalabe I think I've mostly addressed your feedback and simplified the PR.