Improving the scheduling policy for a Continuous Integration Server Master’s thesis in Computer Systems and Networks
Typ
Examensarbete för masterexamen
Program
Publicerad
2020
Författare
Eriksson, Isak
Berglund, Viktor
Modellbyggare
Tidskriftstitel
ISSN
Volymtitel
Utgivare
Sammanfattning
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.
Beskrivning
Ämne/nyckelord
continuous integration , scheduling , Jenkins