perf(evmonly): pipeline Autobahn execution for 5,000-tx blocks - #4087
Draft
codchen wants to merge 2 commits into
Draft
perf(evmonly): pipeline Autobahn execution for 5,000-tx blocks#4087codchen wants to merge 2 commits into
codchen wants to merge 2 commits into
Conversation
|
The latest Buf updates on your PR. Results from workflow Buf / buf (pull_request).
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #4087 +/- ##
==========================================
- Coverage 61.30% 60.27% -1.04%
==========================================
Files 2178 2071 -107
Lines 190788 178596 -12192
==========================================
- Hits 116968 107640 -9328
+ Misses 62796 60951 -1845
+ Partials 11024 10005 -1019
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Describe your changes and provide context
This draft improves the Autobahn EVM-only path for saturated native-transfer workloads:
AWS E2E results
The latest AWS-tested commit was deployed without Docker to four independent
c8i.48xlargevalidator instances, with a fifthc8i.48xlargehost runningsei-load. Each validator runsseiddirectly under systemd. All validators converged to the same execution height and transaction count.GOMAXPROCS=24,GOGC=200) admitted 73.0k TPS and converged at 72.7k executed TPS.At saturation, received blocks accumulated ahead of ordered execution (height 1,303 received versus 1,236 executed at the end of one run). The best result is about 46.1 ms per 5,000-transaction block. Reaching 200k TPS requires this ordered path to remain below 25 ms per block.
An exact current-revision standalone run on an identical
c8i.48xlargesustained roughly 115-118k full ordered-execution TPS with zero OCC reruns. It did not reproduce a >200k full-execution result; higher standalone figures came from a different configuration or metric, such as preparation or speculative throughput.Profiling attributed roughly 14 ms per block to ordered OCC validation, 14 ms to merge, and 6 ms to memory-store commit. Commit
cca7589abadds a conflict-free validation and merge fast path. A warmed local standalone A/B improved from 203.8k to 213.4k TPS; a 10% paired-recipient-conflict workload was 1.6% slower and retained identical results through the existing rerun path. AWS validation of this commit is pending because the AWS session token expired.The remaining useful optimization target is per-transaction allocation and ordered validation/merge/commit work, not additional EC2 compute.
Testing performed to validate your change
go test ./giga/... -count=1go test -race ./giga/evmonly -count=1go test ./sei-tendermint/internal/p2p -count=1go test ./sei-tendermint/internal/autobahn/producer -count=1golangci-lint run ./giga/evmonly ./sei-tendermint/internal/p2p ./sei-tendermint/internal/autobahn/producergolangci-lint fmt --diffgit diff --checkgo test ./giga/evmonly -run "^$" -bench "^BenchmarkPrepareTransferBlock$" -benchtime=3x -count=1