AgileCtrl: A Self-Adaptive Framework for Configuration Tuning
Software systems increasingly expose performance-sensitive configuration parameters, or PerfConfs, to users. Unfortunately, the right settings of these PerfConfs are difficult to decide and often
change at run time. To address this problem, prior research has proposed \emph{self-adaptive frameworks} that automatically monitor the software's behavior and dynamically tune configurations to provide the desired performance despite dynamic changes. However, these frameworks often require configuration themselves; sometimes explicitly in the form of additional parameters, sometimes implicitly in the form of training.
This paper proposes a new framework, AgileCtrl, that eliminates the need of configuration
for a large family of control-based self-adaptive frameworks.
AgileCtrl's key insight is to not just monitor the original software, but additionally to monitor
its adaptations and reconfigure itself when its internal adaptation mechanisms are not meeting software requirements. We evaluate AgileCtrl by comparing against recent control-based approaches to self-adaptation that require user configuration. Across a number of case studies, we find AgileCtrl withstands model errors up to $10^6\times$, saves the system from performance oscillation and crashes, and improves the performance up to 53%. It also auto-adjusts improper performance goals while improving the performance by 50%.