Architecture and method for executing program builds
First Claim
Patent Images
1. A system comprising:
- a plurality of build machines, wherein each build machine includes a processor to execute instructions and a memory coupled with the processor to store instructions that when executed cause the processor to schedule jobs for a program build invoked by that build machine;
a computing device including a memory to store program code and a processor to execute the program code to generate a cluster manager to dynamically allocate different ones of a plurality of nodes from a node cluster to different ones of the plurality of build machines for the program builds based on a specified configurable node allocation policy, wherein for each build machine the node allocation policy indicates which one or more of the nodes from the node cluster to allocate to that build machine based on a type of the program build invoked by that build machine;
the plurality of nodes to execute the jobs for each of the program builds in parallel according to the schedule generated by the build machines; and
a job scheduler module to analyze file dependency information contained within a first file, determine, based on the analysis, which jobs may be executed in parallel, and schedule the jobs which may be executed in parallel to execute in parallel across the plurality of nodes allocated by the cluster manager; and
a usage tracking module to collect file usage information from each of the jobs, the nodes providing the file usage information to the build machine following the completion of each of the jobs, the usage tracking module to supplement the file dependency information with the file usage information following execution of one or more of the jobs;
wherein the job scheduler module analyzes both the file dependency information and the file usage information contained in the first file and schedules jobs to execute in parallel for a subsequent program build based on the analysis of the file dependency information and the file usage information.
13 Assignments
0 Petitions
Accused Products
Abstract
A method is described comprising: scheduling jobs for a program build to execute in parallel across a plurality of nodes; predicting the files required to complete each of the jobs; and preloading the files to each node prior to the execution of each job.
127 Citations
22 Claims
-
1. A system comprising:
-
a plurality of build machines, wherein each build machine includes a processor to execute instructions and a memory coupled with the processor to store instructions that when executed cause the processor to schedule jobs for a program build invoked by that build machine; a computing device including a memory to store program code and a processor to execute the program code to generate a cluster manager to dynamically allocate different ones of a plurality of nodes from a node cluster to different ones of the plurality of build machines for the program builds based on a specified configurable node allocation policy, wherein for each build machine the node allocation policy indicates which one or more of the nodes from the node cluster to allocate to that build machine based on a type of the program build invoked by that build machine; the plurality of nodes to execute the jobs for each of the program builds in parallel according to the schedule generated by the build machines; and a job scheduler module to analyze file dependency information contained within a first file, determine, based on the analysis, which jobs may be executed in parallel, and schedule the jobs which may be executed in parallel to execute in parallel across the plurality of nodes allocated by the cluster manager; and a usage tracking module to collect file usage information from each of the jobs, the nodes providing the file usage information to the build machine following the completion of each of the jobs, the usage tracking module to supplement the file dependency information with the file usage information following execution of one or more of the jobs; wherein the job scheduler module analyzes both the file dependency information and the file usage information contained in the first file and schedules jobs to execute in parallel for a subsequent program build based on the analysis of the file dependency information and the file usage information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 21)
-
-
10. A computing device including a memory to store program code and a processor to execute the program code to generate a cluster manager to be used within a system to perform program builds, the cluster manager comprising:
-
a node status module to monitor the status of each of a plurality of processing nodes of a node cluster; and a node allocation module to dynamically allocate the nodes, or a subset thereof, to one or more build machines upon request from those build machines, the allocation of nodes based on a specified configurable node allocation policy, wherein for each requesting build machine, the node allocation policy indicates which nodes from the node cluster to allocate to that build machine based on the number of requesting build machines, wherein in response to the nodes being allocated to the one or more build machines, the nodes to execute jobs provided by the one or more build machines and to store results associated with the executed jobs; and a job scheduler module to analyze file dependency information contained within a first file, determine, based on the analysis, which jobs may be executed in parallel, and schedule the jobs which may be executed in parallel to execute in parallel across the plurality of nodes; and a usage tracking module to collect file usage information from each of the jobs, the nodes providing the file usage information to the build machine following the completion of each of the jobs, the usage tracking module to supplement the file dependency information with the file usage information following execution of one or more of the jobs; wherein the job scheduler module analyzes both the file dependency information and the file usage information contained in the first file and schedules jobs to execute in parallel for a subsequent program build based on the analysis of the file dependency information and the file usage information. - View Dependent Claims (11, 12, 13, 14, 19)
-
-
15. A build machine comprising:
-
a processor to execute instructions; a memory coupled with the processor, the memory having instructions that when executed cause the processor to perform operations to generate the following; a central build module to request a plurality of nodes to be used during a program build, the nodes being dynamically selected from a node cluster and allocated to the build machine based on a specified configurable node allocation policy, wherein the node allocation policy indicates which one or more of the nodes from the node cluster to allocate to the build machine based on a type of the program build invoked by the build machine; one or more worker modules comprised of a job scheduler module to schedule and coordinate the execution of jobs for the program build across the plurality of nodes; and a terminator module to determine whether the results of each job are valid and to correct out-of-order execution of jobs prior to writing the job results to a database; and the job scheduler module to analyze file dependency information contained within a first file, determine, based on the analysis, which jobs may be executed in parallel, and schedule the jobs which may be executed in parallel to execute in parallel across the plurality of nodes; and a usage tracking module to collect file usage information from each of the jobs, the nodes providing the file usage information to the build machine following the completion of each of the jobs, the usage tracking module to supplement the file dependency information with the file usage information following execution of one or more of the jobs; wherein the job scheduler module analyzes both the file dependency information and the file usage information contained in the first file and schedules jobs to execute in parallel for a subsequent program build based on the analysis of the file dependency information and the file usage information. - View Dependent Claims (16, 17, 18, 20, 22)
-
Specification