-
Notifications
You must be signed in to change notification settings - Fork 92
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
Preload asset/app creators before evaluation #749
Conversation
Suggest holding off for now - build is failing, and the snapshotting and beefier machine changes will play a much larger role in performance improvement. |
02bc3da
to
242e05f
Compare
Codecov Report
@@ Coverage Diff @@
## develop #749 +/- ##
===========================================
+ Coverage 55.17% 55.37% +0.19%
===========================================
Files 27 27
Lines 3815 3850 +35
===========================================
+ Hits 2105 2132 +27
- Misses 1435 1440 +5
- Partials 275 278 +3
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks correct, but should it be part of the EvalForIndexer interface? I thought that interface's main purpose was to make it easier to preload everything.
I don't think I understand. |
I'm asking about the design here, not the implementation. You're using a combination of these new methods:
I thought one reason for those methods was to avoid needing this sort of preloading, so I wonder if the interface is wrong. Should it be a single method instead of 3? Or perhaps we add a 4th method to the interface specifically designed to help with caching. |
If your suggestion is to have the code that decides what to preload in go-algorand, then @tsachiherman was against it. We still need the interface functions in case we forget to preload something and the evaluator needs it. Let me know if this doesn't quite answer your questions. |
@winder - there are two "faces" for the evaluator: The reason the evaluator need to be "dynamic" is that it's also being used for the transaction pool, where we add transactions on the fly. I wouldn't oppose to open a discussion on whether the evaluator need to be resource-predictable or not ( outside the scope of this PR ). |
@tolikzinovyev @tsachiherman thanks for the explanations. I guess the difference between algod and indexer is that algod's caching system exists outside of these functions and Indexer's is using them to initialize the cache. It might be good to rename this function to something like Do we need to modify |
After we give the resources to the evaluator, it's not supposed to request them. |
134e2f7
to
fd66afd
Compare
Summary
Preloading asset/app creators in a batch improves performance by ~10%.
Depends on #746.