Skip to content

EVM-39: EvmBenchmarkLogReporter #154

@Puneethkumarck

Description

@Puneethkumarck

Context

The benchmark log reporter appends periodic performance summaries to a log file for offline analysis. It follows the same pattern as the Solana BenchmarkLogReporter, computing deltas and throughput rates over a configurable interval. The chain label from ChainConfig distinguishes EVM entries from Solana entries in shared log files.

Specification

  • Layer: Infrastructure (infrastructure/metrics/EvmBenchmarkLogReporter.java)
  • Interval: Every 300 seconds
  • Log format: Pipe-delimited fields:
    timestamp | chain | blk/s | recv | written | failed | failed% | xfers_nat | xfers_tok | accts | batches | reorgs
    
  • Calculations:
    • blk/s = delta blocks processed / interval seconds (TPS)
    • failed% = (delta failed / delta received) * 100, guarded against division by zero
    • All other fields are delta values (current - previous snapshot)
  • Chain label: From ChainConfig (e.g., "ethereum", "polygon", "base")
  • Output: Appends to bench log file configured via BENCH_LOG environment variable
  • Sources: Reads counter values from EvmMicrometerMetricsRecorder

Acceptance Criteria

  • Log line follows the specified pipe-delimited format
  • TPS (blk/s) calculated correctly as delta / interval
  • failed% handles zero-received edge case (no division by zero)
  • All fields represent deltas between snapshots (not cumulative totals)
  • Chain label sourced from ChainConfig
  • Unit tests verify format string, TPS calculation, and failed% edge cases

Dependencies

  • EVM-38: EvmMicrometerMetricsRecorder (counter source)

References

Metadata

Metadata

Labels

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions