FEAT: Télémétrie agent — inventaire GPU détaillé (marque, modèle, VRAM, driver, température, backend) #84
Labels
No labels
bug
chore
design
dx:ci
dx:database
dx:dotnet
dx:infra
dx:security
dx:tests
dx:ui
etape-1
etape-2
etape-3
etape-4
etape-5
etape-6
etape-7
feature
priority-high
priority-low
priority-medium
security
spec
tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nonobis/Heimdall#84
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🎯 Contexte
Le GPU est la ressource mutualisée (tickets #72-77). L'entité Agent ne connaît que
HasGpu(bool) +GpuType(enum None/Cuda/OpenVino…). Il faut l'inventaire complet pour l'ordonnanceur (#74) : marque, modèle exact, VRAM, driver, température, encodage (NVENC/QSV/VAAPI), et le backend ONNX utilisable.📚 Référence spec / décision
Décision : inventaire GPU multi-fournisseurs au démarrage + refresh, remonté au central.
nvidia-smi --query-gpu=name,memory.total,driver_version,temperature.gpu,utilization.gpu,pci.bus_id(dans le conteneur si nvidia-container-toolkit — ticket #77)/sys/class/drm/card*/device/(vendor/device IDs → nom),rocm-smisi dispo,HSA_OVERRIDE_GFX_VERSION/sys/class/drm/card*/device/+vainfo(VAAPI) — modèle, driver i915, encodage QSVGpuVendor,GpuModel,VramBytes,DriverVersion,TemperatureCelsius,UtilizationPercent,Backend(Cuda/Rocm/Vaapi/Cpu),EncoderSupport(NVENC/QSV/VAAPI),IsHealthy🔍 État actuel (vérifié dans le code)
Agent:HasGpu,GpuType(enum) uniquement. Aucun collecteur GPU.FrameAnalyzerServicen'a pas de backend ONNX GPU branché (ticket #2). Le compose ne monte aucun device GPU (ticket #77). Le heartbeat ne transporte pas de détails GPU.🧩 À faire
GpuInventoryProvider: détection multi-fournisseurs (nvidia-smi, sysfs drm, vainfo, rocm-smi) avec fallback silencieuxlspci -nn)Agent+ migration (AddAgentGpuInventory) : liste de GPU (JSON structuré ou tableAgentGpu)EstimatedThroughputJobsPerMin) utilisable pour le routage🧪 Critères d'acceptation
HasGpu=falsemake testvert📁 Fichiers concernés
src/Heimdall.Agent/Services/GpuInventoryProvider.cs (nouveau), src/Heimdall.Domain/Entities/Agent.cs (+ AgentGpu si table), src/Heimdall.Infrastructure/Data/Migrations/, src/Heimdall.Web/Pages/Agents/AgentDetail.razor, src/Heimdall.Application/Services/IAnalysisScheduler.cs (consommation), tests/
⚠️ Impact
Dépend du ticket #77 (accès GPU au conteneur) pour la détection complète ; sans devices montés, l'inventaire reste vide/CPU — comportement attendu et documenté.
📝 Notes
C'est la donnée de base de l'ordonnanceur inter-sites (#74) : sans VRAM/driver/charge fiables, la mutualisation GPU ne peut pas router correctement.
Maquette
Ce ticket est couvert par la maquette du ticket #86 — UI Admin — page inventaire matériel agent (pièce maîtresse du lot télémétrie) : la section « Inventaire » de #86 maquette l'affichage des métriques et specs correspondantes (voir #86, section Maquette).
Maquette : couverte par le ticket #86 (inventaire matériel agent) — section ## Maquette ajoutée au corps.