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
Dependencies
- EVM-38: EvmMicrometerMetricsRecorder (counter source)
References
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 fromChainConfigdistinguishes EVM entries from Solana entries in shared log files.Specification
infrastructure/metrics/EvmBenchmarkLogReporter.java)blk/s= delta blocks processed / interval seconds (TPS)failed%= (delta failed / delta received) * 100, guarded against division by zeroChainConfig(e.g., "ethereum", "polygon", "base")BENCH_LOGenvironment variableEvmMicrometerMetricsRecorderAcceptance Criteria
failed%handles zero-received edge case (no division by zero)ChainConfigDependencies
References