Skip to main content

Module session_metrics

Module session_metrics 

Source
Expand description

Session hot-path observability.

Thread-safe atomic counters and timing for save/append/serialize/IO operations. Gated behind PI_PERF_TELEMETRY=1 for zero overhead in production: when disabled, all recording methods are instant no-ops.

§Design

  • TimingCounter: atomic count + total microseconds + max microseconds.
  • ByteCounter: atomic count + total bytes.
  • SessionMetrics: composes counters for every instrumented phase.
  • ScopedTimer: RAII guard that records elapsed time on drop.
  • global(): returns &'static SessionMetrics (lazy-initialized once).

§Integration points

Currently instrumented (files owned by this bead):

  • session_sqlite.rs: save, load, metadata load
  • session_index.rs: lock acquisition, upsert, list, reindex

Future instrumentation (requires session.rs access):

  • Session::save() JSONL path: queue wait, serialization, IO, persist
  • Session::append_*(): in-memory append timing

Structs§

ByteCounter
Atomic counter for tracking bytes written/read.
ByteSnapshot
Point-in-time snapshot of a ByteCounter.
MetricsSnapshot
Complete point-in-time snapshot of all session metrics.
ScopedTimer
RAII timer that records elapsed microseconds into a TimingCounter when dropped. If counter is None (metrics disabled), drop is a no-op.
SessionMetrics
Centralized session hot-path metrics collector.
TimingCounter
Atomic counter that tracks invocation count, cumulative time (µs), and peak time (µs) for a single instrumented phase.
TimingSnapshot
Point-in-time snapshot of a TimingCounter.

Functions§

global
Return the global SessionMetrics singleton.