Slow endpoints: where the time goes
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
Línea de trabajo
This is a survey of slow endpoints, not one scoped change. Start with the get_hardware_details_data call that hardwareDetailsBuilds depends on, and the checkouts__timestamp lookup in the treeDetailsBuildsDirectView case. Pick one endpoint and its EXPLAIN (ANALYZE, BUFFERS) output, then show a before/after timing for that one endpoint. Done means a measured reduction for that endpoint, not a list of suggestions.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Uncached calls on 2026-10-15 against the tunneled database. Each row is a more expensive case of that endpoint, so the time can sit well above a typical call. The list is here so those worst cases get optimized too. Execute is cursor.execute, Fetch is fetchall, Processing is the rest of the request. The plan is EXPLAIN (ANALYZE, BUFFERS) on the heaviest query. The suggestion is an LLM reading of that profile, not a measured fix.
| Endpoint | Case | Execute | Fetch | Processing | Plan | LLM suggestion |
|---|---|---|---|---|---|---|
labs |
7 days, maestro | 71 s | 0 | 0 | 66 s server. Parallel append, 35 rows. 639,354 pages read, 121,865 hit | Group by lab_id. The misc->>'lab' / misc->>'runtime' fallback reads every build and test in the window. |
labOriginsView |
30 days | 83 s | 0 | 0 | Same query, warm on 7 days: bitmap heap scan, 1.3M test rows, 307,977 hit, 237 read, server 1.5 s | Partial index on (start_time, origin) WHERE lab_id IS NOT NULL. |
treeReportView |
mainline, 720 h | 39 s | 0.3 s | 0 | Checkout summary on the 24 h call: nested loop, 6,644 rows, 46,790 hit, server 1.4 s. That is not this 39 s | The history query reads every test on the branch for max_age_in_hours, then keeps group_size per group. Both windows returned 16,013 rows. Bound that scan. |
treeCommits |
next 4eb2586, 260k rows |
68 s | 8.3 s | 1.1 s | Nested loop, server 2.3 s, estimate 32k, actual 260k. 1,617,452 hit | Aggregate in SQL. |
treeDetailsView |
same commit, 55k rows | 33 s | 3.2 s | 1.3 s | Same shape as the tests listing: server ~0.4 s, sort spill ~9k temp pages | Select the columns the page renders. |
treeDetailsTestsView |
same commit | 27 s | 3.0 s | 1.2 s | Nested loop, 54,720 rows, server 0.39 s, 179,976 hit, temp read/write 8,939 / 8,940 | Same. The external merge is about 0.1 s. |
treeDetailsTestsDirectView |
same commit | 26 s | 2.8 s | 1.2 s | Same plan | Same. |
hardwareDetailsBuilds |
kubernetes, 5 days |
277 s | 17 s | 6 s | Same SQL as hardware details. qemu-arm64, 1 day: gather merge, 157 rows, server 0.23 s, 11,603 hit |
Query builds. This view calls get_hardware_details_data and then keeps the builds (304,141 test rows). |
hardwareDetails |
kubernetes, 5 days |
105 s | 16 s | 13 s | Same gather | Drop tests.misc, builds.misc, comment, and log_url from the listing select. stm32 (56k rows) was 39 s of execute. |
treeDetailsBuildsDirectView |
mainline 1229e2e57a5c, 67 builds |
11 s | 0 | 0 | A 78-build next checkout: nested loop, server 2 ms, 574 hit. On this commit the checkout lookup was an index scan backward on checkouts__timestamp, 501,254 hit, 364 ms once warm |
Look the checkout up by hash. The 128-build checkout took 0.37 s. |
treeDetailsTestsCompareView |
two mainline commits | 5.7 s | 0.5 s | 0.2 s | Incremental sort, 82,089 rows, server 1.1 s. Sort node 290–626 ms. 25,748 hit | The diff sort is the server cost, and 59k rows still cross the tunnel. |
issue |
30 days, 1,011 rows | 3.9 s | 0 | 0.1 s | Heaviest of 5 queries, 7-day call: nested loop costed around 12M, 17 rows in 286 ms, 312,499 hit | That join. 7 days was 3.7 s. |
treeCompare |
those two commits | 3.0 s | 0 | 0 | Nested loop, 391 rows, server 42 ms, 25,748 hit | Five small queries. |
issueDetails |
one issue, version 1 | 2.7 s | 0 | 0 | Anti-join, 46 rows × 4 loops, server 94 ms, 20,812 hit. Eight queries | Little in the explained query. |
hardwareDetailsSummary |
kubernetes, 5 days |
34 s | 0.3 s | 0.1 s | qemu-arm64, 1 day: append, 116 rows, server 0.21 s, 15,099 hit. The summary reads tests.misc |
Read hardware_status counters. This call returned 2,919 rows. |
testStatusHistory |
one ltp path, no match |
0.2 s | 0 | 2.2 s | LIMIT, server 1.6 s, 0 rows. 7,852 pages read, 6,137 hit |
Index path, config, branch, and start_time, so the limit can stop. |
treeCommitsHistory |
one mainline hash, 212 rows | 1.3 s | 0 | 0 | Append, server 0.79 s, 185,921 hit | The append reads a lot of pages per returned row. |
hardwareSelectors |
maestro | 1.0 s | 0 | 0 | Nested loop, 18,416 rows × 2, server 0.34 s, 164,812 hit | Already about 1 s. |
treeDetailsBootsDirectView |
530 boots | 0.9 s | 0.1 s | 0 | 250-boot next commit: nested loop, server 26 ms, 16,772 hit |
The longer list stayed at 1 s. |
treeDetailsBootsCompareView |
those two commits, 137 rows | 0.5 s | 0 | 0 | Nested loop, 391 rows, server 42 ms, 25,748 hit | Nothing to change. |
Requests, so the runs can be repeated. Hardware and issue windows end at 2026-10-15 17:20 UTC.
| Endpoint | Method | Path | Parameters |
|---|---|---|---|
labs |
GET | /api/labs/ |
origin=maestro, interval_in_days=7 |
labOriginsView |
GET | /api/labs/origins/ |
interval_in_days=30 |
treeReportView |
GET | /api/tree-report/ |
origin=maestro, git_branch=master, tree_name=mainline, git_url=https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git, max_age_in_hours=720. Defaults: path=%, group_size=3, min_age_in_hours=0 |
treeCommits |
GET | /api/tree/4eb2586bd40db27d77cc5b724ca9386ed0c71d53/commits |
origin=maestro, git_branch=master, git_url=https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git |
treeDetailsView |
GET | /api/tree/4eb2586bd40db27d77cc5b724ca9386ed0c71d53/full |
same origin, git_branch, git_url |
treeDetailsTestsView |
GET | /api/tree/4eb2586bd40db27d77cc5b724ca9386ed0c71d53/tests |
same |
treeDetailsTestsDirectView |
GET | /api/tree/next/master/4eb2586bd40db27d77cc5b724ca9386ed0c71d53/tests |
origin=maestro |
hardwareDetailsBuilds |
POST | /api/hardware/kubernetes/builds |
origin=maestro, selectedCommits={}, 5-day window |
hardwareDetails |
POST | /api/hardware/kubernetes |
same body |
treeDetailsBuildsDirectView |
GET | /api/tree/mainline/master/1229e2e57a5c2980ccd457b9b53ea0eed5a22ab3/builds |
origin=maestro |
treeDetailsTestsCompareView |
GET | /api/tree/mainline/master/compare/tests |
origin=maestro, hash_a=1229e2e57a5c2980ccd457b9b53ea0eed5a22ab3, hash_b=ca3e345926b00bd59106c1bf2022b1daf4164a67 |
issue |
GET | /api/issue/ |
30-day startTimestampInSeconds / endTimestampInSeconds |
treeCompare |
GET | /api/tree/mainline/master/compare |
origin=maestro, same hashes |
issueDetails |
GET | /api/issue/maestro:b5ed9b51212f5174ccbd9d812fc43e26fcc5361e |
version=1 |
hardwareDetailsSummary |
POST | /api/hardware/kubernetes/summary |
same 5-day body |
testStatusHistory |
GET | /api/test/status-history |
path=ltp.float_power, origin=maestro, git_repository_url=https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git, git_repository_branch=master, config_name=olddefconfig, group_size=10, current_test_start_time=2026-10-12T23:58:10.910439Z |
treeCommitsHistory |
GET | /api/tree/commits-history |
origin=maestro, tree_name=mainline, git_branch=master, git_url=https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git, commit_hashes=1229e2e57a5c2980ccd457b9b53ea0eed5a22ab3 |
hardwareSelectors |
GET | /api/hardware/selectors/ |
origin=maestro |
treeDetailsBootsDirectView |
GET | /api/tree/media-committers/next/274af88c8acaa4bb538791047bd17fa5136ba78f/boots |
origin=maestro |
treeDetailsBootsCompareView |
GET | /api/tree/mainline/master/compare/boots |
origin=maestro, same hashes |
- Lenguaje dominante
- Python
- Estrellas
- 10
- Forks
- 32
- Merge medio
- 3 d 2 h
- PR fusionados (30 d)
- 23
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de kernelci/dashboard
-
notifications
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 2 días
-
Show how to add a board missing from the hardware registryPosiblemente ocupada @alanpeixinho la tomó hace 2 días. AbiertoFrontend q4-plan
Dificultad 2/5 Medio día Aptitud para principiantes 65/100
kernelci/dashboard#2167 · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Los mantenedores suelen responder en 2 días
-
Show the last hardware registry syncPosiblemente ocupada @alanpeixinho la tomó hace 7 días. AbiertoBackend Frontend q4-plan
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
kernelci/dashboard#2170 · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
[Labs] Add a lab details API and lab filters on existing read endpointsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. AbiertoBackend q4-plan
Dificultad 4/5 3-5 días Aptitud para principiantes 24/100
kernelci/dashboard#2169 · 1 comentario ·
Los mantenedores suelen responder en 2 días
Todos los issues de kernelci/dashboard
Issues similares
-
[oblt-aw][autodoc] Update workflow docs for gh-aw v0.92.5 and detector permission scopePosiblemente ocupada @github-actions la tomó hoy. Abierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
feat(ide): VS Code access through the shipped MCP server (config doc and tool-list smoke test)Abiertoroadmap-100
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
comp/tools P2 tool/browser tool/file type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
NousResearch/hermes-agent#143418 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
python-hyper/uritemplate#164 ·