Files
serv_benchmark/CHANGELOG.md
2025-12-08 05:42:52 +01:00

5.2 KiB

Changelog - script_test.sh

Version 1.0.1 - Améliorations demandées

Nouvelles fonctionnalités

1. Wake-on-LAN pour cartes Ethernet

  • Fichier : script_test.sh:546-555
  • Détection automatique du support Wake-on-LAN via ethtool
  • Ajout du champ wake_on_lan (true/false/null) dans les informations réseau
  • Vérifie si la carte supporte le "magic packet" (flag 'g')
{
  "name": "eth0",
  "type": "ethernet",
  "wake_on_lan": true
}

2. Statistiques RAM détaillées

  • Fichier : script_test.sh:298-303 et script_test.sh:367-385
  • Ajout de la RAM utilisée (used_mb)
  • Ajout de la RAM libre (free_mb)
  • Ajout de la RAM partagée (shared_mb) - inclut tmpfs, vidéo partagée, etc.
  • Distinction entre RAM physique totale et RAM disponible dans l'OS
{
  "total_mb": 16384,
  "used_mb": 8192,
  "free_mb": 7500,
  "shared_mb": 692
}

3. Test réseau iperf3 vers 10.0.1.97

  • Fichier : script_test.sh:675-726
  • Test de connectivité préalable avec ping
  • Test upload (client → serveur) pendant 10 secondes
  • Test download (serveur → client avec -R) pendant 10 secondes
  • Mesure du ping moyen (5 paquets)
  • Calcul du score réseau basé sur la moyenne upload/download

Prérequis : Le serveur 10.0.1.97 doit avoir iperf3 -s en cours d'exécution.

# Sur le serveur 10.0.1.97
iperf3 -s
{
  "upload_mbps": 940.50,
  "download_mbps": 950.20,
  "ping_ms": 0.5,
  "score": 94.54
}

4. Données SMART de vieillissement des disques

  • Fichier : script_test.sh:492-602

  • Extraction complète des données SMART pour chaque disque via smartctl

  • Indicateurs de santé globale :

    • health_status : PASSED/FAILED (test auto-diagnostic SMART)
    • temperature_celsius : Température actuelle du disque
  • Indicateurs de vieillissement :

    • power_on_hours : Heures de fonctionnement totales
    • power_cycle_count : Nombre de démarrages/arrêts
    • reallocated_sectors : Secteurs défectueux réalloués (⚠️ signe de défaillance)
    • pending_sectors : Secteurs en attente de réallocation (⚠️ attention)
    • udma_crc_errors : Erreurs de transmission (câble/interface)
  • Pour SSD uniquement :

    • wear_leveling_count : Compteur d'usure des cellules
    • total_lbas_written : Volume total de données écrites

Interprétation :

  • health_status: "PASSED" + reallocated_sectors: 0 = Disque sain
  • ⚠️ reallocated_sectors > 0 = Début de défaillance, surveiller
  • 🔴 pending_sectors > 0 = Défaillance imminente, sauvegarder immédiatement
  • 🔴 health_status: "FAILED" = Disque défaillant, remplacer
{
  "device": "sda",
  "model": "Samsung SSD 970 EVO Plus 500GB",
  "type": "ssd",
  "smart": {
    "health_status": "PASSED",
    "power_on_hours": 12543,
    "power_cycle_count": 1876,
    "temperature_celsius": 42,
    "reallocated_sectors": 0,
    "pending_sectors": 0,
    "udma_crc_errors": 0,
    "wear_leveling_count": 97,
    "total_lbas_written": 45678901234
  }
}

5. Correction du calcul global_score

  • Fichier : script_test.sh:732-760
  • Le score global n'inclut que CPU, RAM et Disk (pas réseau, pas GPU)
  • Nouvelle pondération :
    • CPU : 40%
    • RAM : 30%
    • Disk : 30%
  • Normalisation automatique si certains benchmarks sont manquants
  • Score sur 100

Corrections

  • PATH Fix : Ajout de /usr/sbin et /sbin au PATH (script_test.sh:30)
    • Résout le problème de détection de dmidecode, smartctl, ethtool

Format JSON mis à jour

{
  "hardware": {
    "ram": {
      "total_mb": 16384,
      "used_mb": 8192,
      "free_mb": 7500,
      "shared_mb": 692,
      "slots_total": 4,
      "slots_used": 2,
      "ecc": false,
      "layout": [...]
    },
    "network": [
      {
        "name": "eth0",
        "type": "ethernet",
        "mac": "00:11:22:33:44:55",
        "ip_address": "10.0.1.100",
        "speed_mbps": 1000,
        "wake_on_lan": true
      }
    ]
  },
  "benchmarks": {
    "cpu": {
      "events_per_sec": 5234.89,
      "duration_s": 10.0,
      "score": 52.35
    },
    "memory": {
      "throughput_mib_s": 15234.5,
      "score": 76.17
    },
    "disk": {
      "read_mb_s": 450.0,
      "write_mb_s": 420.0,
      "iops_read": 112000,
      "iops_write": 105000,
      "latency_ms": 0.08,
      "score": 43.50
    },
    "network": {
      "upload_mbps": 940.5,
      "download_mbps": 950.2,
      "ping_ms": 0.5,
      "score": 94.54
    },
    "gpu": null,
    "global_score": 57.00
  }
}

Notes d'utilisation

  1. Serveur iperf3 : Assurez-vous que iperf3 -s tourne sur 10.0.1.97 avant de lancer le script
  2. Permissions : Le script nécessite sudo pour dmidecode, smartctl, ethtool
  3. Durée : Le script prend environ 3-4 minutes (10s iperf3 upload + 10s download + 30s disk)

Commande de test

# Lancer le serveur iperf3 sur 10.0.1.97
ssh user@10.0.1.97 'iperf3 -s -D'

# Lancer le script de test
sudo bash script_test.sh

# Voir le résultat
cat result.json | jq .