Increasing the Performance of a Continuous. Optimisations by Load Balancing and Node Configurations - Andersson, Joacim; Andersson, Pontus (My University, 2016)
Continuous Integration (CI) is a software engineering practise where developers integrate, test, and build the system many times a day. The main objective with CI is to provide immediate feedback to developers after code changes, which requires an optimised CI server. This thesis aims to improve the time between the start and finish of a sequence of jobs in three ways: statistically analysing the best node configurations regarding the number of executors, dynamically assigning executors, and developing an improved load balancer. The load balancing problem is a more general problem that may be applicable for servers other than CI. The most suitable number of executors was found to be around 1.0-1.4 times the number of cores on the node, with the most significant improvement when the number of executors was equal to or above the number of cores. Dynamically assigning executors turned out to be an interesting substitute to static allocation; it reduced the load of the nodes and compensated better for changing workloads, at the cost of a increased execution time by approximately 5%. The improved load balancer was superior to the default load balancer in both execution time and load balancing according to our experiments. The results of this thesis can have a great effect on CI servers by improving the feedback time for developers and reducing the risk of overloading the nodes.
Keywords: Informations- och kommunikationsteknik; Data- och informationsvetenskap; Information & Communication Technology; Computer and Information Science