5.8 KiB
5.8 KiB
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) :
cores=$(lscpu | awk -F: '/^CPU\(s\)/ {gsub(/^[ \t]+/,"",$2); print $2}')
- Résultat :
CPU(s): 4(nombre de threads logiques) - Stocké comme
cpu_cores: 4dans la base de données - Incorrect : Pour un CPU avec 2 cores et hyperthreading
Après (lignes 241-245) :
# 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) :
{ label: 'Cores', value: snapshot.cpu_cores || 'N/A' }
cpu_cores = 0→ Affiche "N/A" ou "?" ❌
Après (ligne 129) :
{ 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 :
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) :
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) :
{ label: 'Modèle', value: snapshot.motherboard_model || 'N/A' }
// " " → Affiche des espaces au lieu de "N/A"
Après (lignes 95-107) :
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
{
"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 :
{
"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
# 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
- Exécuter un nouveau benchmark sur toutes les machines pour mettre à jour les données
- Vérifier l'interface web : http://localhost:8087/device_detail.html?id=1
- Valider que toutes les sections affichent les bonnes données
🔗 Fichiers Modifiés
| Fichier | Lignes | Changement |
|---|---|---|
| scripts/bench.sh | 234-247 | Correctif collecte cpu_cores |
| frontend/js/device_detail.js | 129-130 | Amélioration affichage CPU |
| frontend/js/device_detail.js | 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