This repository has been archived by the owner on Aug 2, 2022. It is now read-only.
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
pre-1.4 nodeos would frequently poll the system time during contract execution (to ensure a contract wasn’t executing beyond its allowed time). For most platforms this isn’t a syscall (see vDSO) but it still was a significant overhead.
1.4 (via #5799) introduced a checktime timer where a kernel timer — via BSD interval timer interface — would be scheduled instead. This allows nodeos to skip polling of system time until the timer expires. There are a few problems with the current implementation:
This PR addresses all of these issues via
Using polled checktime; deadline timer too inaccurate: min:5us max:2540us mean:507us stddev:716us
on my MBP is nowUsing 54us deadline timer for checktime: min:3us max:112us mean:22us stddev:16us
.Resolves long standing #6693
Consensus Changes
API Changes
Documentation Additions