Deep software variability for resilient performance models of configurable systems
Variabilité logicielle profonde pour l'entraînement de modèles de performance robustes
Abstract
Software systems are heavily configurable, in the sense that users can adapt them according to their needs thanks to configurations. But not all configurations are equals, and some of them will clearly be more efficient than others in terms of performance. For human beings, it is quite complex to handle all the possible configurations of a system and to choose among one of them to reach a performance goal. Research work have shown that machine learning can bridge this gap and predict the performance value of a software systems based on its configurations. Problem. These techniques do not include the executing environment as part of the training data, while it could interact with the different configuration options and change their related performance distribution. In short, our machine learning models are too simple and will not be useful or applicable for end-users. Contributions. In this thesis, we first propose the term deep variability to refer to the existing interactions between the environment and the configurations of a software system, altering its performance distribution. We then empirically demonstrate the existence of deep variability and propose few solutions to tame the related issues. Finally, we prove that machine learning models can be adapted to be by-design robust to deep variability.
Les systèmes logiciels sont fortement configurables, au sens où les utilisateurs peuvent adapter leur compilation et leur exécution grâce à des configurations. Mais toutes ces configurations ne se valent pas, et certaines d'entre elles seront nettement plus efficaces que d'autres en terme de performance. Pour l'être humain, il est complexe d'appréhender et de comparer les les différentes possibilités de configuration, et donc de choisir laquelle sera adaptée pour atteindre un objectif de performance. De récents travaux de recherche ont montré que l'apprentissage automatique pouvait pallier à ce manque et prédire la valeur des performances d'un système logiciel à partir de ses configurations. Problème. Mais ces techniques n'incluent pas directement l'environnement d'exécution dans les données d'apprentissage, alors que les différents éléments de la pile logicielle (matériel, système d'exploitation, etc.) peuvent interagir avec les différentes options de configuration et modifier les distributions de performance du logiciel. En bref, nos modèles prédictifs de performance sont trop simplistes et ne seront pas utiles ou applicables pour les utilisateurs finaux des logiciels configurables. Contributions. Dans cette thèse, nous proposons d'abord de définir le terme de variabilité profonde pour désigner les interactions existant entre l'environnement et les configurations d'un logiciel, modifiant ses valeurs de performance. Nous démontrons empiriquement l'existence de cette variabilité profonde et apportons quelques solutions pour adresser les problèmes soulevés par la variabilité profonde. Enfin, nous prouvons que les modèles d'apprentissage automatique peuvent être adaptés pour être par conception robustes à la variabilité profonde.
Origin | Version validated by the jury (STAR) |
---|