Files
serv_benchmark/docs/CHANGELOG_2025-12-14.md
Gilles Soulier c67befc549 addon
2026-01-05 16:08:01 +01:00

188 lines
5.8 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Changelog - 14 décembre 2025, 03:00
## 🔧 Correctifs Appliqués
### 1. Script Benchmark (bench.sh v1.2.0)
#### Problème
Le script collectait le nombre de **threads** au lieu du nombre de **cores physiques** pour le CPU.
**Avant** (ligne 240) :
```bash
cores=$(lscpu | awk -F: '/^CPU\(s\)/ {gsub(/^[ \t]+/,"",$2); print $2}')
```
- Résultat : `CPU(s): 4` (nombre de threads logiques)
- Stocké comme `cpu_cores: 4` dans la base de données
- **Incorrect** : Pour un CPU avec 2 cores et hyperthreading
**Après** (lignes 241-245) :
```bash
# Calcul du nombre de cores physiques: Core(s) per socket × Socket(s)
local cores_per_socket sockets
cores_per_socket=$(lscpu | awk -F: '/Core\(s\) per socket/ {gsub(/^[ \t]+/,"",$2); print $2}')
sockets=$(lscpu | awk -F: '/Socket\(s\)/ {gsub(/^[ \t]+/,"",$2); print $2}')
cores=$((${cores_per_socket:-1} * ${sockets:-1}))
```
- Résultat : `2 cores × 1 socket = 2` (cores physiques)
- **Correct** : Reflète le vrai nombre de cores
#### Exemple de correction
```
Machine: Intel Core i5-2400
- Ancien: cpu_cores = 4 (threads)
- Nouveau: cpu_cores = 2 (cores réels)
- Threads: 4 (via nproc, inchangé)
Machine: AMD Ryzen 9 5900X
- Ancien: cpu_cores = 24 (threads)
- Nouveau: cpu_cores = 12 (cores réels)
- Threads: 24 (via nproc, inchangé)
```
### 2. Frontend (device_detail.js)
#### Problème 1: Affichage CPU cores incorrect
L'affichage utilisait l'opérateur `||` qui traite `0` comme une valeur "falsy", affichant "N/A" au lieu de `0`.
**Avant** (ligne 129) :
```javascript
{ label: 'Cores', value: snapshot.cpu_cores || 'N/A' }
```
- `cpu_cores = 0` → Affiche "N/A" ou "?" ❌
**Après** (ligne 129) :
```javascript
{ label: 'Cores', value: snapshot.cpu_cores != null ? snapshot.cpu_cores : 'N/A' }
```
- `cpu_cores = 0` → Affiche "0" ✅
- `cpu_cores = null` → Affiche "N/A" ✅
#### Problème 2: Affichage RAM incorrect
**Avant** :
```javascript
const ramUsedGB = Math.round((snapshot.ram_used_mb || 0) / 1024);
// ram_used_mb = null → Affiche "0 GB" au lieu de "N/A"
```
**Après** (lignes 183-193) :
```javascript
const ramUsedGB = snapshot.ram_used_mb != null ? Math.round(snapshot.ram_used_mb / 1024) : null;
// ram_used_mb = null → Affiche "N/A" ✅
// ram_used_mb = 0 → Affiche "0 GB" ✅
```
#### Problème 3: Affichage Carte Mère avec espaces vides
**Problème** : Le modèle de carte mère peut contenir uniquement des espaces (ex: " ")
**Avant** (ligne 97) :
```javascript
{ label: 'Modèle', value: snapshot.motherboard_model || 'N/A' }
// " " → Affiche des espaces au lieu de "N/A"
```
**Après** (lignes 95-107) :
```javascript
const cleanValue = (val) => {
if (!val || (typeof val === 'string' && val.trim() === '')) return 'N/A';
return val;
};
const items = [
{ label: 'Fabricant', value: cleanValue(snapshot.motherboard_vendor) },
{ label: 'Modèle', value: cleanValue(snapshot.motherboard_model) },
{ label: 'Version BIOS', value: cleanValue(snapshot.bios_version) },
{ label: 'Date BIOS', value: cleanValue(snapshot.bios_date) }
];
// " " → Affiche "N/A" ✅
```
## 📊 Impact
### Avant le Correctif
```json
{
"cpu_cores": 0, // ❌ Incorrect (devrait être 2)
"cpu_threads": 24, // ✅ OK
"ram_used_mb": null, // ⚠️ Données manquantes
"ram_free_mb": null // ⚠️ Données manquantes
}
```
**Frontend affichait** :
- Cores: "?" (car 0 traité comme falsy)
- RAM Utilisée: "0 GB" (au lieu de "N/A")
### Après le Correctif + Nouveau Benchmark
**Base de données** :
```json
{
"cpu_cores": 2, // ✅ Correct (2 cores physiques)
"cpu_threads": 4, // ✅ OK
"ram_used_mb": 6818, // ✅ Données collectées
"ram_free_mb": 379 // ✅ Données collectées
}
```
**Frontend affichera** :
- Cores: "2" ✅
- Threads: "4" ✅
- RAM Utilisée: "7 GB (87%)" ✅
- RAM Libre: "0 GB" ✅
## 🧪 Tests de Validation
```bash
# Test 1: Vérifier la collecte CPU cores
LANG=C lscpu | grep -E "(Core\(s\) per socket|Socket\(s\))"
# Résultat attendu: Core(s) per socket: 2, Socket(s): 1
# Test 2: Vérifier la collecte RAM
free -k | awk '/^Mem:/ {printf "Used: %d MB\n", $3/1024}'
# Résultat attendu: Used: ~6800 MB (valeur non-null)
# Test 3: Redémarrer les conteneurs
docker compose restart frontend
# Test 4: Exécuter un nouveau benchmark
sudo bash /home/gilles/Documents/vscode/serv_benchmark/scripts/bench.sh
# Test 5: Vérifier l'API
curl http://localhost:8007/api/devices/1 | jq '{
cpu_cores: .last_hardware_snapshot.cpu_cores,
cpu_threads: .last_hardware_snapshot.cpu_threads,
ram_used: .last_hardware_snapshot.ram_used_mb
}'
# Résultat attendu: cpu_cores: 2, cpu_threads: 4, ram_used: 6818
```
## 📝 Prochaines Étapes
1. **Exécuter un nouveau benchmark** sur toutes les machines pour mettre à jour les données
2. **Vérifier l'interface web** : http://localhost:8087/device_detail.html?id=1
3. **Valider** que toutes les sections affichent les bonnes données
## 🔗 Fichiers Modifiés
| Fichier | Lignes | Changement |
|---------|--------|------------|
| [scripts/bench.sh](scripts/bench.sh#L234-L247) | 234-247 | Correctif collecte cpu_cores |
| [frontend/js/device_detail.js](frontend/js/device_detail.js#L129-L130) | 129-130 | Amélioration affichage CPU |
| [frontend/js/device_detail.js](frontend/js/device_detail.js#L183-L193) | 183-193 | Amélioration affichage RAM |
## 🎯 Résultat Attendu
Après avoir exécuté le benchmark avec le script corrigé :
- ✅ Nombre de **cores physiques** correct dans la base de données
- ✅ Données RAM complètes (**used**, **free**, **shared**)
- ✅ Frontend affiche les valeurs réelles au lieu de "N/A"
- ✅ Affichage cohérent entre 0, null et valeurs réelles
---
**Version Script** : 1.2.0
**Version Frontend** : 2.0.1
**Date Déploiement** : 14 décembre 2025, 03:00