kbuild: skip building kselftest when not required by jobfilter (speed up bisection)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 50/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- build-system, ci-cd
Direzione di ricerca
Inizia da get_jobfilter() in src/lava_callback.py, quindi esamina config/jobs.yaml e config/scheduler.yaml per tracciare i test kselftest attraverso i collegamenti agli eventi fino ai relativi job di build. Confronta questo comportamento con la logica di filtraggio attuale in kernelci/kbuild.py. Il lavoro è completato quando i job kselftest richiesti mantengono gli artefatti necessari, mentre le build di bisezione non correlate saltano kselftest.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Goal
To speed up bisection, do not build kselftest when it isn't needed by the requested jobs (kselftest builds are expensive and dominate bisection turnaround).
This was originally attempted in #2729, but that approach needs more design work before it can land — see below. Converting to an issue to track the proper solution.
Current attempt (#2729)
In kernelci/kbuild.py, when a jobfilter is present, kselftest is disabled unless <build-name>-kselftest literally appears in the filter:
if node['jobfilter'] and self._kfselftest is True:
kselftest_name = node['name'] + "-kselftest"
if kselftest_name not in node['jobfilter']:
self._kfselftest = False
Why this isn't enough
-
Downstream tests are invisible to the build.
kbuild.pyruns in the build container and only receivesnode+params+ a flatjobfilterlist of strings. It has no knowledge of which tests consume kselftest artifacts. So a jobfilter containing a kselftest test (but not the kselftest build name) would silently produce a build without kselftest, and the test would fail mysteriously. The dependency knowledge lives in kernelci-pipeline:- test → needs-kselftest is identifiable from
config/jobs.yaml(test_method: kselftest,kcidb_test_suite: kselftest.*) - build → test link is the
eventfield inconfig/scheduler.yaml
- test → needs-kselftest is identifiable from
-
Possible naming bug. Dedicated kselftest build variants are already named
kbuild-...-kselftest(e.g.config/jobs.yaml,scheduler.yaml). For such a node,node['name'] + "-kselftest"becomeskbuild-...-kselftest-kselftest, which never matches the filter — so kselftest would be disabled on the very build meant to produce it (this is exactly the bisection-of-a-kselftest-test path). Needs verification against realnode['name']values.
Proposed direction
Move the decision to kernelci-pipeline, which already has self._configs loaded and builds the jobfilter in get_jobfilter() (src/lava_callback.py):
- When any requested job in the jobfilter resolves to a kselftest test (
test_method == 'kselftest'), auto-enable kselftest on the corresponding build (e.g. set akselftest: enableparam on the build node, or ensure the kselftest-enabled build name is in the filter). - Otherwise, leave kselftest off so bisection builds stay fast.
The one non-trivial piece is reverse-resolving the scheduler graph (test → triggering build-node event → build job), since the build job doesn't inherently know its downstream tests. This is an in-memory config walk, not new infrastructure.
Closes #2729 (superseded by this issue).
- Lingua principale
- Python
- Stelle
- 120
- Fork
- 108
- Merge medio
- 1g 12h
- PR unite (30g)
- 21
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di kernelci/kernelci-core
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
kernelci/kernelci-core#2591 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 25/100
kernelci/kernelci-core#3234 ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue techdebt
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
kernelci/kernelci-core#3197 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
chromeos techdebt
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
kernelci/kernelci-core#3196 ·
I maintainer di solito rispondono entro 1 giorno
-
kubernetes runners missing logs and test naming wrongForse di nuovo libera @nuclearcat l’ha presa 69 giorni fa e non c’è nessuna pull request aperta. Aperta
kernelci/kernelci-core#3170 · 2 commenti · 1 reazione · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di kernelci/kernelci-core
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
-
Harmony OPeNDAP SubSetter (HOSS) Geographic LARC_CLOUD PREFIRE_SAT2_AUX-SAT R01 production
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
nasa/harmony-autotester#245 ·
-
[FEATURE] - Add UTVD supportApertaenhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Deltares/imod-python#1928 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100