This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# Performance budgets
|
||||
|
||||
Budgets are acceptance targets measured in the documented test environment.
|
||||
|
||||
## Target scale
|
||||
|
||||
- 1 Unraid host;
|
||||
- 150 containers;
|
||||
- 40 disks;
|
||||
- 300 service probes;
|
||||
- 2,500 active series across an intensive dashboard set;
|
||||
- 10 concurrent authenticated users;
|
||||
- 1 wallboard open for at least 24 hours.
|
||||
|
||||
Container ingestion retains bounded headroom up to 250 records so a host that
|
||||
briefly grows beyond the 150-container performance target remains observable.
|
||||
The 150-container fixture remains the required latency and UI acceptance scale;
|
||||
the additional headroom is a safety boundary, not a higher performance claim.
|
||||
|
||||
## Browser
|
||||
|
||||
| Metric | Target |
|
||||
|---|---:|
|
||||
| First meaningful overview on LAN, warm service | < 2.0 s |
|
||||
| Main route interaction ready | < 3.0 s |
|
||||
| Live sample visual delay | < 2.5 s at 2 s interval |
|
||||
| Drag/resize frame behavior | no sustained visible jank |
|
||||
| 24 h wallboard heap | bounded; no monotonic leak |
|
||||
| Active subscriptions after navigation | returns to expected baseline |
|
||||
| Large table scroll | responsive with virtualization |
|
||||
|
||||
Record browser, hardware and network.
|
||||
|
||||
## API
|
||||
|
||||
| Metric | Target |
|
||||
|---|---:|
|
||||
| P95 cached/config API | < 250 ms |
|
||||
| P95 24 h bounded range query | < 750 ms excluding unavailable upstream |
|
||||
| P95 inventory list | < 500 ms at target scale |
|
||||
| WebSocket reconnect | automatic within 10 s under normal recovery |
|
||||
| Error response | bounded and correlated |
|
||||
|
||||
## Resource envelope
|
||||
|
||||
Initial production goals, to validate:
|
||||
- API/worker/agent combined idle memory should remain reasonable for Unraid;
|
||||
- CPU near idle outside query/evaluation bursts;
|
||||
- database growth predictable under retention;
|
||||
- no unbounded goroutines, queues, caches or event payloads.
|
||||
|
||||
Do not invent a pass. Record actual values and refine budgets through an ADR if hardware/source constraints provide evidence.
|
||||
|
||||
## Query limits
|
||||
|
||||
- max series and points per request;
|
||||
- max concurrent upstream requests;
|
||||
- step adjusted to viewport/time range;
|
||||
- heavy query rejection with guidance;
|
||||
- metadata/label enumeration bounded.
|
||||
|
||||
## Tests
|
||||
|
||||
- frontend bundle analysis;
|
||||
- Lighthouse or equivalent where meaningful;
|
||||
- scripted dashboard load;
|
||||
- WebSocket fan-out/load;
|
||||
- Prometheus slow/error injection;
|
||||
- real wallboard soak of at least 17 hours under the explicit M10-14
|
||||
product-owner duration decision;
|
||||
- worker/probe concurrency;
|
||||
- database query plans for large lists;
|
||||
- restart/recovery under load.
|
||||
Reference in New Issue
Block a user