×

System and method for optimizing job scheduling within program builds

  • US 10,061,577 B2
  • Filed: 10/14/2014
  • Issued: 08/28/2018
  • Est. Priority Date: 10/14/2014
  • Status: Active Grant
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.

View all claims
  • 13 Assignments
Timeline View
Assignment View
    ×
    ×