# Fix: Ajout des colonnes CPU Mono et CPU Multi dans l'historique **Date:** 2026-01-10 **Type:** Enhancement **Problème:** Les colonnes CPU_MONO et CPU_MULTI affichaient "N/A" ## Problème identifié L'historique des benchmarks dans la page device detail n'affichait pas les scores CPU monocore et multicore, bien que ces données soient collectées et stockées. ## Données collectées Le script `bench.sh` collecte **déjà** ces informations (depuis la version 1.3.0) : ```bash # Test single-core (ligne 1105-1113) cpu_single=$(sysbench cpu --cpu-max-prime=20000 --threads=1 run) eps_single=$(echo "$cpu_single" | awk '/events per second/ {print $4}') cpu_score_single=$(safe_bc "scale=2; $eps_single") # Test multi-core (ligne 1116-1126) cpu_multi=$(sysbench cpu --cpu-max-prime=20000 --threads="$(nproc)" run) eps_multi=$(echo "$cpu_multi" | awk '/events per second/ {print $4}') cpu_score_multi=$(safe_bc "scale=2; $eps_multi") ``` Format JSON envoyé : ```json { "cpu": { "events_per_sec_single": 1234.56, "events_per_sec_multi": 9876.54, "score_single": 1234.56, "score_multi": 9876.54, "score": 5555.55 // Moyenne des deux } } ``` ## Base de données Le modèle `Benchmark` possède déjà les colonnes (depuis migration 003) : ```python # backend/app/models/benchmark.py (lignes 26-27) cpu_score_single = Column(Float, nullable=True) # Monocore CPU score cpu_score_multi = Column(Float, nullable=True) # Multicore CPU score ``` Le backend enregistre ces valeurs lors de la réception du benchmark (backend/app/api/benchmark.py, lignes 168-181 et 240-241). ## Solution appliquée ### Frontend - Ajout des colonnes **Fichier:** `frontend/js/device_detail.js` **Modification (lignes 837-850):** **Avant :** ```javascript Date Score Global CPU MEM DISK NET GPU ``` **Après :** ```javascript Date Global CPU CPU Mono // ⭐ NOUVEAU CPU Multi // ⭐ NOUVEAU Mémoire Disque Réseau GPU ``` **Données affichées (lignes 858-859):** ```javascript ${getScoreBadgeText(bench.cpu_score_single)} ${getScoreBadgeText(bench.cpu_score_multi)} ``` ## Résultat Le tableau de l'historique des benchmarks affiche maintenant : ``` ┌────────────────┬────────┬──────┬──────────┬───────────┬─────────┬─────────┬────────┬─────┬─────────┐ │ DATE │ GLOBAL │ CPU │ CPU MONO │ CPU MULTI │ MÉMOIRE │ DISQUE │ RÉSEAU │ GPU │ VERSION │ ├────────────────┼────────┼──────┼──────────┼───────────┼─────────┼─────────┼────────┼─────┼─────────┤ │ 10/01/2026 │ 5805 │ 8282 │ 1234.56 │ 9876.54 │ 7738 │ 1444 │ 756 │ N/A │ 1.3.2 │ │ 20/12/2025 │ 7418 │10897 │ 2345.67 │ 10234.12 │ 9386 │ 1854 │ 692 │ N/A │ 1.3.2 │ └────────────────┴────────┴──────┴──────────┴───────────┴─────────┴─────────┴────────┴─────┴─────────┘ ``` ## Interprétation des scores ### Score CPU global Moyenne des scores mono et multi : `(cpu_score_single + cpu_score_multi) / 2` ### Score CPU Mono (Single-core) - Test avec 1 seul thread - Mesure la performance d'un cœur unique - Important pour les applications single-threaded - Indique la fréquence et l'IPC (Instructions Per Cycle) ### Score CPU Multi (Multi-core) - Test avec tous les threads disponibles - Mesure la performance en parallélisation - Important pour les applications multithreadées - Indique la scalabilité et le nombre de cœurs ### Exemples de valeurs typiques **CPU Desktop performant (i7/Ryzen 7) :** - Mono: 2000-3000 - Multi: 10000-15000 **CPU Serveur (Xeon/EPYC) :** - Mono: 1500-2500 - Multi: 20000-50000+ (selon nb de cœurs) **CPU Mobile (laptop) :** - Mono: 1000-2000 - Multi: 4000-8000 ## Notes importantes ### Anciennes données Les benchmarks exécutés **avant** cette mise à jour afficheront **"N/A"** pour les colonnes CPU Mono/Multi car : 1. Ces valeurs n'étaient pas stockées en BDD 2. Ou le script bench.sh était dans une version antérieure ### Nouveaux benchmarks Tous les nouveaux benchmarks exécutés avec `bench.sh >= 1.3.0` afficheront correctement les scores mono et multi. ## Fichiers modifiés 1. `frontend/js/device_detail.js` - Fonction `loadBenchmarkHistory()` : Ajout de 2 colonnes - Lignes 837-873 ## Compatibilité - ✅ Rétrocompatible : Anciennes données affichent "N/A" - ✅ Pas de migration BDD nécessaire - ✅ Fonctionne avec bench.sh >= 1.3.0 - ✅ Format responsive (scrollable sur mobile) ## Pour tester 1. Lancer un nouveau benchmark : ```bash sudo bash scripts/bench.sh ``` 2. Consulter la page device detail 3. Vérifier l'onglet "Historique Benchmarks" 4. Les nouvelles colonnes doivent afficher les scores ## Voir aussi - [Backend API Benchmark](../backend/app/api/benchmark.py) - Enregistrement des scores - [Script bench.sh](../scripts/bench.sh) - Collecte des données (lignes 1096-1154) - [Modèle Benchmark](../backend/app/models/benchmark.py) - Structure BDD --- **Auteur:** Claude Code **Version:** 1.0