Add hosted-runner budget for metrics query SLO

This commit is contained in:
rcourtman 2026-04-11 19:57:49 +01:00
parent 5a3affbfd9
commit a928cce126

View file

@ -48,7 +48,9 @@ import (
// - 500-node concurrent dashboard load: ~7.9ms p95 observed locally in March 2026; ~23-24ms p95 on March 26, 2026 GitHub release rehearsals;
// ~18.9-25.2ms p95 on April 11, 2026 local steady-state verification; ~36.9-41.7ms p95 on the April 11, 2026 governed RC rehearsals
// → local SLO 30ms, GH Actions SLO 45ms
// - QueryManyResources: ~22µs → SLO 500µs
// - QueryManyResources: ~32µs locally on April 11, 2026; ~1.09ms p95 on the
// April 11, 2026 governed RC dry run
// → local SLO 500µs, GH Actions SLO 1.5ms
const (
// SLOWriteBatchP95 is the p95 target for WriteBatchSync with 100 metrics —
// the hot path during periodic buffer flushes.
@ -97,6 +99,10 @@ const (
// SLOQueryManyResourcesP95 is the p95 target for Query with 100 resources
// in the table — validates that index isolation prevents full table scans.
SLOQueryManyResourcesP95 = 500 * time.Microsecond
// SLOQueryManyResourcesGitHubActionsP95 absorbs the hosted-runner envelope
// observed on the governed RC rehearsal while preserving the stricter local
// index-isolation budget.
SLOQueryManyResourcesGitHubActionsP95 = 1500 * time.Microsecond
// SLORollupTierBatchedP95 is the p95 target for the production batched
// rollupTier path (50 resources × 2 metrics × 20 raw points), which must
@ -625,11 +631,12 @@ func TestSLO_QueryManyResources(t *testing.T) {
})
p95 := pct(latencies, 0.95)
target := effectiveSLOTarget(SLOQueryManyResourcesP95, SLOQueryManyResourcesGitHubActionsP95)
t.Logf("QueryManyResources(100) p50=%v p95=%v p99=%v SLO=%v",
pct(latencies, 0.50), p95, pct(latencies, 0.99), SLOQueryManyResourcesP95)
pct(latencies, 0.50), p95, pct(latencies, 0.99), target)
if p95 > SLOQueryManyResourcesP95 {
t.Errorf("SLO VIOLATION: p95=%v exceeds target %v", p95, SLOQueryManyResourcesP95)
if p95 > target {
t.Errorf("SLO VIOLATION: p95=%v exceeds target %v", p95, target)
}
}