Skip to content

Conversation

@samcm
Copy link
Member

@samcm samcm commented Feb 12, 2026

Summary

  • Adds 3 new resource charts to the slot detail Node Resources panel alongside existing CPU utilization
  • Memory Usage: RSS total/anon/file/swap per CL/EL process with metric selector
  • Disk I/O: read/write bytes with CL/EL breakdown per node
  • Network I/O: traffic by port label (P2P, discovery, etc.) with beacon API/RPC ports hidden by default
  • Resource type tab bar for switching between CPU, Memory, Disk I/O, and Network views
  • All charts share the same annotation overlays, node selector, reference node filter, and sync group

Depends on: ethpandaops/xatu-cbt (feat/node-resource-models)

Add CPU utilization visualization to the slot detail page, powered by
observoor eBPF agent data via the new fct_node_cpu_utilization model.

Features:
- Per-node CL/EL CPU utilization chart (0-12s slot window)
- Aggregate view (mean/min/max toggle) and single-node detailed view
- Normalized system utilization (sys mean/min/max) and hottest single core
- EIP-7870 reference nodes filter toggle
- Block arrival time overlay (markLines)
- URL-backed state for node selection, metric, and filter
Replace 8 separate line series with shaded min-max bands and clean
mean lines. Legend drops from 8 items to 2-4. "sys" terminology
replaced with "% of all cores". Slot number added to subtitle.
Peak core series hidden by default (toggle-able in legend).
Replace broken stacking bands with clean gradient area fills. Add
annotation overlay system with toggleable markLines for block arrival,
head update, execution duration, and data column range. Single-node
view shows exact per-node events; aggregate view shows p50 values.
Execution timing data fetched from intEngineNewPayload API.
…ments

- Add markArea support to MultiLineChart (colored regions on chart)
- Add slot phase boundary markLines (Block/Attestations/Aggregations)
- Move metric dropdown into chart PopoutCard header
- Change aggregate annotation ranges from p25-p75 to min-p95
- Fix double-toggle on annotation/7870 checkboxes (pointer-events-none)
- Fix scroll-to-top on control changes (resetScroll: false)
- Extract shared CL/EL client sets to utils/ethereum.ts
- Update subtitle to link to Observoor repo
- Update IntEngineNewPayloadFastest → IntEngineNewPayloadFastestExecutionByNodeClass
  after table rename (pre-existing master issue)
- Fix navigate type narrowing by using search spread instead of prev callback
- Replace any casts with EChartsTooltipParam interface in tooltip formatter
- Move PHASE_BOUNDARY_COLORS to module scope to fix exhaustive-deps warning
- Regenerate API types from local cbt-api (removes stale max_single_core_pct)
Regenerated API types and updated component/hook imports to match
the renamed xatu-cbt table.
Add three new resource charts alongside existing CPU utilization:
- Memory Usage: RSS total/anon/file/swap per CL/EL process
- Disk I/O: read/write bytes with CL/EL breakdown per node
- Network I/O: traffic by port label (P2P, discovery, etc.)
  with beacon API/RPC ports hidden by default

Resource type tabs allow switching between charts. All charts share
the same annotation overlays, node selector, and sync group.
@samcm samcm requested a review from Savid as a code owner February 12, 2026 10:59
Replace tab-based switching with a 2-column grid showing CPU, Memory,
Disk I/O, and Network charts simultaneously. Zero-pad all 250ms buckets
so charts show continuous lines (no gaps in quiet periods). Add smooth
curve interpolation (0.4) to all series for cleaner visualization.
Show CL Read, CL Write, EL Read, EL Write series (matching the
single-node view pattern) instead of just Read/Write totals.
Shift bucket offset by BUCKET_SIZE (250ms) so each data point represents
the end of its aggregation window rather than the start.
Gauge metrics always have a value, so empty leading buckets should use
the first known value rather than 0. Prevents false spike from 0 at
chart start. Delta metrics (disk, network) still zero-fill correctly.
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.

1 participant