lardon3d/docs/architecture/foundation_review.md

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

  1. Intégrité des estimations (immuables)
  2. Obligation de réservation active avant démarrage
  3. Cohérence du contrat de lot transmis au callback
  4. Gestion sécurisée de WAIT et des variables de condition
  5. Libération unique des réservations
  6. Protection mutex unique du gouverneur
  7. 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

  1. Sélectionner une tâche admissible sans blocage par la tête de file ✓
  2. Introduire le DAG et les dépendances
  3. Persister les tâches et checkpoints de reprise
  4. Orchestrer et mesurer les séquences adaptatives
  5. Ajouter les pools bornés CPU, IO et GPU
  6. Migrer l'import vers le scheduler générique
  7. 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

Statut : DOCUMENTATION DE L'IMPLÉMENTATION ACTUELLE