5.8 KiB
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) :
# 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é :
{
"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) :
# 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 :
<th>Date</th>
<th>Score Global</th>
<th>CPU</th>
<th>MEM</th>
<th>DISK</th>
<th>NET</th>
<th>GPU</th>
Après :
<th>Date</th>
<th>Global</th>
<th>CPU</th>
<th>CPU Mono</th> // ⭐ NOUVEAU
<th>CPU Multi</th> // ⭐ NOUVEAU
<th>Mémoire</th>
<th>Disque</th>
<th>Réseau</th>
<th>GPU</th>
Données affichées (lignes 858-859):
<td><span class="${window.BenchUtils.getScoreBadgeClass(bench.cpu_score_single)}">
${getScoreBadgeText(bench.cpu_score_single)}
</span></td>
<td><span class="${window.BenchUtils.getScoreBadgeClass(bench.cpu_score_multi)}">
${getScoreBadgeText(bench.cpu_score_multi)}
</span></td>
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 :
- Ces valeurs n'étaient pas stockées en BDD
- 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
frontend/js/device_detail.js- Fonction
loadBenchmarkHistory(): Ajout de 2 colonnes - Lignes 837-873
- Fonction
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
-
Lancer un nouveau benchmark :
sudo bash scripts/bench.sh -
Consulter la page device detail
-
Vérifier l'onglet "Historique Benchmarks"
-
Les nouvelles colonnes doivent afficher les scores
Voir aussi
- Backend API Benchmark - Enregistrement des scores
- Script bench.sh - Collecte des données (lignes 1096-1154)
- Modèle Benchmark - Structure BDD
Auteur: Claude Code Version: 1.0