add go bench client
This commit is contained in:
181
docs/FIX_CPU_MONO_MULTI_COLUMNS.md
Normal file
181
docs/FIX_CPU_MONO_MULTI_COLUMNS.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# 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
|
||||
<th>Date</th>
|
||||
<th>Score Global</th>
|
||||
<th>CPU</th>
|
||||
<th>MEM</th>
|
||||
<th>DISK</th>
|
||||
<th>NET</th>
|
||||
<th>GPU</th>
|
||||
```
|
||||
|
||||
**Après :**
|
||||
```javascript
|
||||
<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):**
|
||||
```javascript
|
||||
<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 :
|
||||
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
|
||||
Reference in New Issue
Block a user