Scheduling heterogeneous partitioned resources with sharing constraints
First Claim
1. A method for scheduling jobs to run on one or more computing resources, said method comprising:
- receiving data specifying a configuration and availability of said one or more computing resources, one or more said computing resources Mi being partitionable into sub-units;
receiving data including users specified tasks, and expected durations of said specified tasks to run on said one or more said computing resources or sub-units thereof, a user task characterized as having an associated high priority level or regular priority level, and for each task, receiving data representing a set of positive preferences indicating user preferred time slots for processing said task, and data representing a set of negative user preferences indicating time slots for not processing said task;
assigning, based on said data and machines availability, users tasks to computing resources, computing resource sub-units, and time slots; and
generating a first initial schedule based on said assignments to provide, for a time horizon, and for one or more sub time intervals thereof, what task is scheduled, for which user the task is scheduled for, and a duration of the assigned task to be performed, said generating including scheduling as many high priority level jobs first, and then to schedule as many regular priority level jobs as possible, said first initial schedule including tasks that remain unassigned;
applying to said first initial schedule a local improvements optimization that assigns user tasks to computing resources sub-units and time slots, said assigning accounting for user preferences for said resources and time slots such that a total number of time slot assignments for users indicating said positive preference time slots is maximized, and a total number of time slot assignments for users indicating said negative preference time slots is minimized; and
generating a final task schedule based on said applied local improvements.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method that provides an automated solution to obtaining quality scheduling for users of computing resources. The system, implemented in an enterprise software test center, collects information from test-shop personnel about test machine features and availability, test jobs, and tester preferences and constraints. The system reformulates this testing information as a system of constraints. An optimizing scheduling engine computes efficient schedules whereby all the jobs are feasibly scheduled while satisfying the users'"'"' time preferences to the greatest extent possible. The method and system achieves fairness: if all preferences can not be meet, it is attempted to evenly distribute violations of preferences across the users. The test scheduling is generated according to a first application of a greedy algorithm that finds an initial feasible assignment of jobs. The second is a local search algorithm that improves the initial greedy solution.
4 Citations
22 Claims
-
1. A method for scheduling jobs to run on one or more computing resources, said method comprising:
-
receiving data specifying a configuration and availability of said one or more computing resources, one or more said computing resources Mi being partitionable into sub-units; receiving data including users specified tasks, and expected durations of said specified tasks to run on said one or more said computing resources or sub-units thereof, a user task characterized as having an associated high priority level or regular priority level, and for each task, receiving data representing a set of positive preferences indicating user preferred time slots for processing said task, and data representing a set of negative user preferences indicating time slots for not processing said task; assigning, based on said data and machines availability, users tasks to computing resources, computing resource sub-units, and time slots; and generating a first initial schedule based on said assignments to provide, for a time horizon, and for one or more sub time intervals thereof, what task is scheduled, for which user the task is scheduled for, and a duration of the assigned task to be performed, said generating including scheduling as many high priority level jobs first, and then to schedule as many regular priority level jobs as possible, said first initial schedule including tasks that remain unassigned; applying to said first initial schedule a local improvements optimization that assigns user tasks to computing resources sub-units and time slots, said assigning accounting for user preferences for said resources and time slots such that a total number of time slot assignments for users indicating said positive preference time slots is maximized, and a total number of time slot assignments for users indicating said negative preference time slots is minimized; and generating a final task schedule based on said applied local improvements. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A system for scheduling jobs to run on one or more computing resources, said system comprising:
-
a memory device; and a processor connected to the memory device, wherein the processor performs step of; receiving data specifying a configuration and availability of said one or more computing resources, one or more said computing resources Mi being partitionable into sub-units; receiving data including users specified tasks, and expected durations of said specified tasks to run on said one or more said computing resources or sub-units thereof, a user task characterized as having an associated high priority level or regular priority level, and for each task, receiving data representing a set of positive preferences indicating user preferred time slots for processing said task, and data representing a set of negative user preferences indicating time slots for not processing said task; assigning, based on said data and machines availability, users tasks to computing resources, computing resource sub-units, and time slots; and generating a first initial schedule based on said assignments to provide, for a time horizon, and for one or more sub time intervals thereof, what task is scheduled, for which user the task is scheduled for, and a duration of the assigned task to be performed, said generating including scheduling as many high priority levels first, and then to schedule as many regular priority level jobs as possible, said first initial schedule including tasks that remain unassigned; applying to said first initial schedule a local improvements optimization that assigns user tasks to computing resources sub-units and time slots, said assigning accounting for user preferences for said resources and time slots such that a total number of time slot assignments for users indicating said positive preference time slots is maximized, and a total number of time slot assignments for users indicating said negative preference time slots is minimized; and generating a final task schedule based on said applied local improvements. - View Dependent Claims (13, 14, 15, 16, 17, 18)
-
-
19. A computer program product for scheduling tests to run on one or more computing resources, the computer program product comprising:
-
a compute-readable storage medium having computer readable program code embodied therewith, the computer-readable program code comprising; computer readable program code configured to; receive data specifying a configuration and availability of said one or more computing resources, one or more said computing resources Mi being partitionable into sub-units; receive data including users specified tasks, and expected durations of said specified tasks to run on said one or more said computing resources or sub-units thereof, a user task characterized as having an associated high priority level or regular priority level, and for each task, receive data representing a set of positive preferences indicating user preferred time slots for processing said task, and data representing a set of negative user preferences indicating time slots for not processing said task; assign, based on said data and machines availability, users tasks to computing resources, computing resource sub-units, and time slots; and generate a first initial schedule based on said assignments to provide, for a time horizon, and for one or more sub time intervals thereof, what task is scheduled, for which user the task is scheduled for, and a duration of the assigned task to be performed, said generating including scheduling as many high priority level jobs first, and then to schedule as many regular priority, level jobs as possible, said first initial schedule including tasks that remain unassigned; apply to said first initial schedule a local improvements optimization that assigns user tasks to computing resources sub-units and time slots, said assigning accounting for user preferences for said resources and time slots such that a total number of time slot assignments for users indicating said positive preference time slots is maximized, and a total number of time slot assignments for users indicating said negative preference time slots is minimized; and generate a final task schedule based on said applied local improvements. - View Dependent Claims (20, 21, 22)
-
Specification