Priority Build Execution in Continuous Integration Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Continuous integration systems face congestion issues due to high priority jobs having to wait for extended periods because they cannot be executed until currently running low priority jobs are completed, which often takes several hours or days.
Innovation Solution
Implement a mechanism where the execution of low priority jobs is suspended when a high priority job conflicts with the resource being used, allowing the high priority job to be executed immediately by suspending and recording the state of the low priority job, either in a snapshot file or by switching to another virtual machine.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of operation
If the continuous integration system prioritizes incoming jobs by executing high priority jobs ahead of low priority jobs, then the priority ordering is improved, but the high priority jobs still have to wait until currently-executed jobs are completed, resulting in loss of time
Solution Approach 1:
The system performs preliminary actions by suspending the low priority job before the high priority job can execute, and by pre-recording the state of the low priority job (via snapshots or VM state preservation) so that it can be resumed later without data loss or execution interruption. This allows the high priority job to immediately acquire the resource without waiting for natural completion of the low priority job.
2Productivity
If the system executes high priority jobs immediately by suspending low priority jobs, then the productivity is improved, but the device complexity increases due to state recording and VM management mechanisms
Solution Approach 1:
The patent introduces virtualization technology as an intermediary layer between the job scheduling system and the physical computing resources. The virtual machine manager acts as a mediator that can suspend, save, and restore VM states, thereby simplifying the complexity management by abstracting it into a dedicated virtualization layer rather than implementing complex state recording mechanisms within the job scheduling system itself.
3Loss of time
If the system suspends low priority jobs to execute high priority jobs, then the wait time for high priority jobs is reduced, but the low priority jobs experience interruption and extended completion time
Solution Approach 1:
The system discards the current execution state of the low priority job by suspending it and recording its state externally (via snapshots or VM state files). This discarded state can be recovered later when the high priority job completes, allowing the low priority job to resume from where it left off. This principle enables the system to temporarily set aside the low priority job's execution context without permanent loss, facilitating high priority job execution while preserving low priority job continuity.
Data Source
AI summary
A mechanism for priority build execution in a continuous integration system is disclosed. A method includes executing, by a computing device in a continuous integration system, a low priority job of the continuous integrations system using a resource of the computing device. The method also includes receiving a high priority job to be executed by the computing device and identifying a conflict at the resource when the high priority job is assigned to execute using the same resource that is currently being used for executing the low priority job. When the conflict is identified, the method further includes suspending the execution of the low priority job, recording a state of the low priority job at a time of the suspension of the execution and executing the high priority job using the resource.


