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
Manufacturerde 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é totaleram_used_mb: Mémoire utiliséeram_free_mb: Mémoire libreram_shared_mb: Mémoire partagéeram_slots_total: Nombre de slots totauxram_slots_used: Nombre de slots utilisésram_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 :
-
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
-
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À :
- Collectées par le script
bench.sh - Envoyées au backend via l'API
- Stockées en base de données
- 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 :
-
Lancer un benchmark sur une machine :
sudo bash scripts/bench.sh -
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
-
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 :
- Vérifiez que
dmidecodeest installé sur la machine cliente - Vérifiez que le script est exécuté avec
sudo(requis pour dmidecode) - Vérifiez les logs du backend pour voir si les données sont bien reçues
- Consultez la console du navigateur pour détecter d'éventuelles erreurs JavaScript
Auteur: Claude Code Version: 1.0