nimbus-eth1/nimbus
Jacek Sieka f68a5d419f
Offload signature checking to taskpools
In block processing, depending on the complexity of a transaction and
hotness of caches etc, signature checking can actually make up the
majority of time needed to process a transaction (60% observed in some
randomly sampled block ranges).

Fortunately, this is a task that trivially can be offloaded to a task
pool similar to how nimbus-eth2 does it.

This PR introduces taskpools in the most simple way possible, by
performing signature checking concurrently with other TX processing,
assigning a taskpool task per TX effectively.

With this little trick, we're in gigagas land 🎉 on my laptop!

```
INF 2024-12-10 21:05:35.170+01:00 Imported blocks
blockNumber=3874817 b... mgps=1222.707 ...
```

Tests don't use the taskpool for now because it needs manual cleanup and
we don't have a good mechanism in place. Future PR:s should address this
by creating a common shutdown sequence that also closes and cleans up
other resources like the DB.
2024-12-11 15:14:03 +01:00
..
beacon Bump nim-web3 to c8f36f59cb354196cfe117b6866e81d450c8cfd7 (#2878) 2024-11-27 20:16:31 +07:00
common Offload signature checking to taskpools 2024-12-11 15:14:03 +01:00
core Offload signature checking to taskpools 2024-12-11 15:14:03 +01:00
db Add branch cache (#2923) 2024-12-11 11:53:26 +01:00
evm Move EVM code initialization outside of newComputation (#2926) 2024-12-11 14:56:41 +01:00
graphql Cleanup db/core_apps error handling (#2838) 2024-11-07 08:24:21 +07:00
rpc Bump nim-web3 to c8f36f59cb354196cfe117b6866e81d450c8cfd7 (#2878) 2024-11-27 20:16:31 +07:00
stateless replace deprecated types (#2704) 2024-10-16 08:34:12 +07:00
sync Fix race condition on syncer termination (#2916) 2024-12-06 12:11:40 +00:00
transaction Move EVM code initialization outside of newComputation (#2926) 2024-12-11 14:56:41 +01:00
utils Move EVM code initialization outside of newComputation (#2926) 2024-12-11 14:56:41 +01:00
common.nim implement better hardfork management 2022-12-02 13:51:42 +07:00
compile_info.nim Simplify LedgerRef: remove unnecessary abstraction (#2826) 2024-11-06 09:01:56 +07:00
config.nim Offload signature checking to taskpools 2024-12-11 15:14:03 +01:00
constants.nim Fixes related to Prague execution requests (#2847) 2024-11-08 10:47:07 +07:00
errors.nim Remove EVM indirect imports and unused EVM errors (#2370) 2024-06-17 09:56:39 +02:00
makefile Snap sync fix trie interpolation fringe condition (#1457) 2023-02-01 18:56:06 +00:00
nim.cfg import: read from era files (#2254) 2024-05-31 09:13:56 +02:00
nimbus_desc.nim Fix race condition on syncer termination (#2916) 2024-12-06 12:11:40 +00:00
nimbus_execution_client.nim Offload signature checking to taskpools 2024-12-11 15:14:03 +01:00
nimbus_import.nim Move rlp block import into it's own subcommand (#2904) 2024-12-04 20:36:07 +07:00
rpc.nim Port p2p to server API (#2769) 2024-11-02 10:30:45 +01:00
tracer.nim Simplify state root api (#2864) 2024-11-22 14:15:35 +01:00
transaction.nim Unify tx validation (#2777) 2024-10-26 09:19:48 +02:00
version.nim Feature: User configurable extraData when assemble a block (#2823) 2024-11-06 09:01:25 +07:00