arc-runners: let runner defs select a workflow scheduler#804
arc-runners: let runner defs select a workflow scheduler#804georgehong wants to merge 4 commits into
Conversation
Capacity reportcommit ✅ simulate-cluster✅ analyze-utilization |
tofu plan — arc-cbr-production✅ Plan succeeded · commit Plan output |
tofu plan — arc-cbr-production-uw1✅ Plan succeeded · commit Plan output |
tofu plan — meta-prod-aws-ue1✅ Plan succeeded · commit Plan output |
tofu plan — lf-prod-aws-ue1❌ Plan failed · commit Plan output |
tofu plan — lf-prod-aws-ue2✅ Plan succeeded · commit Plan output |
Add an optional per-def scheduler_name. generate_runners.py stamps it on both the real workflow pod (schedulerName) and the listener's CAPACITY_AWARE_WORKFLOW_SCHEDULER_NAME env, which the ARC fork applies to the ph-w-* workflow placeholder. Keeping both in sync ensures the placeholder reserves a slot the real pod can actually claim. Empty = default scheduler. This adds only the capability; opting specific defs in is done separately. ghstack-source-id: 9710623 Pull-Request: #804
|
@claude can you explain this changes? How is the custom scheduler toggled on/off for particular clusters? |
|
Claude finished @jeanschmidt's task in 1m 27s —— View job Explanation: per-def workflow scheduler knobThis PR adds plumbing for a per-runner-def What the change does
Both are driven by the same value on purpose. The placeholder reserves a slot ahead of the real workflow pod; if the two used different schedulers, the placeholder could reserve a slot the real pod can't claim ( How it's toggled on/off — and the key caveatThe toggle is per def, not per cluster. In scheduler_name = runner.get("scheduler_name", "")
scheduler_name_line = f" schedulerName: {scheduler_name}" if scheduler_name else ""
The subtlety for your question: defs under Note on the "pilot" defsThe PR description says it opts |
|
this change only allows you to deploy all at once, or none. Consider making it conditional on the existence of the custom scheduler module on cluster definitions |
Stack from [ghstack](https://github.com/ezyang/ghstack/tree/0.14.0) (oldest at bottom): * __->__ pytorch#830 * pytorch#829 * pytorch#828 Add bin-pack-scheduler to the meta-staging-aws-ue1 module list so it deploys to staging. Split from the module (pytorch#803) and the scheduler_name knob (pytorch#804) so turning it on is its own revertible switch.
Stack from ghstack (oldest at bottom):
Add a per-def scheduler_name knob. generate_runners.py stamps it onto both the
real workflow pod (schedulerName) and the listener's
CAPACITY_AWARE_WORKFLOW_SCHEDULER_NAME env, which the ARC fork applies to the
ph-w-* workflow placeholder. Keeping both in sync ensures the placeholder
reserves a slot the real pod can actually claim. Empty = default scheduler.
Opt two CPU defs (l-x86iavx512-8-64, l-x86iavx2-8-32) into bin-pack-scheduler
as a pilot. Unit tests cover both the set and unset paths.