Thèse soutenue

Optimisation de logiciels par leur configuration

FR  |  
EN
Auteur / Autrice : Edouard Guégain
Direction : Clément Quinton
Type : Thèse de doctorat
Discipline(s) : Informatique et applications
Date : Soutenance le 29/09/2023
Etablissement(s) : Université de Lille (2022-....)
Ecole(s) doctorale(s) : Ecole doctorale Mathématiques, sciences du numérique et de leurs interactions (Lille)
Partenaire(s) de recherche : Laboratoire : Centre de Recherche en Informatique, Signal et Automatique de Lille - Centre Inria de l'Université de Lille
Jury : Président / Présidente : Anthony Cleve
Examinateurs / Examinatrices : Hélène Coullon
Rapporteurs / Rapporteuses : Mireille Blay-Fornarino, Anne-Cécile Orgerie

Résumé

FR  |  
EN

Le domaine du génie logiciel évolue rapidement, exposant les développeurs à collection d'outils, langages, framework et paradigmes en constante croissance.De plus, chacun de ces composant peut avoir sa propre configuration interne.Ainsi, concevoir un nouveau logiciel consiste à sélectionner des composants de cette collection, un processus similaire à la création d'une configuration.Le critère pour configurer de tels systèmes est trop souvent la facilité de développement, ce qui cause des obésiciels sur-dimensionnés et consommateur en énergie.Ce paradigme n'est pas aligné avec les considérations frugales et environnementales.Cette dissertation s'intéresse donc à la possibilité d'utiliser la configuration des logiciels pour optimiser leur performance.Une attention spécifique est portée à la consommation énergétique et la taille de ces logiciels.Un prérequis pour optimiser un système est de comprendre sa performance actuelle.Pour mieux comprendre ce sujet, le logiciel configurable JHipster a été analysé de façon empirique.L'analyse exhaustive de la performance de ses configuration, au travers de différents indicateurs, a montré à quel point la configuration impactent ses performances.Cette compréhension de la performance a permit de créer de configuration de JHipster à haute performance.Ces configuration à haute performance a été créees manuellement, ce qui n'est possible qu'avec un petit espace des configurations.Un algorithme a donc été créé pour automatiser ce processus, et ainsi l'adapter aux plus grands espaces de configuration.Cependant, optimiser une configuration en sélectionnant des options à haute performance n'est pas suffisant, car les options interagissent entre elles:par exemple, dans certaines situation, deux options à haute performance peuvent sous-performer quand elles sont assemblées.L'algorithme d'optimisation a donc été adapté pour tirer profit de ces comportements.L'application de cet algorithme a un large ensemble de configurations a montré que la plupart d'entre elles atteignent une performance presque optimale, avec seulement un nombre limité de modification.Cependant, les contraintes de performance ne se limitent pas à un seul indicateur.La consommation énergétique d'un logiciel n'est pas toujours l'indicateur le plus impactant à optimiser.L'algorithme d'optimisation a donc dû être généralisé pour supporter l'optimisation de plusieurs indicateurs simultanément.Cet algorithme généralisé a été validé sur un couple d'indicateurs de performance: le temps d'exécution et la taille d'un logiciel.Cette validation a montré que la moitié des configurations peut atteindre leur optimum local respectif en modifiant une seule option.De plus, en appliquant cet algorithme à l'exhaustivité d'un espace de configuration, il a été possible de suivre comment il navigue l'espace de configuration à la recherche de configurations optimales, ce qui a mit en lumière certaines limites de l'algorithme, qui peut donc être encore amélioré dans de futures travaux.Dans son état actuel, l'algorithme a été publié sous la forme d'un outil open-source sous le nom d'ICO.