Skip to content

[XL] Add Python Crank Scheduling tool #2106

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

LoopedBard3
Copy link
Contributor

In order to make simplify the work needed when updating the scenarios we run and to minimize the chance of error, this adds a python script to be used to generate a CI schedule from a single configuration file. Most of the recently added and updated pipeline flows already used this new flow, but this update does add an option for a machine_group to ensure machines only use other machines at similar perf levels for load and db machines.

Changes include the addition of the crank-scheduler, running the configurations through the scheduler one more time with the updated benchmarks.template.liquid, updating the benchmarks.template.liquid to include the new steps to run, and added the machine_group configuration option where applicable.

@LoopedBard3 LoopedBard3 self-assigned this Aug 7, 2025
@LoopedBard3 LoopedBard3 changed the title [Very Large] Add Python Crank Scheduling tool [XL] Add Python Crank Scheduling tool Aug 7, 2025
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces a comprehensive Python-based crank scheduling tool to automate CI pipeline generation and optimize machine/scenario allocation across multiple performance testing machines.

  • Adds a complete Python crank scheduler with sophisticated machine allocation algorithms and multi-YAML generation capabilities
  • Updates existing CI configurations to use the new machine group system and multi-capability machine definitions
  • Replaces manual YAML matrix files with JSON-based configuration and automated pipeline generation

Reviewed Changes

Copilot reviewed 23 out of 23 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
scripts/crank-scheduler/*.py Core scheduler implementation with machine allocation, runtime estimation, and template generation
scripts/crank-scheduler/requirements.txt Python dependencies for the scheduler
scripts/crank-scheduler/*.md Documentation and configuration guides
build/benchmarks_ci*.json Updated machine configurations with new capability-based structure and machine groups
build/benchmarks*.yml Updated pipeline files generated by the new scheduler
build/benchmarks.template.liquid Updated template comments to reflect new generation process

@LoopedBard3 LoopedBard3 marked this pull request as draft August 7, 2025 23:00
@LoopedBard3 LoopedBard3 force-pushed the AddPythonSchedulingTool branch from c79428e to a9d28b0 Compare August 8, 2025 00:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant