Files
serv_benchmark/docs/ANALYSE_RAM_AFFICHAGE.md
2026-01-11 23:41:30 +01:00

5.7 KiB

Analyse : Affichage des informations détaillées de la RAM

Date: 2026-01-10 Objectif: Ajouter dans la section mémoire : nombre de slots utilisés, types de barrettes, fabricants

Résumé

BONNE NOUVELLE : Toutes ces informations sont DÉJÀ collectées, stockées et affichées !

Détails de l'implémentation actuelle

1. Collecte des données (Script bench.sh)

Fichier: scripts/bench.sh (lignes 444-546)

Le script utilise dmidecode pour collecter :

  • Nombre de slots totaux : via dmidecode -t 16 (Physical Memory Array)
  • Nombre de slots utilisés : comptage des barrettes détectées
  • Type de barrettes : DDR3, DDR4, DDR5, etc.
  • Vitesse : en MHz
  • Fabricant : champ Manufacturer de dmidecode
  • Taille : en MB/GB par barrette
  • Part Number : numéro de pièce (si disponible)

Exemple de données collectées :

sudo dmidecode -t 17 | grep -E 'Locator:|Size:|Type:|Speed:|Manufacturer:'

2. Format JSON collecté

Les données sont structurées en JSON dans le champ ram_layout_json :

[
  {
    "slot": "DIMM0",
    "size_mb": 8192,
    "type": "DDR4",
    "speed_mhz": 2400,
    "manufacturer": "Samsung"
  },
  {
    "slot": "DIMM1",
    "size_mb": 8192,
    "type": "DDR4",
    "speed_mhz": 2400,
    "manufacturer": "Crucial"
  }
]

3. Stockage en base de données

Fichier: backend/app/models/hardware_snapshot.py (ligne 43)

ram_layout_json = Column(Text, nullable=True)  # JSON array

Ce champ stocke TOUTES les informations des barrettes RAM en JSON.

Autres champs RAM :

  • ram_total_mb : Capacité totale
  • ram_used_mb : Mémoire utilisée
  • ram_free_mb : Mémoire libre
  • ram_shared_mb : Mémoire partagée
  • ram_slots_total : Nombre de slots totaux
  • ram_slots_used : Nombre de slots utilisés
  • ram_ecc : Support ECC (booléen)

4. Schéma de validation (Backend)

Fichier: backend/app/schemas/hardware.py (lignes 25-44)

class RAMSlot(BaseModel):
    slot: str
    size_mb: int
    type: Optional[str] = None
    speed_mhz: Optional[int] = None
    vendor: Optional[str] = None      # ✅ Fabricant
    part_number: Optional[str] = None

class RAMInfo(BaseModel):
    total_mb: int
    used_mb: Optional[int] = None
    free_mb: Optional[int] = None
    shared_mb: Optional[int] = None
    slots_total: Optional[int] = None   # ✅ Slots totaux
    slots_used: Optional[int] = None     # ✅ Slots utilisés
    ecc: Optional[bool] = None
    layout: Optional[List[RAMSlot]] = None  # ✅ Détails par barrette

5. Affichage Frontend

Fichier: frontend/js/device_detail.js (lignes 185-257)

La fonction renderMemoryDetails() affiche :

  1. Vue d'ensemble (grille de cartes) :

    • Capacité totale
    • Mémoire utilisée (avec pourcentage)
    • Mémoire libre
    • Mémoire partagée
    • Slots utilisés / totaux
    • Support ECC
  2. Configuration détaillée des barrettes (lignes 220-254) : Pour chaque barrette :

    • Slot : DIMM0, DIMM1, etc.
    • Taille : en GB
    • Type : DDR3, DDR4, etc.
    • Vitesse : en MHz
    • Fabricant : Samsung, Crucial, etc.
    • Part Number : Si disponible

Exemple d'affichage actuel :

┌─────────────────────────────────────────┐
│ Slot DIMM0                               │
│ 8 GB • DDR4 • 2400 MHz                  │
│ Fabricant: Samsung                       │
└─────────────────────────────────────────┘

Ce qui fonctionne déjà

Toutes les informations demandées sont DÉJÀ :

  1. Collectées par le script bench.sh
  2. Envoyées au backend via l'API
  3. Stockées en base de données
  4. Affichées dans le frontend

Améliorations possibles

Bien que tout fonctionne, voici quelques améliorations optionnelles :

Option 1 : Affichage visuel amélioré

  • Ajouter une représentation visuelle des slots (icônes)
  • Utiliser des couleurs pour différencier les fabricants
  • Ajouter un graphique de répartition par fabricant

Option 2 : Informations supplémentaires

  • Ajouter le Part Number dans l'affichage actuel (déjà dans les données)
  • Afficher le voltage des barrettes (nécessite modification du script)
  • Afficher la latence CAS (CL) (nécessite modification du script)

Option 3 : Tri et filtrage

  • Permettre de trier les barrettes par slot, taille ou fabricant
  • Afficher un récapitulatif groupé par fabricant

Vérification du fonctionnement

Pour vérifier que les données s'affichent correctement :

  1. Lancer un benchmark sur une machine :

    sudo bash scripts/bench.sh
    
  2. Consulter la page device detail dans le frontend :

    • Aller sur http://localhost:8007/devices.html
    • Cliquer sur un device
    • Vérifier la section "💾 Mémoire (RAM)"
    • La configuration des barrettes devrait s'afficher automatiquement
  3. Vérifier les données en BDD (optionnel) :

    SELECT ram_slots_total, ram_slots_used, ram_layout_json
    FROM hardware_snapshots
    WHERE device_id = 1
    ORDER BY captured_at DESC
    LIMIT 1;
    

Conclusion

Aucune modification n'est nécessaire - le système fonctionne déjà comme demandé !

Si vous ne voyez pas ces informations s'afficher :

  1. Vérifiez que dmidecode est installé sur la machine cliente
  2. Vérifiez que le script est exécuté avec sudo (requis pour dmidecode)
  3. Vérifiez les logs du backend pour voir si les données sont bien reçues
  4. Consultez la console du navigateur pour détecter d'éventuelles erreurs JavaScript

Auteur: Claude Code Version: 1.0