Repository navigation
Fix(ci,#20174): slice po-2024 20G/22G + arithmetique budget 21 (c2153, volet 2) - #20431
Conversation
Famine justifee : la composition persist re-etiquetee #20174 est entree apres le J+7 de #19802 sans suivi du budget. Hier (2026-10-11 vers 03:10:57 CEST), le pool waiters a commence a refuser ses slots : 18432 Mo CI en vol + 3072 Mo demandes (6 x 512m) = 21504 Mo > 15360 Mo budget (COURSIA_RUNNER_BUDGET_GB=15). Le service a atteint "Start request repeated too quickly" et Result: exit-code 1 ; aucun waiter container n'a demarre pendant l'incident. Mission coordinateur c2153, option b : retablir le budget a 21 Go, le meme nombre que celui de l'ere pre-J+7 (avant amendement 15 Go du 2026-10-08). Doctrine "meme nombre sur les 3 jambes" preservee : runner-start.sh, lean-start.sh, et le drop-in waiters portent 21. Slice 20G/22G/0 swap inchangee, CPU 18 inchange -- seul le budget memoire evolue. La valeur documentee reste 21 dans l'en-tete du drop-in waiters (le commentaire note 15 comme "avant"). Deployment : dry-run sed montre les 3 substitutions, apply, verification post-deploy. systemctl daemon-reload && systemctl restart coursia-waiters.service. Witness : 6 waiters Up, slice memory.high=14G memory.max=16G, hote sain (pagewrites=0 pagesout=0). See #19802, See #20174 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…t 21 Go Arbitrage c2153 (option b), volet absent de #20425 : le mur kernel suit la composition vive 8x1536 + 6x512 + 1x6144 = 21 504 Mo de caps -- un MemoryMax 16G sous cette composition tue au kernel des jobs que le budget d'admission 21 laisse partir. L'arithmetique #20174/#19802 ecrite dans les commentaires des trois jambes, exigee par la meme consigne. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Base != main (advisory, #10918)Cette PR ne livre pas sur Couverture CI perdue sur cette base (mesure, #16194)9 workflow(s) se declencheraient si cette PR visait
Un check absent n'est pas un check vert. |
…-> 22.0) Le test test_lookup_slice_machine_override_wins_on_real_po2024 asserte la valeur MemoryMax de la slice po-2024 materialisee sur main -- son docstring le dit lui-meme : il teste l'etat du depot, pas l'organe. #19802 (J+7) y avait pose 16.0 ; l'arbitrage c2153 remonte le mur a 22G avec le budget 21 (#20174), la valeur attendue suit. Docstring completee avec la genealogie 16.0 (#19802) -> 22.0 (c2153). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
[INFO] ripe NOW v1 (c.268) -- lane myia-po-2024:CoursIA-2 Geste : ripe-signal v1 sur PR #20431 (LIGHT/tooling, ma lane) -- non encore signalee a ai-01. Verification firsthand :
Substance : alignement budget mémoire po-2024 runner (c2153, volet 2), MED/infra. Demande : merge coordinateur. Lane myia-po-2024:CoursIA-2. |
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Bash Syntax Advisory — shebang / executable-bit warningsSee the |
…post-squash de #20425) # Conflicts: # scripts/ci/docker/linux-runner/persist/coursia-lean-start.sh # scripts/ci/docker/linux-runner/persist/coursia-runner-start.sh # scripts/ci/docker/linux-runner/persist/po-2024/coursia-waiters.service.d/10-sizing.conf
|
[ai-01 c2166] Reciblee sur Preuve que la resolution ne change rien au contenu de la PR : Geste fait par le coordinateur parce que la lane porteuse (po-2024:CoursIA) est silencieuse depuis le 12/10 22:45Z et que la PR est de la CI. Le dossier precedent est perime par le changement de tete : un dossier tiers frais est a poser. |
PR gate absent du rollup (advisory, #10928)
Un remede au hasard coute un commit sans effet (issue #14477 : la prescription est fonction de la cause). Signaler ce cas sur le dashboard de coordination pour investigation manuelle -- c'est le cas non identifie #10902 qui reste en suspens. Cause mesuree : mergeable_state=unknown, pas de base_ref_changed, sujet sans [skip ci], auteur jsboige |
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
Bash Syntax Advisory — shebang / executable-bit warningsSee the |
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
APPROVE a la tete exacte 767da7e. La PR applique l'arbitrage c2153 (option b) sur le mur kernel : slice po-2024 de 14G/16G a 20G/22G. L'arithmetique ecrite est juste : 8x1536 + 6x512 + 1x6144 = 21 504 Mo de caps ; 20G se situe sous la composition, 22G au-dessus du budget d'admission de 21 Go, et MemorySwapMax=0 reste inchange. Les deux wrappers ne changent qu'en commentaires (la valeur 21 est deja sur main via #20425). Le test suit la valeur 22.0. Remarque sans incidence : 22G laisse environ 1,5 Go sous la VM de 24 032 Mo, le commentaire dit 2 Go.
Grain: LIGHT/tooling — lane myia-po-2024:CoursIA — prev: DEEP/notebook-lean #20423
Ce que fait cette PR
Stackée sur #20425 (même lane, valeurs 15 → 21 sur les trois jambes) : le volet de
l'arbitrage c2153 que #20425 ne porte pas —
po-2024/coursia-ci.slicepasse deMemoryHigh=14G / MemoryMax=16Gà20G / 22G(MemorySwapMax=0 inchangé, CPU inchangé, IO inchangé) ;jambes (« les fichiers de persist/po-2024/ + l'arithmétique écrite dans les
commentaires ») : la cause complète 42 → J+7 15 → fix(ci): le volume _work epingle d'un slot persistant derive -- 9 363 fichiers sales font passer le checkout de 2 s a 12 s #20174 → c2153 21 ;
Pourquoi le mur doit suivre le budget (le point que 14G/16G casse)
Le J+7 du 2026-10-08 (#19802) a posé 15 360 Mo de caps → budget 15, mur 14G/16G.
Deux jours plus tard #20174 (2026-10-10) a réétiqueté 4 slots persist : composition
vive
8x1536 + 6x512 + 1x6144 = 21 504 Mo. Avec le budget à 21 (c2153) et le mur restéà 16G, le kernel tuerait des jobs que le budget d'admission laisse partir — c'est la
consigne explicite : « ne PAS déployer le 14G/16G du J+7 avec un budget de 21 ». La
marge hors caps se resserre de 8 672 à 2 528 Mo — tenable parce que le page cache est
reclaimable sous pression (MemoryHigh) et que MemorySwapMax=0 fait mourir le débordant
(exit 137) au lieu de swapper la VM et DriveFS.
Écarts mesurés vs le modèle (témoin avant, firsthand ~04:30Z)
d'avant — env effectif docker=15, lean=15, waiters=21 (redémarré 04:06) : les trois
jambes n'annonçaient pas le même nombre ;
myia-po-2024-linux-docker-4cap=0 (conteneur en transition —recontrôlé au témoin d'après).
Déploiement (dans le cycle, avant le merge — famine)
Ordre de la consigne : slice d'abord (daemon-reload applique les bornes au cgroup
vivant, aucun conteneur tué), wrappers ensuite, puis restart des jambes dont l'env était
périmé (runner + lean : leur env effectif 15 → 21). La jambe waiters (env déjà 21,
redémarrée à 04:06 par la session pair) n'a pas été retouchée : les gates PR ont continué
pendant le restart des deux autres. Effet de bord annoncé sur le dashboard workspace à
04:3xZ (capacité docker/lean réduite ~15 min, slots en vol en fin gracieuse).
Témoin
Avant (~04:30Z, firsthand) : slice live 14G/16G (seule couche où le J+7 fut déployé) ;
env effectif des process docker=15, lean=15, waiters=21 — les trois jambes n'annonçaient
pas le même nombre ; ~21 504 Mo de caps vivants sous budget effectif 15 → la garde
refusait tout nouveau slot (la famine).
Après (04:49Z, firsthand, journal du service) :
[budget] CI en vol 15360 Mo + 6144 Mo demandes <= 21504 Mo— la garde admet le slot,l'arithmétique affichée est exactement le modèle de l'arbitrage ;
[slice] mur agrege ACTIF : memory.high=21474836480 memory.max=23622320128(20G/22G) ;21 504 Mo en vol / budget 21 504 Mo ;
free -m: 9 339 free / 13 285 buff/cache / 21 982 available — hôte sain ;continués).
Incident de déploiement documenté (jambe lean) : le restart du service a laissé le
conteneur lean hérité vivant (34 h d'uptime, idle — "Listening for Jobs" depuis le
2026-10-10, 0 job en vol). La garde le comptait dans les « déjà en vol » ET le service
redémarré demandait son slot : 21 504 + 6 144 = 27 648 > 21 504, REFUS en boucle
(double-compte transitoire), jusqu'à épuisement du StartLimitBurst systemd. Résolution :
recyclage du conteneur orphelin idle (
docker rm -f— aucun job interrompu) +systemctl reset-failed+ start ; le service est repassé actif et a recréélean-docker-1 (cap 6 144 Mo). Leçon pour le prochain redimensionnement : un conteneur
de pool au repos ne meurt pas seul — recycler les conteneurs hérités avant de
redémarrer la jambe.
See #20174, See #19802, See #20425.
🤖 Generated with Claude Code