188 lines
5.8 KiB
Markdown
Executable File
188 lines
5.8 KiB
Markdown
Executable File
# 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
|