169 lines
12 KiB
Markdown
169 lines
12 KiB
Markdown
Fiche PIPE1-REVUE-02 (modèle v2) — Niveau N3 — Modèle prévu opus xhigh | utilisé claude-opus-5-5 — Session Medium-xHigh · PIPE1
|
||
# PIPE1-REVUE-02-MODELE : barème de mesure v2, en grille, prêt à adopter (2026-10-15)
|
||
|
||
Demande de l'utilisateur à cette session : « retravaille le modèle et envoie le à Big Boss ». Ce fichier remplace le
|
||
§ 4 de `PIPE1-REVUE-02.md`. Les faits F1 à F13 de cette revue restent valables ; F14 et l'état de M4 sont corrigés
|
||
ici (F15 à F18). Statut : proposition, non approuvée ; aucun skill modifié ; rien n'a été lancé.
|
||
|
||
## 0. Principe
|
||
|
||
Plus de score. La fiche lit **une cellule** d'une grille question × enjeu, qui donne les paliers. L'exigence donne le
|
||
nombre de passes. Le reste se déduit : parties jouées, budget, épreuves préalables. Les paliers reprennent le système
|
||
de mesure déjà en place dans le projet (doc 18 : scénario O0, sessions A et C ; doc 11 § 12 : export Insights sans
|
||
interface) au lieu d'en inventer un.
|
||
|
||
## 1. Faits nouveaux depuis la revue (établis)
|
||
|
||
| # | Fait | Preuve | Effet |
|
||
|---|---|---|---|
|
||
| F15 | Le projet a une base chiffrée et des critères : scénario O0 (environ 15 min) ; référence O0 (build 5.5 L7cdj, 36 004 images) : médiane 16,7 ms, 159 images > 50 ms, 112 > 100 ms ; critère de la Session C : médiane ≤ 17 ms (± 1) ou écart expliqué | `Docs\18_Build_Debug.md:40-41, :86-87, :128` | F14 nuancé : aucun seuil standard d'Epic, mais des critères du projet, établis en 5.5. La première épreuve de M1 en 5.8 donne la base O0-5.8 |
|
||
| F16 | La Session C a tourné en 5.5 (Dbg-I6 : 9 000 images, médiane 16,66 ms) ; elle se joue **sans** `-LPHitchLog` | `18_Build_Debug.md:128, :197-207` | les à-coups de M1 se lisent dans le CSV (images > 50 et > 100 ms), pas dans `LPDebug hitch` |
|
||
| F17 | Export d'une trace Insights sans interface éprouvé en 5.5 (lot O9) : `UnrealInsights.exe -OpenTraceFile=… -AutoQuit -NoUI -ExecOnAnalysisCompleteCmd="@=export.rsp"` avec `TimingInsights.ExportTimerStatistics … -threads=GameThread`. Pièges : chemins avec `/` ; une trace de 10 min (3,3 Go) demande plus de 50 Go de mémoire à l'analyse | `Docs\11_Audit_Optimisation.md:276-281` | M4 est lisible par script ou par agent (en 5.5) : à rééprouver en 5.8, avec des traces de 4 min au plus (841 Mo pour 4 min) |
|
||
| F18 | Session A : build DebugGame dans le tableau des lanceurs ; la trace G6 a été faite en Development, canaux `cpu,frame,bookmark,loadtime`, sans `memory` | `18_Build_Debug.md:45, :222-233` | M4 : DebugGame ou Development, sans le canal `memory` |
|
||
|
||
## 2. Paliers (outils du projet)
|
||
|
||
| Palier | Recette | Build | Répond à | Passe jouée | État en 5.8 |
|
||
|---|---|---|---|---|---|
|
||
| M0 | `Tools\LogStats.ps1 -Compare <A>,<B> -Stats` sur `LifePlay.log` | Development | compteurs du jeu : F5, DESTROY ; à-coups ≥ 50 ms seulement si la partie a été lancée avec `-LPHitchLog` | scénario O0 ; peut être la passe de M1 (compteurs seulement) | en service |
|
||
| M1 | lanceur Session C : `-csvGpuStats -llm -llmcsv -ExecCmds="csvprofile repeat=20, csvprofile frames=9000"`, sans `-LPHitchLog`, **jamais** `-csvCaptureFrames` ; puis `Tools\SummarizeDebugCsv.ps1` ; PerfReportTool en option | Development | cadence instrumentée (médiane, images > 50 et > 100 ms), coût par fil (GT, RT, GPU), mémoire LLM | scénario O0, environ 15 min | éprouvé en 5.5 (Dbg-I6) ; à rééprouver en 5.8, ce qui donne la base O0-5.8 |
|
||
| M2 | trace ETW hors ligne (`wpr` ou `logman`, fournisseurs relevés dans le source de PresentMon 2.6.0), puis `PresentMon --etl_file` | Shipping | cadence ressentie par le joueur | scénario O0 ou extrait nommé ; session élevée | jamais essayé (fiche B2-ter) ; peut échouer comme la capture en direct |
|
||
| M3 | journal de performance d'AMD Adrenalin | toutes | cadence (grain à relever) | activation par l'utilisateur | format inconnu |
|
||
| M4 | lanceur Session A, canaux `cpu,frame,bookmark,loadtime` (`gpu` si besoin, sans `memory`), `-statnamedevents` ; trace de 4 min au plus ; export par `UnrealInsights.exe -NoUI -AutoQuit -ExecOnAnalysisCompleteCmd` (`TimingInsights.ExportTimerStatistics`) | DebugGame ou Development | quelle fonction, quel Blueprint | passe courte, à part : la trace fausse la cadence | éprouvé en 5.5 (O9, G6) ; à rééprouver en 5.8 |
|
||
|
||
Hors grille : Gauntlet (rejouer M1 sans humain, Development seulement, éditeur hôte requis, R11-17 et R11-18) ;
|
||
Session B (fuites, mémoire physique) ; Tracy abandonné ; FPS chart retiré (redondant avec M1, F3).
|
||
|
||
## 3. Entrées de la fiche (trois)
|
||
|
||
| Q. Question | Sens |
|
||
|---|---|
|
||
| Q0 | compteurs du jeu : rien n'a cassé ni régressé (F5, DESTROY, gros à-coups) |
|
||
| Q1 | cadence de la build instrumentée (médiane, images longues) |
|
||
| Q2 | cadence ressentie par le joueur (Shipping) |
|
||
| Q3 | quel fil coûte (GT, RT, GPU), ou quelle catégorie de mémoire |
|
||
| Q4 | quelle fonction, quel Blueprint |
|
||
|
||
| E. Enjeu | Sens |
|
||
|---|---|
|
||
| E0 | contrôle, aucune décision |
|
||
| E1 | changement réversible, sans gain revendiqué (nettoyage, réglage) |
|
||
| E2 | gain de performance revendiqué (Blueprint, C++) |
|
||
| E3 | rendu, plateforme ou peu réversible (SM6, Lumen) |
|
||
|
||
| X. Exigence | Sens | Passes |
|
||
|---|---|---|
|
||
| X0 | constat (oui ou non) | 1 |
|
||
| X1 | médiane ou moyenne | 1 par côté |
|
||
| X2 | distribution : médiane, p95, p99, images longues | 3 par côté, valeur provisoire recalée sur la dispersion mesurée à l'épreuve de M1 |
|
||
|
||
Le doute (D) ne se note pas à la demande : il sert à la règle R3, après un résultat.
|
||
|
||
## 4. Grille question × enjeu (lire une seule cellule)
|
||
|
||
| Q \ E | E0 contrôle | E1 réversible sans gain | E2 gain revendiqué | E3 rendu, plateforme (★) |
|
||
|---|---|---|---|---|
|
||
| Q0 compteurs | M0 | M0 | M1 + M0 | M1 + M0 + M2 |
|
||
| Q1 cadence instrumentée | M1 | M1 + M0 | M1 + M0 | M1 + M0 + M2 |
|
||
| Q2 cadence Shipping | M2 | M2 + M0 | M2 + M1 + M0 | M2 + M1 + M0 |
|
||
| Q3 quel fil, mémoire | M1 | M1 + M0 | M1 + M0 | M1 + M0 + M2 |
|
||
| Q4 quelle fonction | M4 | M4 + M0 | M4 + M1 + M0 | M4 + M1 + M0 + M2 |
|
||
|
||
★ E3 : décision explicite de l'utilisateur avant lancement, et session sans plantage GPU exigée en plus (ERR-138).
|
||
Construction de la grille : base de Q (Q0 → M0, Q1 → M1, Q2 → M2, Q3 → M1, Q4 → M4), plus le plancher de E (E1 → M0 ;
|
||
E2 → M1 + M0 ; E3 → M1 + M0 + M2). « M1 + M0 » est **une seule passe** Session C : M0 y lit les compteurs du journal,
|
||
et les à-coups viennent du CSV (F16).
|
||
|
||
## 5. Ce qui se déduit de la cellule
|
||
|
||
### 5.1 Parties jouées (coût humain)
|
||
|
||
Parties = passes (X) × côtés (2 en A/B, 1 en constat), par build :
|
||
- Development : M0 et M1 partagent la passe ;
|
||
- Shipping : M2 et M3 demandent leurs propres passes ;
|
||
- M4 : une passe courte par côté, à part.
|
||
|
||
### 5.2 Budget en jetons (estimé)
|
||
|
||
| Palier | Rodé, lancé par la session (par A/B) | Épreuve en 5.8 (une fois, fiche à part) |
|
||
|---|---|---|
|
||
| M0 | ≤ 5 k | — (en service) |
|
||
| M1 | ≤ 15 k | 80 à 120 k ; donne la base O0-5.8 et la dispersion du poste |
|
||
| M2 | ≤ 10 k | 90 à 140 k (fiche B2-ter) |
|
||
| M3 | ≤ 10 k | 60 à 90 k |
|
||
| M4 | ≤ 25 k (export limité à un fil, 30 lignes lues) | 60 à 90 k (recette 5.5 connue) |
|
||
|
||
- **Budget de la fiche = somme des paliers de la cellule (colonne « rodé »).** Les épreuves restent hors du budget de
|
||
la fiche.
|
||
- Un agent ajoute environ 60 k : on n'en lance un que si le script manque ou échoue. Base : 55 à 140 k par agent neuf
|
||
(chiffre de Big Boss). Un budget rodé ne contient donc aucun agent.
|
||
- Au-delà de 120 k : décision explicite de l'utilisateur.
|
||
- Recalage après 3 fiches par palier, d'après `Tools\FicheStats.py`.
|
||
|
||
### 5.3 Notation dans la fiche (vérifiée par Big Boss au BUILD-GO)
|
||
|
||
`Mesure : Q3 E2 X2 → M1 + M0 ; 6 parties Session C ; budget 20 k ; épreuve M1 requise (fiche à part)`
|
||
|
||
## 6. Règles
|
||
|
||
- **R1. Rien sous la cellule.** Un palier de la cellule ne s'omet qu'avec l'accord de Big Boss, consigné dans la fiche.
|
||
- **R2. Réutiliser.** Un résultat déjà acquis sur la même build, le même scénario et dans les mêmes conditions ne se
|
||
refait pas. Exemple : le M1 de G3 sert à l'à-coup qui suit.
|
||
- **R3. Montée par le doute, après un résultat, d'un cran.**
|
||
- Transitions : M0 → M1 ; M1 → M4 (du fil à la fonction) ; M1 ↔ M2 (instrumentée contre Shipping).
|
||
- Deux montées au plus par demande, puis retour à l'utilisateur.
|
||
- **R4. Repli.**
|
||
- M2 indisponible → M3.
|
||
- Les deux indisponibles → « cadence Shipping non mesurable », consigné, décision de l'utilisateur.
|
||
- M4 ne remplace jamais une mesure de cadence.
|
||
- **R5. A/B honnête.**
|
||
- Mêmes conditions : même build hors changement, scénario O0 (ou extrait nommé), mêmes conditions de poste (secteur,
|
||
plan d'alimentation), X passes par côté.
|
||
- Un chiffre Development n'est jamais présenté comme un chiffre Shipping.
|
||
- Les options de la Session C (`-llm`, `-csvGpuStats`) gonflent les valeurs absolues : valables en A/B, pas comme
|
||
chiffre du joueur (estimé).
|
||
- **R6. Épreuve d'abord.** Un palier non éprouvé en 5.8 l'est par une fiche à part, recette seule. Ordre proposé : M1
|
||
(base O0-5.8), M4, M2, M3.
|
||
- **R7. Sortie fixe.** Chaque passe rend une ligne :
|
||
`palier | build | passe n/N | côté | médiane | > 50 ms | > 100 ms | GT | verdict | chemin`.
|
||
La session ne lit ni CSV brut ni journal entier.
|
||
- **R8. Seuils.**
|
||
- Ils viennent des critères du projet (doc 18:128), rebasés sur O0-5.8 après l'épreuve de M1.
|
||
- Aucun seuil n'est inventé dans une fiche.
|
||
|
||
## 7. Exemples (grille `OPT0-A3-GRILLE.md` § 4)
|
||
|
||
| Demande | Q | E | X | Cellule | Parties | Budget rodé | Épreuves préalables |
|
||
|---|---|---|---|---|---|---|---|
|
||
| G2 nettoyage U9 : rien n'a régressé ? | Q0 | E1 | X1 | M0 | 2 | ≤ 5 k | aucune |
|
||
| G3 Ticks de Person | Q3 | E2 | X2 | M1 + M0 | 6 | ≤ 20 k | M1 |
|
||
| G4 AnimBP thread-safe | Q3 | E2 | X2 | M1 + M0 | 6 | ≤ 20 k | M1 |
|
||
| G6 SM6 / DX12 | Q2 | E3 | X2 | M2 + M1 + M0, session sans plantage, décision ★ | 12 (6 Development, 6 Shipping) | ≤ 30 k | M1, M2 (ou M3) |
|
||
| à-coup inexpliqué après G3 | Q4 | E2 | X1 | M4, avec le M1 + M0 de G3 réutilisé (R2) | 2 passes courtes | ≤ 25 k | M4 |
|
||
| « Quel Blueprint coûte au menu ? » | Q4 | E0 | X0 | M4 | 1 passe courte | ≤ 25 k | M4 |
|
||
|
||
Avec l'ancien score, G3 et G4 payaient M2 sans motif, G6 sortait à M1 + M2 sans plancher, et la dernière demande
|
||
tombait en M1, qui ne descend pas à la fonction.
|
||
|
||
## 8. Points à trancher par l'utilisateur
|
||
|
||
- **U1.** La grille question × enjeu remplace-t-elle le score additif ? (Recommandé.)
|
||
- **U2.** La build Development est-elle la seule build instrumentée ? Test n'est pas disponible avec le moteur du
|
||
lanceur (F2). (Recommandé.)
|
||
- **U3.** Ordre d'épreuve M1, M4, M2, M3 ? (Recommandé : M1 donne la base O0-5.8 dont G3, G4 et G6 ont besoin.)
|
||
- **U4.** Écrire un script enveloppe pour M1 et pour M4 (sortie R7) ? C'est la condition des budgets rodés.
|
||
- **U5.** X2 à 3 passes par côté, soit 6 parties jouées pour G3, à titre provisoire ? Ou X1 jusqu'à la mesure de la
|
||
dispersion ?
|
||
- **U6.** Une même passe sert-elle à M0 et à M1, avec les compteurs lus dans le journal et les à-coups lus dans le CSV,
|
||
sans `-LPHitchLog` ?
|
||
|
||
## 9. Limites
|
||
|
||
- Estimé :
|
||
- les budgets et N = 3 ;
|
||
- la présence des compteurs F5 et DESTROY dans le journal d'une passe Session C (DESTROY ne vient ni du C++ du jeu
|
||
ni de celui de l'addon, grep nul : il vient probablement des Blueprints) ;
|
||
- la tenue de l'export Insights en 5.8 ;
|
||
- l'effet de `-llm` et `-csvGpuStats` sur les valeurs absolues.
|
||
- Non vérifié : le refus d'UBT en configuration Test (F2) ; le motif écrit de « sans `-LPHitchLog` » pour la Session C
|
||
(seul le résultat est relevé : le journal d'à-coups éteint ne déplace pas la médiane, `18_Build_Debug.md:216-218`).
|