Skip to content

Microbenchmark Fault remediation module #1519

Description

@XRFXLP

Summary

Build repeatable fault-remediation microbenchmarks covering reconcile throughput, maintenance-CR creation, equivalence-group behavior, cancellation, cold start, concurrency, and Kubernetes API pressure.

Motivation

Fault-remediation cost and correctness depend on:

  • Remediation-ready event rate
  • Reconcile concurrency
  • Kubernetes API latency/QPS
  • Equivalence and superseding groups
  • Existing maintenance CR state
  • Node annotation size
  • Cancellation/recovery events
  • Cold-start database queries

We need current-release baselines and safe concurrency guidance.

Scenarios

1. Reconcile throughput

Generate remediation-ready events at:

  • Nominal rate
  • Expected peak
  • Burst
  • Find-the-knee

Measure event-to-CR-create latency, reconciles/s, queue depth, CPU, and memory.

2. Concurrent node remediation

Trigger remediation for:

  • 10 nodes
  • 100 nodes
  • 500 nodes

Measure completion time, API request rate, annotation updates, and errors.

3. Concurrency sweep

Test:

  • 1 reconcile (default)
  • 2
  • 4
  • 8
  • Find-the-knee

Measure throughput, duplicate CR attempts, annotation conflicts, API throttling, and ordering failures.

4. Equivalence groups

Test:

  • Duplicate events in one group
  • Multiple matching groups
  • Superseding groups
  • Newest-session selection
  • Existing in-progress/succeeded/failed CRs

Verify exactly one appropriate remediation action is created.

5. Remediation actions

Benchmark:

  • RebootNode
  • TerminateNode
  • GPUReset
  • Partial GPU reset
  • Unsupported action

Measure template/render cost, CR-create latency, and action-selection correctness.

6. Cancellation/recovery

During remediation:

  • UnQuarantined
  • Cancelled
  • Healthy partial recovery
  • Node deletion
  • Manual operator changes

Verify annotation cleanup and correct faultRemediated=true/false outcomes.

7. Cold start/restart

Restart fault-remediation with:

  • In-progress work
  • Missing/stale resume token
  • Existing maintenance CR
  • Completed CR without completion marker
  • Cancellation while offline

Verify no duplicate CR and correct recovery.

8. Kubernetes/API failures

Inject:

  • AlreadyExists
  • Conflict
  • 429
  • Webhook rejection
  • Timeout
  • Janitor unavailable

Measure retries, queue growth, terminal failures, and recovery.

9. Annotation/state scale

Increase:

  • Active equivalence groups/node
  • Historical fault events/node
  • Annotation payload size

Measure evaluation latency, update conflicts, CPU, and memory.

Required measurements

  • Event-to-CR-create P50/P90/P99
  • Reconciles/s
  • Queue depth/retry count
  • API requests/conflicts/429s
  • CR create/skip/failure counts
  • CPU and memory
  • Annotation size/update latency
  • Cold-start duration
  • Duplicate/missing CRs
  • Missing/duplicate event IDs

Validity requirements

  • Stable event and CR IDs
  • At least three repetitions
  • Documented warmup
  • Guaranteed QoS and pinned FR
  • Real Kubernetes API/CRDs
  • Controlled Janitor/webhook behavior
  • Hard scenario timeout

Pass criteria

At expected peak:

  • No crash/OOM
  • No duplicate remediation CRs
  • Correct equivalence-group selection
  • Correct cancellation outcomes
  • Bounded queue growth
  • Automatic restart recovery

At saturation:

  • Limiting resource is identified
  • Degradation is observable
  • Backlog drains after load/API recovery

Deliverables

  • Remediation-ready event generator
  • Equivalence-group fixtures
  • Existing-CR state fixtures
  • Cancellation/cold-start scenarios
  • API failure injector
  • Prometheus queries
  • Event/CR reconciliation
  • Current-release baseline
  • Concurrency/QPS/memory guidance

Existing assets

  • fault-remediation/
  • tests/fault_remediation_test.go
  • tests/cold_start_test.go
  • tests/fault_management_test.go
  • janitor/
  • Existing FR E2E fixtures and metrics

Non-goals

  • Janitor hardware-action duration
  • Node-drainer eviction throughput
  • Fault-quarantine rule evaluation
  • Full-system 50k-node validation

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions