Repository navigation
GPU CRUD: raise per-step timeout to 45m and align ARM poll ceiling - #1323
Open
Xu Xue (xuexu6666) wants to merge 1 commit into
Open
Xu Xue (xuexu6666) wants to merge 1 commit into
Xu Xue (xuexu6666) wants to merge 1 commit into
Conversation
|
For reviewers only: reply |
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Workload readiness waits share the increased timeout, potentially exceeding the unchanged 180-minute job budget.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Raises GPU CRUD pipeline step timeouts from 600 to 1800 seconds to accommodate slow node readiness.
Changes:
- Updates all eight GPU stages to use a 1800-second timeout.
- Keeps the existing 180-minute job timeout.
File summaries
| File | Description |
|---|---|
pipelines/perf-eval/GPU Benchmark/k8s-gpu-cluster-crud.yml |
Increases timeout values for every GPU stage. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Xu Xue (xuexu6666)
force-pushed
the
xuxue/gpu-crud-scale-timeout-fix
branch
from
September 12, 2026 18:14
fe655c7 to
1a14c62
Compare
The GPU Cluster CRUD pipeline (defId 61) fails on most scheduled runs because A100/H100 nodes take longer to reach Ready than the per-step budget allows. A first attempt at step_time_out=1800 (30m) still failed (build 79914): the 1->2 A100 scale-up needed >30m, and step_time_out alone cannot exceed 30m because the ARM long-running-operation poll was hardcoded to TIMEOUT_SECONDS=1800. When the poll abandons a still-running op, the next CRUD step collides with it (OperationNotAllowed) and the run hard-fails. Changes: - step_time_out 600 -> 2700 (45m) for all GPU stages, driving the K8s readiness wait (operation_timeout_minutes = step_time_out/60). - Make the ARM poll timeout configurable: begin_create_or_update_with_retry gains a timeout_seconds arg (defaults to TIMEOUT_SECONDS), threaded through prepare_create_operation / prepare_scale_operation. - AKSClient derives arm_operation_timeout_seconds = max(step_timeout_seconds, 1800) so the ARM ceiling tracks the per-step timeout for GPU while non-GPU callers keep the historical 1800s floor. Config + minimal code; unit tests added. Well within the per-stage timeout_in_minutes: 180 budget.
Xu Xue (xuexu6666)
force-pushed
the
xuxue/gpu-crud-scale-timeout-fix
branch
from
September 12, 2026 18:32
1a14c62 to
9bc4e5f
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The GPU Cluster CRUD pipeline (
pipelines/perf-eval/GPU Benchmark/k8s-gpu-cluster-crud.yml, ADO defId 61) fails on most scheduled runs. Node-pool scale/create steps hit the per-step timeout while A100/H100 nodes are still coming up:step_time_out(was 600s / 10 min viaoperation_timeout_minutes) — gives up first withOnly N nodes are ready.(OperationNotAllowed) ... in-progress scale node pool operation, cascading to a hard failure.A first attempt at
step_time_out: 1800(30 min) still failed (build 79914): the1→2A100 scale-up needed more than 30 min, and — critically —step_time_outalone cannot exceed 30 min because the ARM long-running-operation poll was hardcoded toTIMEOUT_SECONDS = 1800.Fix
step_time_out600 → 2700 (45 min) for all GPU stages. This drives the K8s readiness wait (operation_timeout_minutes = step_time_out / 60).begin_create_or_update_with_retrygains atimeout_secondsarg (defaults toTIMEOUT_SECONDS), threaded throughprepare_create_operation/prepare_scale_operation.AKSClientderivesarm_operation_timeout_seconds = max(step_timeout_seconds, 1800)so the ARM ceiling tracks the per-step timeout for GPU while non-GPU callers keep the historical 1800s floor.Together these let a GPU step run the full 45 min on both the readiness and ARM sides, so the op is no longer abandoned mid-flight and the
OperationNotAllowedcascade disappears. Well within the per-stagetimeout_in_minutes: 180budget.Testing
begin_create_or_update_with_retry,prepare_*forwarding,AKSClient.arm_operation_timeout_secondsfloor/track).modules/pythonsuite: 824 passed, 1 skipped.