-
Notifications
You must be signed in to change notification settings - Fork 279
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[suggestion] Persistent Executor #3716
Comments
So here is flamegraph for sumeragi main loop (I am using Looks like Here are measurements how much time some functions take for single transaction (1600 tps load with config as here). All values are in microseconds, values for
So we can see that Related: #4727 |
related #4914 |
After #5048 merged, executor related things (linker initialization, module instantiation, memory free) started to take noticeable amount of flamegraph. Potentially we could get good tps improvement with persistent executor, but there are problems with its implementation related to lifetimes. |
Using |
Feature request
The executor should persist between execution of different transactions. Ideally it should be brought up either after an upgrade or after a quick recovery (from a power outage). It should not have significant persistent storage (caching is fine, storing information that can affect the next verdict is not).
@mversic suspects that
wasmtime
could have an out-of-memory condition if WASM is not periodically blanked, so the suggestion is to start with a block scope and then extend it further to longer periods of time. I Suggest making it a configuration parameter.In detail we need the following:
configs/peer/config.json
that can beEvery n transactions
,every n blocks
,until peer crashes
, defaulting toevery 1 transaction
.n
ofx
entity.Motivation
The operation of loading and unloading an executor affects the performance of regular transaction processing, so it makes sense to optimise the process and avoid unnecessary loading and blanking of memory if the old memory does a good-enough job.
Who can help?
@mversic @appetrosyan
The text was updated successfully, but these errors were encountered: