System and method for optimizing job scheduling within program builds
First Claim
Patent Images
1. A method for executing program builds comprising:
- analyzing file dependency information and job duration information associated with jobs of a past program build to determine a total duration for each of the jobs, wherein the total duration of a job is a sum of a duration of the job and the duration of one or more jobs that are dependent on the job;
scheduling jobs for a current program build based on analysis of both the file dependency information and the job duration information including analyzing the total duration for each of the jobs determined from the analysis of the file dependency information and the job duration information, wherein a first job that is otherwise equivalent to a second job is scheduled before the second job for the current program build based on relative total durations of the first job and the second job, wherein the scheduling further comprises;
building a job graph based on the file dependency information and/or file usage information, wherein the job graph comprises a plurality of nodes and edges, each node representing a job and each edge representing dependencies between the jobs of the current program build, the nodes including at least one source node having no inbound edges and at least one sink node having no outbound edges; and
analyzing the job graph in view of the job duration information to determine an optimized order in which to execute the jobs of the current program build, wherein analyzing the job graph in view of the job duration information to determine an optimized order in which to execute the jobs of the current program build further comprises;
iterating through the nodes of the job graph in reverse order, starting with the sink node;
for each node N, determining a waiter node with the greatest chain length, wherein a chain represents a sequence of jobs such that each job in the sequence directly waits for a previous job in the sequence before it will execute;
computing the chain length for node N as the sum of the length of the job represented by node N and the greatest chain length of that job'"'"'s waiter nodes; and
scheduling jobs of the current program build for execution in the optimized order based on calculated chain lengths of corresponding nodes;
executing the jobs of the current program build according to the optimized order;
collecting file usage information and new job duration information from each of the executed jobs of the current program build;
supplementing the file dependency information with the collected file usage information; and
storing the new job duration information to be used for scheduling jobs in subsequent program builds.
13 Assignments
0 Petitions
Accused Products
Abstract
A method for executing program builds comprising: analyzing file dependency information and job duration information associated with jobs of the program build; scheduling jobs for a current program build based on the analysis of the dependency information and the job duration data; executing the jobs according to the schedule; collecting file usage information and new job duration information from each of the jobs; supplementing the file dependency information with the file usage information; and storing the new job duration information to be used for scheduling jobs in subsequent program builds.
56 Citations
14 Claims
-
1. A method for executing program builds comprising:
-
analyzing file dependency information and job duration information associated with jobs of a past program build to determine a total duration for each of the jobs, wherein the total duration of a job is a sum of a duration of the job and the duration of one or more jobs that are dependent on the job; scheduling jobs for a current program build based on analysis of both the file dependency information and the job duration information including analyzing the total duration for each of the jobs determined from the analysis of the file dependency information and the job duration information, wherein a first job that is otherwise equivalent to a second job is scheduled before the second job for the current program build based on relative total durations of the first job and the second job, wherein the scheduling further comprises; building a job graph based on the file dependency information and/or file usage information, wherein the job graph comprises a plurality of nodes and edges, each node representing a job and each edge representing dependencies between the jobs of the current program build, the nodes including at least one source node having no inbound edges and at least one sink node having no outbound edges; and analyzing the job graph in view of the job duration information to determine an optimized order in which to execute the jobs of the current program build, wherein analyzing the job graph in view of the job duration information to determine an optimized order in which to execute the jobs of the current program build further comprises; iterating through the nodes of the job graph in reverse order, starting with the sink node; for each node N, determining a waiter node with the greatest chain length, wherein a chain represents a sequence of jobs such that each job in the sequence directly waits for a previous job in the sequence before it will execute; computing the chain length for node N as the sum of the length of the job represented by node N and the greatest chain length of that job'"'"'s waiter nodes; and scheduling jobs of the current program build for execution in the optimized order based on calculated chain lengths of corresponding nodes; executing the jobs of the current program build according to the optimized order; collecting file usage information and new job duration information from each of the executed jobs of the current program build; supplementing the file dependency information with the collected file usage information; and storing the new job duration information to be used for scheduling jobs in subsequent program builds. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A non-transitory machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform the operations of:
-
analyzing file dependency information and job duration information associated with jobs of a past program build to determine a total duration for each of the jobs, wherein the total duration of a job is a sum of a duration of the job and the duration of one or more jobs that are dependent on the job; scheduling jobs for a current program build based on analysis of both the file dependency information and the job duration information including analyzing the total duration for each of the jobs determined from the analysis of the file dependency information and the job duration information, wherein a first job that is otherwise equivalent to a second job is scheduled before the second job for the current program build based on relative total durations of the first job and the second job, wherein the scheduling further comprises; building a job graph based on the file dependency information and/or file usage information, wherein the job graph comprises a plurality of nodes and edges, each node representing a job and each edge representing dependencies between the jobs of the current program build the nodes including at least one source node having no inbound edges and at least one sink node having no outbound edges; and analyzing the job graph in view of the job duration information to determine an optimized order in which to execute the jobs of the current program build, wherein analyzing the job graph in view of the job duration information to determine an optimized order in which to execute the jobs of the current program build further comprises; iterating through the nodes of the job graph in reverse order, starting with the sink node; for each node N, determining a waiter node with the greatest chain length, wherein a chain represents a sequence of jobs such that each job in the sequence directly waits for a previous job in the sequence before it will execute; computing, the chain length for node N as the sum of the length of the job represented by node N and the greatest chain length of that job'"'"'s waiter nodes; and scheduling jobs of the current program build for execution in the optimized order based on calculated chain lengths of corresponding nodes; executing the jobs of the current program build according to the optimized order; collecting file usage information and new job duration information from each of the executed jobs of the current program build; supplementing the file dependency information with the collected file usage information; and storing the new job duration information to be used for scheduling jobs in subsequent program builds. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
Specification