Hi everyone,
I’ve published PerformanceEvidenceProbe, an open-source Rust CLI for collecting inspectable runtime performance evidence from existing programs.
A central rule in its design is simple: if a metric was not observed, it must not silently become numeric zero.
Performance counters differ across operating systems, and sometimes a metric is unsupported, not applicable, unavailable, or does not have equivalent semantics on another platform. PerformanceEvidenceProbe records those cases explicitly instead of manufacturing a value.
GitHub:
https://github.com/DwarfM42/PerformanceEvidenceProbe
The target program does not need to be instrumented or modified. There is no SDK to integrate, no measurement code to add, and no special build of the application is required. The probe observes an existing process externally.
A collected evidence bundle can contain:
- CPU observations
- memory observations
- process identities and lifecycle events
- run state and measurement validity
- system and collector context
- explicit "metric_unavailable" records when an observation could not truthfully be produced
The current implementation deliberately does not claim identical capabilities across platforms.
Windows x86_64 has the full-accounting collector. Linux x86_64 and macOS arm64 provide direct-root run and single-root attach collectors with intentionally narrower semantics. In v0.2.0, for example, Linux/macOS "elapsed_ns" is not timing evidence and remains zero by contract rather than being presented as an observed elapsed time.
Raw observations are persisted as machine-readable evidence, and "summary.json" is derived deterministically from that persisted evidence rather than becoming a second source of truth. Visualization and interpretation are intentionally downstream concerns.
CI currently exercises Windows, Linux, and macOS, and release binaries are published with SHA-256 checksums so the tool can be tried without building it locally.
I’d be especially interested in hearing from people who work with performance measurement, process observation, or cross-platform tooling:
Does the distinction between observed, zero, and unavailable feel useful in practice when interpreting performance results?
The goal is not to normalize every platform into the same set of numbers. It is to make the limits of each observation visible while keeping the tool simple enough to point at an existing program without modifying it.