Improving the scheduling policy for a Continuous Integration Server Master’s thesis in Computer Systems and Networks
Examensarbete för masterexamen
Continuous integration (CI) is a method used in software development to make it easier for developers to handle integration and testing of their code. By automating this process the development process can be streamlined and sped up. One possible way of achieving this could be to improve the scheduler in the CI system to handle scheduling of integration jobs in a more efficient way. Six scheduling algorithms are empirically evaluated: Longest Job First (LJF), Shortest Job First (SJF), First In First Out (FIFO), Random priority and LJF/SJF with an added aging factor. Tests were done on a Jenkins instance as well as a simulation model developed for the thesis. The execution time of the jobs in the job sets are assumed to follow the Pareto power-law probability distribution, which can be summarized as "20 percent of the jobs account for 80 percent of the execution time". Makespan and average response time are known measures in the scheduling literature and we measure the algorithms against these. We also introduce the measure average matrix response time, which we consider to be the most important for the objective of this thesis. Tests were carried out on a real Jenkins instance, a server used for building software common in a continuous integration setting, and on a simulation model we developed. The model can simulate system slowdown when running more threads than available cores. Based on our tests we conclude that LJF with an added aging factor is the best performing algorithm against the measure average matrix response time.
continuous integration , scheduling , Jenkins