Conversation
Collaborator
|
I'm not against this. In general, symbolic execution speed is mostly governed by SMT solver speed. So I'd say this is OK from my side. @blishko ? |
msooseth
approved these changes
Mar 9, 2026
Collaborator
msooseth
left a comment
There was a problem hiding this comment.
LGTM, but let's wait for Martin!
Collaborator
|
Seems OK to me. |
Collaborator
|
I would like to run |
4 tasks
Collaborator
|
@elopez, can you rebase this one? |
hevm's execution model allocates heavily in the GC nursery (gen0) due to immutable record reconstruction on every EVM step. All allocations are short-lived and never survive to gen1. The default 4MB nursery causes excessive minor GC pauses. Setting -A32m reduces GC frequency dramatically, yielding significant speedups across all benchmarks.
EVM execution is single-threaded. With -N (auto-detect), GHC creates one capability per core, each with a 32MB nursery. The extra capabilities add GC synchronization overhead without benefit since only one is used. Also adds -rtsopts so RTS parameters can be overridden at runtime.
Collaborator
|
@elopez do you know why |
Collaborator
Author
|
@msooseth it's expected; Echidna does not build with current hevm main. It should resolve itself once we update hevm in Echidna (likely via crytic/echidna#1499) |
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.
Description
This tweaks -A4m -> -A32m; see https://downloads.haskell.org/ghc/latest/docs/users_guide/runtime_control.html#rts-flag-A-size
bench-perf shows 60%+ improvements across tests due to less time spent in GC. I haven't tested symbolic execution through hevm CLI but it's likely to benefit too.
For comparison, we ship -A64m as default in echidna but even higher values like -A1g show improvement for very large machines.
Checklist