-
Notifications
You must be signed in to change notification settings - Fork 329
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
Hermes operational data processing time #1362
Comments
To add more context here: Hermes spends 19 seconds between these two subsequence actions:
This time is spent doing roughly four queries, all of them involved in building the message to update the client hosted on
Step 3 is the most time intensive and wasteful (because we pull all consensus states indiscriminately but only use the list of obtained states to figure out the trusted height. We should either make smarted use of pagination or optimistically query for the height we think we need. |
Have you done time measurements for the steps above? And how? (ideally we should run with https://hermes.informal.systems/help.html#profiling instead of checking log timestamps). Is the 19 sec above typical? Or only in some cases? re: 3. - we can optimize and do the all-consensus-state queries only if the client state latest_height is higher than the target height, otherwise we can use that as trusted height. This should be the case for passive packet relaying in 99% of cases. |
One more thing, we discussed this before. Workers should be able to query the chain directly. There is no reason for the queries to be serialized via the runtime, this is only required for Tx. |
This is all based on log timestamps, but it is consistent. Every single operation takes ~20s, regardless of the chain it is on. |
Ok, thanks. then we should be able to do a quick run with profiling enabled to see where exactly we spend the 20sec. We initially try with a simple @mircea-c , could you build from
and then |
Crate
Hermes ibc_rs v0.7.1
Summary of Bug
Hermes is only able to process ~3 transactions / minute. This is woefully inadequate for periods of high traffic where > 10 transactions are submitted every minute.
This is more of a design flaw than a bug, but I don't think it qualifies as a feature request.
Version
hermes 0.7.1+5d38857a
Steps to Reproduce
Run
hermes start
submit a transaction to either of the chains hermes is relaying on. Notice, in this example log output, the time difference between prepending the client update and batch assembly:Acceptance Criteria
Hermes processes op data significantly faster.
For Admin Use
The text was updated successfully, but these errors were encountered: