Context
EDG advertises "ultra-low latency" and high-performance ingestion (README), but no published baseline numbers exist for the NATS data plane. Before we can reason about regressions, capacity planning, or the impact of validation overhead in internal/core/handler.go, we need a documented, reproducible baseline at the NATS layer — independent of EDG's processing pipeline.
This issue covers the NATS-level baseline only. End-to-end load through the EDG core (handler → validation → JetStream → Telegraf) is tracked separately in the scenario-based load test issue.
Goals
- Reproducible script at
scripts/perf/nats-bench.sh wrapping nats bench for:
- Core NATS publish throughput (
platform.data.asset subject)
- JetStream publish throughput (
PLATFORM_DATA stream, matching cmd/core/main.go config)
- Pub/Sub round-trip latency (p50, p95, p99)
- Documented baseline at
docs/perf/baseline-nats.md:
- Hardware/OS context (CPU, memory, disk type, NATS version)
- Result table for varying message sizes (e.g., 256B, 1KB, 4KB) and publisher counts (1, 8, 32)
- Distinction between core NATS and JetStream numbers (the gap is the durability cost)
- README/docs link so future perf work can reference the baseline.
Out of Scope
- EDG core handler/validation overhead (covered by scenario load test issue)
- Long-running soak tests (>10 min)
- Multi-node NATS clustering
- CI integration — this is run-on-demand for now
Acceptance Criteria
Notes
Context
EDG advertises "ultra-low latency" and high-performance ingestion (README), but no published baseline numbers exist for the NATS data plane. Before we can reason about regressions, capacity planning, or the impact of validation overhead in
internal/core/handler.go, we need a documented, reproducible baseline at the NATS layer — independent of EDG's processing pipeline.This issue covers the NATS-level baseline only. End-to-end load through the EDG core (handler → validation → JetStream → Telegraf) is tracked separately in the scenario-based load test issue.
Goals
scripts/perf/nats-bench.shwrappingnats benchfor:platform.data.assetsubject)PLATFORM_DATAstream, matchingcmd/core/main.goconfig)docs/perf/baseline-nats.md:Out of Scope
Acceptance Criteria
scripts/perf/nats-bench.shruns against a local NATS+JetStream and prints structured resultsdocs/perf/baseline-nats.mdincludes at least one full result matrix with environment metadatacmd/core/main.go:79-95(FileStorage, retention, replicas)Notes
nats benchships with the officialnatsCLI — no new build dependency.