这是indexloc提供的服务,不要输入任何密码
Skip to content

Conversation

@twoeths
Copy link
Contributor

@twoeths twoeths commented Sep 10, 2025

Motivation

  • we want to know more details about the epoch transition time

Description

  • revise metric bucket:
    • 0.01, 0.05, 0.1 is unrealistic even with state-transition-z
    • add more realistic buckets: 2, 2.5
    • sync that with lodestar_precompute_next_epoch_transition_duration_seconds
  • also log epoch transition duration

@twoeths twoeths requested a review from a team as a code owner September 10, 2025 02:48
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @twoeths, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request aims to enhance the monitoring and understanding of epoch transition performance by refining existing metrics and introducing new logging. The changes ensure that the collected data more accurately reflects real-world performance, enabling better analysis and optimization of critical blockchain processes.

Highlights

  • Metric Bucket Revision: The buckets for lodestar_stfn_epoch_transition_seconds and lodestar_precompute_next_epoch_transition_duration_seconds metrics have been updated to reflect more realistic epoch transition times, removing very low, unrealistic values and adding higher, more relevant ones.
  • Epoch Transition Duration Logging: The prepareNextSlot.ts file now logs the duration of the epoch transition, providing more detailed insights into its performance.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the metric buckets for epoch transition duration to provide more realistic and detailed measurements, and also introduces logging for this duration. The changes align well with the stated goals. My feedback focuses on improving the precision and reliability of the new duration logging.

const precomputeEpochTransitionTimer = isEpochTransition
? this.metrics?.precomputeNextEpochTransition.duration.startTimer()
: null;
const start = Date.now();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For measuring durations, process.hrtime.bigint() is generally preferred over Date.now(). Date.now() is based on the system clock, which can be adjusted (e.g., by NTP), potentially leading to inaccurate or even negative durations. process.hrtime.bigint() provides a monotonic, high-resolution timer that is not affected by system time changes. You'll need to update the duration calculation accordingly where this start variable is used.

Suggested change
const start = Date.now();
const start = process.hrtime.bigint();

headSlot,
prepareSlot,
previousHits,
durationMs: Date.now() - start,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

To align with the change from Date.now() to process.hrtime.bigint(), this duration calculation should be updated. process.hrtime.bigint() returns nanoseconds, so it needs to be converted to milliseconds for the log.

Suggested change
durationMs: Date.now() - start,
durationMs: Number(process.hrtime.bigint() - start) / 1_000_000,

@codecov
Copy link

codecov bot commented Sep 10, 2025

Codecov Report

❌ Patch coverage is 75.00000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 54.09%. Comparing base (4a37a4b) to head (e17e527).
⚠️ Report is 1 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #8361   +/-   ##
=========================================
  Coverage     54.09%   54.09%           
=========================================
  Files           850      850           
  Lines         64193    64195    +2     
  Branches       4855     4854    -1     
=========================================
+ Hits          34723    34725    +2     
  Misses        29393    29393           
  Partials         77       77           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@wemeetagain wemeetagain merged commit 1ec12b4 into unstable Sep 10, 2025
18 of 20 checks passed
@wemeetagain wemeetagain deleted the te/revise_epoch_transition_buckets branch September 10, 2025 10:50
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.35.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants