Affinity-Based Processor Pool Scheduling for Build Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing build systems for software development life cycles do not fully optimize for parallel processing, leading to inefficient execution of tasks and increased end-to-end build times, particularly in continuous integration/continuous deployment pipelines.

Innovation Solution

A system that schedules tasks across multiple processors by grouping them into affinity-class-based pools, adjusts pool sizes based on workload measurements, and utilizes machine learning to predict future load and optimize resource allocation, ensuring efficient execution of tasks like compilation and machine learning model training.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If tasks are executed using multiple servers without affinity-based pooling, then resource utilization may appear flexible, but end-to-end build times increase significantly and task execution becomes inefficient

Engineering Contradiction:
Improveend-to-end build timeVSAvoidbuild time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system segments processors into affinity-based pools, where each pool contains processors suited for specific task types. This segmentation allows tasks to be executed on processors with appropriate characteristics, reducing execution time and improving productivity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different pools are created with specific qualities or characteristics matched to task requirements. Each pool has local optimization for particular task types, ensuring that tasks receive processing from processors with relevant skills or hardware characteristics.

Inventive Principle:
Principle #3Local quality

2Productivity

If pool size is fixed, then system configuration is simple, but resource utilization becomes inefficient under varying workload conditions

Engineering Contradiction:
Improveresource utilization efficiencyVSAvoidpool size management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system dynamically adjusts pool sizes based on measured workload conditions. Pool sizes are not fixed but adapt in response to actual task arrival rates and processor availability, optimizing resource utilization while managing complexity through automated adjustments.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system incorporates feedback mechanisms where workload measurements are used to adjust pool sizes. This feedback loop ensures that pool configuration continuously adapts to changing conditions, improving resource utilization efficiency.

Inventive Principle:
Principle #23Feedback

3Productivity

If manual pool size adjustment is used, then control is straightforward, but the system cannot respond quickly to changing workload patterns

Engineering Contradiction:
Improveresponse speed to workload changesVSAvoidautomation complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system performs self-adjustment of pool sizes based on automated workload measurements. This self-service capability eliminates the need for manual intervention while enabling rapid response to changing workload patterns through automated decision-making.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system automatically changes pool size parameters in response to measured workload conditions. This parameter adjustment is performed dynamically based on observed task arrival rates and system state, enabling quick adaptation without manual configuration.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS20230281039A1Efficient Scheduling of Build Processes Executing on Parallel Processors
Publication Date: 2023.09.07 ENGFLOW INC
  • US20230281039A1 patent drawing
  • US20230281039A1 patent drawing
  • US20230281039A1 patent drawing

AI summary

A system schedules tasks using multiple processors. Examples of tasks include build tasks, training of machine learning models, and testing. The system groups the processors into a set of pools. A pool represents a set of processors associated with an affinity class. The system schedules execution of new tasks by determining an affinity class for a new build task based on characteristics of the new build task. The system identifies a pool matching the affinity class of the new build task. The system adds the new build task to the queue data structure of the pool matching the affinity class. The system adjusts the size of a pool based on a measure of workload associated with the pool. The system may determine the measure of workload as a weighted aggregate of various features describing the pool or using a machine learning model.