  Finding good configurations for a software system is often challenging since
the number of configuration options can be large. Software engineers often make
poor choices about configuration or, even worse, they usually use a sub-optimal
configuration in production, which leads to inadequate performance. To assist
engineers in finding the (near) optimal configuration, this paper introduces
FLASH, a sequential model-based method, which sequentially explores the
configuration space by reflecting on the configurations evaluated so far to
determine the next best configuration to explore. FLASH scales up to software
systems that defeat the prior state of the art model-based methods in this
area. FLASH runs much faster than existing methods and can solve both
single-objective and multi-objective optimization problems. The central insight
of this paper is to use the prior knowledge (gained from prior runs) to choose
the next promising configuration. This strategy reduces the effort (i.e.,
number of measurements) required to find the (near) optimal configuration. We
evaluate FLASH using 30 scenarios based on 7 software systems to demonstrate
that FLASH saves effort in 100% and 80% of cases in single-objective and
multi-objective problems respectively by up to several orders of magnitude
compared to the state of the art techniques.

Software Engineering