Parallel Build System Job Scheduling with Dependency Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current software build processes, particularly those using tools like Make, face challenges in efficiently managing complex dependency structures, leading to long build times and inconsistencies due to imperfect dependency information, which limits parallelism and reliability, especially in large projects.

Innovation Solution

A parallel program build system architecture that includes a central build module, node management, and a versioning file system to monitor and analyze file usage, detect conflicts, and optimize job scheduling across multiple nodes, enabling predictive caching and conflict resolution to ensure accurate and efficient file usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If parallel build systems are used to reduce build time, then build speed improves, but build reliability deteriorates due to conflicts and inconsistencies in file usage

Engineering Contradiction:
Improvebuild speedVSAvoidbuild reliability
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The system performs preliminary actions by analyzing dependency information before the build starts and pre-scheduling jobs to avoid conflicts. The build manager examines which files will be read or written by each job and schedules jobs accordingly, ensuring that no two jobs conflict over the same files. This preliminary scheduling eliminates conflicts before they occur, allowing parallel builds to proceed reliably.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The build manager acts as an intermediary between multiple parallel build jobs, coordinating their execution to prevent conflicts. It monitors file usage patterns, determines dependency relationships between jobs, and schedules jobs to avoid simultaneous access to the same files. This intermediary coordination enables parallelism while maintaining build reliability.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If dependency information is made more accurate to improve build reliability, then build reliability improves, but device complexity increases due to more sophisticated tracking mechanisms

Engineering Contradiction:
Improvebuild reliabilityVSAvoiddependency tracking complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system uses self-service mechanisms where the build manager automatically analyzes dependency information and schedules jobs without requiring manual intervention or complex external tracking systems. It self-determines which files will be accessed by each job based on the Makefile or build configuration, and automatically schedules jobs to avoid conflicts. This self-service approach improves reliability without adding significant complexity.

Inventive Principle:
Principle #25Self-service

3Reliability

If more files are monitored to improve dependency accuracy, then build reliability improves, but loss of time increases due to extensive monitoring and analysis

Engineering Contradiction:
Improvedependency accuracyVSAvoidtime for dependency analysis
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs dependency analysis as a preliminary action before the build starts, rather than continuously monitoring during the build. The build manager examines the build configuration and dependency information upfront to determine job schedules and file access patterns. This preliminary analysis completes quickly and allows the actual build to proceed without ongoing monitoring overhead, minimizing time loss while ensuring accurate dependency tracking.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10061577B2System and method for optimizing job scheduling within program builds
Publication Date: 2018.08.28 CLOUDBEES INC
  • US10061577B2 patent drawing
  • US10061577B2 patent drawing
  • US10061577B2 patent drawing

AI summary

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.