This repository has been archived by the owner on Aug 2, 2022. It is now read-only.
Clean up wasm cache entries based on irreversibility & fix wavm module cleanup #6983
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.
Change Description
wasm cache entries have previously remained indefinitely creating a sort of memory leak. If using the wavm runtime this also creates a performance drag. This change is a naive fix to clean the wasm cache. It improves upon #2701 in that it waits for irreversibility before cleaning the cache (reducing cache thrashing around forks), and it also implements the garbage collection tracking for wavm so that wavm will actually free its instances.
Unfortunately there are still problems with this naive approach that makes this change not acceptable. For one, code instantiated on a fork that is thrown out is never pruned. More severely, code that is shared by multiple accounts tends to be overly pruned because getting a reference count of code used upon nodeos startup is required to avoid that.
This is mainly be put up as draft at this time to judge improvement with #6909. Unfortunately we still leave a lot of performance on the table with wavm (nearly 50%) even with this fix but it should at least not grind to a halt any longer.
Consensus Changes
API Changes
Documentation Additions