Évaluation de performances
Le jour de l’ouverture de sa billetterie, un festival de musique voit des milliers de personnes se connecter en même temps. Le site tiendra-t-il ? Faut-il acheter un disque plus rapide ou un deuxième serveur ? Une API d’inférence doit répondre en moins de 150 ms à 99 % des requêtes : jusqu’à quelle charge ? Un script de données prend 2 minutes : combien gagnera-t-on avec 16 cœurs ? L’évaluation de performances donne les outils pour répondre à ces questions avec des chiffres, avant d’acheter, avant de livrer, et sans se laisser tromper par une mesure isolée.
Ce cours part des métriques de base et de la démarche d’une étude, puis construit pas à pas les modèles qui permettent de raisonner : des lois opérationnelles, simples identités tirées de compteurs, jusqu’aux files d’attente, à l’algorithme MVA et à la simulation. Il se termine par la mesure elle-même (intervalles de confiance, plans d’expériences, benchmarks, speedup) et par une étude complète sur une API d’inférence et un pipeline de données.
Objectifs pédagogiques
Section intitulée « Objectifs pédagogiques »À la fin de ce cours, vous serez capable de :
- Mener une étude de performance : fixer un objectif neutre, choisir des métriques pertinentes (temps de réponse, débit, utilisation, percentiles) et la technique adaptée (modèle, simulation ou mesure).
- Appliquer les lois opérationnelles (utilisation, flux forcé, demande de service, Little, temps de réponse interactif) pour trouver le goulot d’un système et en borner les performances.
- Modéliser un système par des files d’attente (notation de Kendall, M/M/1, réseaux ouverts) et calculer un réseau fermé avec l’algorithme MVA.
- Simuler un système à événements discrets et en tirer des résultats fiables (régime transitoire, réplications, intervalles de confiance).
- Mesurer et comparer des systèmes avec rigueur : intervalles de confiance, comparaisons appariées, plans d’expériences , benchmarks.
- Prévoir le gain d’une parallélisation avec les lois d’Amdahl et de Gustafson, et construire un banc d’essai reproductible pour une API ou un pipeline de données.
Prérequis
Section intitulée « Prérequis »- Les bases des probabilités : variable aléatoire, espérance, loi exponentielle et processus de Poisson. Le cours de Probabilités les couvre.
- La notion d’intervalle de confiance et la loi de Student, vues dans le cours de Statistiques.
- Pour aller plus loin sur les chaînes de Markov qui fondent la file M/M/1 : le cours de Modèles stochastiques.
- Python : les exemples utilisent surtout la bibliothèque standard, et parfois SciPy.
Le plan du cours
Section intitulée « Le plan du cours »Partie 1 · Poser les bases
Section intitulée « Partie 1 · Poser les bases »- Découvrez la démarche d’une étude de performance : charge, métriques et percentiles, démarche en neuf étapes, modèle, simulation ou mesure.
- Appliquez les lois opérationnelles : variables observées et dérivées, lois d’utilisation, du flux forcé et de la demande de service, loi de Little, temps de réponse interactif.
- Trouvez le goulot d’étranglement : débit maximal, bornes asymptotiques, point de saturation et goulot qui se déplace.
Partie 2 · Modéliser et simuler
Section intitulée « Partie 2 · Modéliser et simuler »- Modélisez une file d’attente : notation de Kendall, file M/M/1, explosion de la latence près de la saturation, réseau ouvert.
- Analysez un réseau fermé avec MVA : théorème d’arrivée, algorithme MVA, comparaison avec les bornes et validation du modèle.
- Simulez un système à événements discrets : horloge et échéancier, vérification et validation, régime transitoire, réplications.
Partie 3 · Mesurer et expérimenter
Section intitulée « Partie 3 · Mesurer et expérimenter »- Mesurez un système et donnez un intervalle de confiance : stratégies et outils de mesure, profilage, intervalles de confiance, comparaison appariée.
- Planifiez vos expériences avec un plan factoriel : effets et interactions, table des signes, part de variation, répétitions et plans fractionnaires.
- Comparez avec des benchmarks et passez à l’échelle : moyenne géométrique et jeux de ratios, speedup et efficacité, lois d’Amdahl et de Gustafson.
- Mesurez une API d’inférence de bout en bout : objectif en percentiles, prévision, générateur de charge en boucle ouverte, pipeline de données et liste de contrôle.
Chaque chapitre se termine par un résumé et des exercices corrigés, de difficulté croissante. Les six premiers chapitres suivent un même fil rouge, la billetterie en ligne d’un festival : les demandes de service mesurées au chapitre 2 servent jusqu’au chapitre 6.
D’où vient ce cours
Section intitulée « D’où vient ce cours »Ce cours reprend l’enseignement d’évaluation de performances des systèmes informatiques suivi en 4e année du cycle ingénieur de l’INSA Rennes, en spécialité informatique (premier semestre). Il s’appuie sur l’antisèche officielle du cours (lois opérationnelles, notation de Kendall, performances moyennes des files, speedup, lois d’Amdahl et de Gustafson-Barsis) et sur une fiche de révision couvrant la démarche d’une étude, les métriques, les techniques d’évaluation, la mesure et le TP de profilage avec gprof et gcov.
Le texte, les exemples, les chiffres et les exercices ont été entièrement réécrits. Faute de support officiel sur ces points, plusieurs parties ont été complétées à partir des ouvrages de référence du domaine (The Art of Computer Systems Performance Analysis et Quantitative System Performance) : l’algorithme MVA et le théorème d’arrivée, la simulation à événements discrets, les intervalles de confiance et les comparaisons appariées, les plans d’expériences , les benchmarks et la moyenne géométrique. D’autres compléments, comme la file M/D/1 et la formule de Pollaczek-Khinchine, le temps de réponse exponentiel de la file M/M/1 et ses percentiles, l’omission coordonnée, le batching et tout le chapitre appliqué sur une API d’inférence, viennent de la pratique courante de l’ingénierie des performances.