Titre original :

Optimisation de logiciels par leur configuration

Titre traduit :

Configuration-driven Software Optimization

Mots-clés en français :
  • Espace de configuration (informatique)
  • Algorithme d’optimisation

  • Logiciels -- Développement
  • Gestion de configurations des logiciels
  • Évaluation des logiciels
Mots-clés en anglais :
  • Variability
  • Optimization
  • Performance

  • Langue : Anglais
  • Discipline : Informatique et applications
  • Identifiant : 2023ULILB020
  • Type de thèse : Doctorat
  • Date de soutenance : 29/09/2023

Résumé en langue originale

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.

Résumé traduit

The field of software engineering evolves rapidly, exposing practitioners to an ever-increasing collection of tools, languages, frameworks, and paradigms.Each of these components can have its own, internal configuration.Thus, designing a new software system consist in selecting components from this collection, which is akin to creating a configuration.The criterion to configure such systems is too often the ease of development, which leads to oversized, power-hungry bloatware.This paradigm is not aligned with frugal or environmental concerns.Thus, this dissertation looks into the ability to leverage the configuration of a system to optimize its performance.A specific focus is made on energy consumption and the size of software systems.A prerequisite to optimizing a system is to understand its current performance.To gain insight into this subject, the configuration software JHipster was empirically analyzed.Exhaustively assessing the performances of configurations of JHipster, wrt several indicators, showed that different configurations have indeed different performances.Thus, relying on performance insight, it is possible to create high-performance configurations of JHipster.Furthermore, some performance indicators proved correlated across configurations.Therefore, the optimization goal can be simplified by ignoring redundant performance indicators.The process of creating optimized configurations of JHipster was performed manually, which is only possible in smaller configuration spaces.To tackle larger configuration spaces, an algorithm was created, defining how to assess the performance of each option, and then how to improve a given configuration using such performance data.However, optimizing a configuration by selecting high-performance options brought out limitations, as options can interact with each other:in some situations, pairing high-performance options may result in subpar performances.Similarly, low-performance options can prove unexpectedly efficient when paired together.Thus, the optimization algorithm has been designed to leverage such specific behaviors.Applying this algorithm to a large set of configurations showed that most of them can reach near-optimal performances, with only a limited set of modifications.However, performance constraints are not limited to a single performance indicator.Depending on the context, the energy consumption of a system may not be the single most impactful indicator to optimize.Thus, the optimization algorithm must be generalized to support several performance indicators.This generalized algorithm has been validated on a pair of performance indicators: the execution time and the size of the software.The main highlight of this validation is that half of all configurations can reach a local optimum by changing a single setting.Furthermore, by exhaustively applying the algorithm to the configuration space of a system, it was possible to follow how it navigates the configuration space to find optimal configurations.Analyzing this navigation highlighted current limitations in the algorithm, which can thus be further improved as future work.In its current state, the algorithm was published as an open-source tool under the name ICO.

  • Directeur(s) de thèse : Quinton, Clément
  • Président de jury : Cleve, Anthony
  • Membre(s) de jury : Coullon, Hélène
  • Rapporteur(s) : Blay-Fornarino, Mireille - Orgerie, Anne-Cécile
  • Laboratoire : Centre de Recherche en Informatique, Signal et Automatique de Lille - Centre Inria de l'Université de Lille
  • École doctorale : Ecole doctorale Mathématiques, sciences du numérique et de leurs interactions (Lille)

AUTEUR

  • Guégain, Edouard
Droits d'auteur : Ce document est protégé en vertu du Code de la Propriété Intellectuelle.
Accès libre