IP Library › Granted Patent US 10,534,655
Granted Patent B1
US 10,534,655 · App. 15/188,865 · Granted Jan 14, 2020

Job scheduling based on job execution history

Inventors: James Edward Kinney, Jr. (Seattle, WA); Dougal Stuart Ballantyne (Seattle, WA); Nishant Mehta (Bellevue, WA)
Assignee: Amazon Technologies, Inc.
G06F9/5083G06F9/4881G06F9/5027
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,534,655
App. No.
15/188,865
Granted
Jan 14, 2020
Kind
B1
Abstract

Methods, systems, and computer-readable media for job scheduling based on job execution history are disclosed. A request is received to schedule a workload comprising a plurality of jobs. A resource allocation score for the workload is determined. The resource allocation score represents (at least in part) an estimated likelihood of successful execution of the workload. A first portion of the workload is scheduled for execution, and a remaining portion (if any) of the workload is delayed. A quantity of jobs in the first portion of the workload is determined based (at least in part) on the resource allocation score. Execution of the first portion of the workload is initiated.

Claims (60)

1. A system, comprising:

a plurality of computing resources of a multi-tenant provider network; and

one or more computing devices configured to implement a job scheduling system, wherein the job scheduling system is configured to:

receive a request to schedule a set of jobs, wherein the set of jobs is associated with a user account;

determine a resource allocation score based at least in part on whether or not previous jobs completed successfully according to a job execution history for the user account;

determine, based on the resource allocation score, a quantity of the set of jobs to be scheduled for concurrent execution at a future time, wherein the determined quantity of jobs to be scheduled for concurrent execution varies for different values of the resource allocation score;

schedule a first portion of the set of jobs for concurrent execution at the future time, wherein the first portion comprises the determined quantity of the set of jobs, and wherein execution of a remaining portion of the set of jobs is delayed;

reserve one or more of the computing resources of the multi-tenant provider network for the first portion of the set of jobs; and

initiate, at the scheduled time, the concurrent execution of the first portion of the set of jobs using the reserved one or more of the computing resources of the multi-tenant provider network.

2. The system as recited in claim 1 , wherein the job scheduling system is further configured to:

monitor the execution of the first portion of the set of jobs;

determine a modified resource allocation score, wherein the modified resource allocation score is determined based at least in part on the execution of the first portion of the set of jobs;

schedule a second portion of the set of jobs for concurrent execution, wherein a quantity of jobs in the second portion of the set of jobs is determined based at least in part on the modified resource allocation score; and

initiate the concurrent execution of the second portion of the set of jobs using the computing resources of the multi-tenant provider network.

3. The system as recited in claim 1 , wherein the set of jobs is associated with one or more job identifiers, and wherein the resource allocation score is determined based at least in part on a job execution history for the one or more job identifiers.

4. A computer-implemented method, comprising:

determining a resource allocation score based at least in part on whether or not previous jobs completed successfully according to a job execution history for a user account;

determine, based on the resource allocation score, a quantity of a set of jobs to be scheduled for execution at a future time, wherein the quantity of jobs to be scheduled for execution varies for different values of the resource allocation score;

scheduling a first portion of the set of jobs for execution at the future time, wherein the first portion comprises the determined quantity of the set of jobs, and wherein execution of a remaining portion of the set of jobs is delayed; and

initiating, at the scheduled time, the execution of the first portion of the set of jobs.

5. The method as recited in claim 4 , wherein the set of jobs is associated with the user account.

6. The method as recited in claim 4 , wherein the set of jobs is associated with one or more job identifiers, and wherein the resource allocation score is determined based at least in part on a job execution history for the one or more job identifiers.

7. The method as recited in claim 4 , wherein the set of jobs is associated with a project identifier, and wherein the resource allocation score is determined based at least in part on a job execution history for the project identifier.

8. The method as recited in claim 4 , further comprising:

monitoring the execution of the first portion of the set of jobs;

determining a modified resource allocation score, wherein the modified resource allocation score is determined based at least in part on the execution of the first portion of the set of jobs;

scheduling a second portion of the set of jobs for execution, wherein a quantity of jobs in the second portion of the set of jobs is determined based at least in part on the modified resource allocation score; and

initiating the execution of the second portion of the set of jobs.

9. The method as recited in claim 8 , wherein monitoring the execution of the first portion of the set of jobs comprises, for an individual job in the first portion in the set of jobs:

determining whether a launch of the individual job is successful or unsuccessful; and

if the launch is successful, determining whether an exit of the individual job is successful or unsuccessful.

10. The method as recited in claim 8 , wherein monitoring the execution of the first portion of the set of jobs comprises, for an individual job in the first portion in the set of jobs:

determining whether the individual job has continued to execute without an unsuccessful exit for a period of time.

11. The method as recited in claim 4 , further comprising:

increasing the resource allocation score based at least in part on successful aggregate execution of the first portion of the set of jobs; or

decreasing the resource allocation score based at least in part on unsuccessful execution of one or more jobs in the first portion of the set of jobs.

12. The method as recited in claim 4 , further comprising:

determining that the resource allocation score has fallen below a threshold score; and

suspending further execution of the set of jobs.

13. The method as recited in claim 4 , wherein the resource allocation score is determined using automated implementation of one or more policies by a job scheduling system.

14. The method as recited in claim 4 , further comprising:

reserving one or more computing resources of a multi-tenant provider network for the execution of the first portion of the set of jobs, wherein the first portion of the set of jobs is executed using the one or more computing resources.

15. The method as recited in claim 4 , further comprising:

reserving one or more computing resources of a compute environment for the execution of the first portion of the set of jobs, wherein one or more resource types of the computing resources are selected based at least in part on the resource allocation score.

16. A non-transitory computer-readable storage medium storing program instructions computer-executable to perform:

receiving a request to schedule a workload comprising a plurality of jobs, wherein the plurality of jobs is associated with a user account;

determining a resource allocation score based at least in part on whether or not previous jobs completed successfully according to a job execution history for the user account;

determining, based on the resource allocation score, a quantity of the plurality of jobs to be scheduled for concurrent execution at a future time, wherein the determined quantity of jobs to be scheduled for concurrent execution varies for different values of the resource allocation score;

scheduling a first portion of the plurality of jobs for concurrent execution at the future time, wherein the first portion comprises the determined quantity of the plurality of jobs, and wherein execution of a remaining portion of the plurality of jobs is delayed; and

initiating, at the scheduled time, the concurrent execution of the first portion of the plurality of jobs.

17. The non-transitory computer-readable storage medium as recited in claim 16 , wherein the workload is associated with a user identifier, and wherein the resource allocation score is determined based at least in part on a job execution history for the user identifier.

18. The non-transitory computer-readable storage medium as recited in claim 16 , wherein the workload is associated with one or more job identifiers, and wherein the resource allocation score is determined based at least in part on a job execution history for the one or more job identifiers.

19. The non-transitory computer-readable storage medium as recited in claim 16 , wherein the program instructions are further computer-executable to perform:

monitoring the execution of the first portion of the plurality of jobs;

determining a modified resource allocation score for the plurality of jobs, wherein the modified resource allocation score is determined based at least in part on the execution of the first portion of the plurality of jobs, and wherein the modified resource allocation score represents at least in part an estimated likelihood of successful execution of the remaining portion of the plurality of jobs;

scheduling a second portion of the plurality of jobs for concurrent execution, wherein a quantity of jobs in the second portion of the plurality of jobs is determined based at least in part on the modified resource allocation score; and

initiating the concurrent execution of the second portion of the plurality of jobs.

20. The non-transitory computer-readable storage medium as recited in claim 16 , wherein the program instructions are further computer-executable to perform:

increasing the resource allocation score based at least in part on successful aggregate execution of the first portion of the plurality of jobs; or

decreasing the resource allocation score based at least in part on unsuccessful execution of one or more jobs in the first portion of the plurality of jobs.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2016
From: KINNEY, JAMES EDWARD, JR; BALLANTYNE, DOUGAL STUART; MEHTA, NISHANT
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 038983/0114 →
Cited By (5)
US 12,340,253 US 12,347,179 US 12,423,154 US 12,499,204 US 12,670,031