2.4 KiB
2.4 KiB
Revue des fondations Lardon3D
Objectif
Documenter la revue technique de la phase de fondation : task, task_queue, hardware_profile, resource_snapshot, resource_governor, réservations et intégration au scheduler.
Composants évalués
Task
- Cycle de vie complet
- États et transitions
- Pause/reprise coopérative
- Annulation coopérative
- Checkpoints
- Estimations de ressources
Task Queue
- File FIFO
- Sélection de la première tâche admissible
- Backpressure
- Bornage du pending_count
- Comportement WAIT
Hardware Profile
- Détection des capacités matérielles
- CPU, RAM, GPU/VRAM
Resource Snapshot
- Capture instantanée des ressources
- RAM libre, charge CPU, VRAM
Resource Governor
- Arbitrage centralisé
- Calcul de lots adaptatifs
- Réservations opaques
- Historique borné
Intégration Scheduler ↔ Governor
- Cycle d'exécution
- Admission
- Gestion des pauses
- Séquences adaptatives
Invariants garantis
- Intégrité des estimations (immuables)
- Obligation de réservation active avant démarrage
- Cohérence du contrat de lot transmis au callback
- Gestion sécurisée de WAIT et des variables de condition
- Libération unique des réservations
- Protection mutex unique du gouverneur
- Séparation stricte des rôles (scheduler ne décide pas des ressources)
Limites connues
- File à worker unique avec FIFO strict
- Absence de notification automatique de libération externe
- Accumulation de tombstones de réservations
- Absence de persistance
- Absence de DAG
- Absence de priorités
- Absence de pools de workers multiples
Risques à surveiller
- Ordre de destruction des objets
- Concurrence sur la libération des réservations
- Récursivité/blocage par un callback détruisant sa propre tâche
- Bornage de la mémoire
- Indépendance de la publication atomique
Feuille de route
Prochains tickets recommandés
- Sélectionner une tâche admissible sans blocage par la tête de file ✓
- Introduire le DAG et les dépendances
- Persister les tâches et checkpoints de reprise
- Orchestrer et mesurer les séquences adaptatives
- Ajouter les pools bornés CPU, IO et GPU
- Migrer l'import vers le scheduler générique
- Ajouter la publication live validée, puis le viewer Vulkan séparé
Validation
- Tests unitaires passés
- ASan/UBSan passés
- TSan passé
- git diff --check propre