Repository navigation
perf-eval: Right-size scheduler churn node pools - #1315
Liyu Ma (liyu-ma) wants to merge 2 commits into
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
For reviewers only: reply |
There was a problem hiding this comment.
🟢 Approval recommended
Changes are consistent across pipeline, step templates, Python wiring, and tests, and the updated validation count matches the resized node pool topology.
Pull request overview
This PR right-sizes the AKS node pools and ClusterLoader2 Prometheus resource requests for the perf-eval/pod-churn-50k-sched scheduler benchmark, while preserving the 1,000-node / 20,000-pod topology and adjusting validation/TTL to match the resized cluster.
Changes:
- Resize AKS default, Prometheus, and workload node pools (D8→D2, D64→D4, D4→D2) and extend resource deletion TTL (8h→12h).
- Plumb scenario-specific Prometheus scaling factors through the pipeline → execution step → ClusterLoader2 override generation (with defaults preserved).
- Update cluster ready-node validation to match the new total node count (1006→1004) and adjust
cpu_per_node(4→2) to keep pods schedulable on D2_v3.
File summaries
| File | Description |
|---|---|
| steps/topology/service-churn/validate-resources.yml | Updates desired ready node validation count to match resized node pools. |
| steps/engine/clusterloader2/large-cluster/execute.yml | Adds CLI wiring for Prometheus scaling factors (env-driven with defaults). |
| scenarios/perf-eval/pod-churn-50k-sched/terraform-inputs/azure.tfvars | Right-sizes AKS node pools and extends deletion TTL for this scenario. |
| pipelines/perf-eval/Scheduler Benchmark/pod-churn-50k-sched.yml | Adjusts workload CPU-per-node and sets scenario-specific Prometheus scaling factors. |
| modules/python/tests/test_large_cluster.py | Adds/updates unit tests validating new Prometheus factor plumbing. |
| modules/python/clusterloader2/large_cluster/large_cluster.py | Extends override generation and CLI args to support configurable Prometheus scaling factors. |
Review details
- Files reviewed: 6/6 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
Summary
Standard_D8_v3to 3 xStandard_D2_v3Standard_D64_v3to 1 xStandard_D4_v3Standard_D4_v3toStandard_D2_v3while preserving the benchmark's 1,000-node / 20,000-pod topologycpu_per_nodefrom 4 to 2 so the generated 20 pods/node remain schedulable on D2_v3Utilization evidence
Baseline build 79343 provided 39-40 live samples per pool. It ultimately failed after the 8-hour TTL deleted AKS before post-test cloud-info collection; the utilization samples below were captured successfully before deletion.
Verification build 79379 succeeded and supplied 52-54 healthy live samples per pool:
No CPU sample exceeded 80%. The workload pools retain all 1,000 scheduler candidate nodes and the same deployment/pod scale. D2_v3 is already the smallest practical workload SKU; reducing workload node count would change the benchmark's scheduler-scale semantics.
Validation
python3 -m unittest tests.test_large_cluster -v(41 tests passed)git diff --check main...HEAD