Files
serv_benchmark/CHANGELOG_2025-12-14.md
2025-12-20 03:47:10 +01:00

5.8 KiB
Executable File
Raw Blame History

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: 4 dans 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

  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 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