Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Acelera las ejecuciones en CI#2702

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
cmaureir merged 10 commits into3.12fromfaster-ci
Nov 6, 2023
Merged

Acelera las ejecuciones en CI#2702

cmaureir merged 10 commits into3.12fromfaster-ci
Nov 6, 2023

Conversation

rtobar
Copy link
Collaborator

@rtobarrtobar commentedOct 20, 2023
edited
Loading

Este PR modifica el jobTest del workflowTest (i.e., el pipeline que se corre en cada PR y push a 3.12) con los siguientes cambios:

  • Checkout del submodule cpython se hace como parte deactions/checkout (no hay beneficio en hacerlo por cuentra propia)
  • Re-agrupa y comenta los distintos pasos del workflow
  • Configure apt and dpkg para correr de manera más eficiente, evitando la ejecución de algunos triggers que son innecesarios y que consumen CPU.
  • Instalalocales-all para evitar la generación de los locales en español, ya que esta generación consume un largo tiempo de CPU, mientras que bajar el paquete es mucho más rápido. También se evita correrapt update.
  • Por último, y lo más complejo: cuando el workflow corre como parte de un PR, se calculan los archivos .po que han cambiado dentro del PR, y se corren los chequeos (sphinx-lint, powrap, pospell) sólo sobre estos archivos. Si el workflow corre como parte de un push a 3.12 todos los archivos se chequean.

@cmaureir
Copy link
Collaborator

Ah, entonces instalamos las cosas a nivel de configuración de la máquina, pero no cuando la comenzamos ¿verdad?

@rtobar
Copy link
CollaboratorAuthor

Ah, entonces instalamos las cosas a nivel de configuración de la máquina, pero no cuando la comenzamos ¿verdad?

Eso pensaba hacer, pero la verdad es que no es tan simple. La único opción de tener un sistema pre-configurado es usar imágenes Docker y correr todo dentro de un container en vez de directo en "ubuntu-22.04" (aunque probablemente ese ya sea un container...), y aún no he explorado esa opción. Lo que si probé acá, y que parece dsr algo de mejoría, es configurar apt y dpkg para saltarse algunos pasos (e.g., no generar páginas de.manual, no usar fsync, etc). Pero lejos el paso de setup que de demora más es la generación de los locales en español. Me gustaría explorar el tratar de cachear eso de alguna forma, actualmente ese paso demora cerca de un minuto.

@rtobarrtobar closed thisOct 23, 2023
@rtobarrtobar reopened thisOct 23, 2023
@rtobar
Copy link
CollaboratorAuthor

Ooops, botón equivocado...

La verdad es que tampoco he tenido mucho tiempo de hacer nada muy serio que requiera sentarse en un computador (he estado desde el celular todos estos días), pero cuando encuentre un tiempito me gustaría dedicarle una horita a seguir explorando estás posibilidades

cacrespo and cmaureir reacted with rocket emoji

@rtobarrtobarforce-pushed thefaster-ci branch 6 times, most recently from6db80ea toea578deCompareNovember 1, 2023 02:38
rtobarand others added2 commitsNovember 1, 2023 10:41
Hacerlo por nuestra cuenta no trae ningún beneficio, ya queactions/checkout ya usa --depth=1 (además de otras opciones).
Esto nos permitirá ver mejor en qué pasó en particular nos estamosdemorando más.
@rtobarrtobarforce-pushed thefaster-ci branch 5 times, most recently from38985b3 tob2f46b8CompareNovember 1, 2023 03:44
rtobarand others added6 commitsNovember 1, 2023 15:34
Todos los pasos estaban antes aglomerados. Ya que queremos agregar máspasos, es beneficioso agrupar los pasos existentes para clarificar quélógica se está llevando a cabo.Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Esto se logra deshabilitando algunos triggers (nostros nos encargamos depostgresql-common) y corriendo con ciertas opciones, como deshabilitandofsyncs
Para los paquetes que usamos no es necesario realizar esta operación,con lo cual nos ahorramos un poco de tiempo.
Al instalar locales-all se evita la generación de los locales en españolal momento de instalar language-pack-es. Esta generación de locales tomaun tiempo considerable de CPU, por lo que instalar locales-all esfinalmente menos costoso.
El job Test del workflow Test corre durante pull requests y durantepushes al branch principal del repositorio. En el primer caso, los PRscontienen normalmente un solo archivo .po que ha cambido, pero aún asílos chequeos que se corren en CI se hacen contra todos los archivos .po,lo cual es ineficiente. En particular, pospell toma alrededor de unminuto y medio en correr, cuando tomaría alrededor de un segundo encorrer sobre un solo archivo.Este commit introduce una serie de pasos en el job Test que calcula lalista de archivos .po sobre los cuales se correrán el resto de loschequeos. Cuando el trabajo corre como parte de un PR, sólo los archivos.po que han cambiado en el PR (si es que los hay) son incluidos. Cuandoel trabajo corre como parte de un push a la rama principal delrepositorio, todos los archivos son incluidos.Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
Mírese el commit anterior para más detalles.Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
@rtobarrtobar marked this pull request as ready for reviewNovember 1, 2023 08:13
@rtobarrtobar changed the titleExplorando speedups en CIAcelera las corridas en CINov 1, 2023
@rtobarrtobar requested a review fromcmaureirNovember 1, 2023 08:19
@mmmarcos
Copy link
Collaborator

No conocía esos actions para optimizar el uso deubuntu-latest, me parece muy bien 🔥

Lo único que no estoy seguro es la parte de détección de archivos po modificados. Me parece que eso es algo que puede ser útil tener localmente y sería mejor integrarlo en los scripts. Por ejemplo,powrap ya tiene una opción--modified para correr sólo sobre los arcihvos modificados. De la misma forma podríamos tener algo así en elcheck_spell.py.
De hecho creo que esto es exactamente lo que hacepre-commit: corre localmente y ejecuta los checks sólo sobre los archivos modificados.

@rtobar
Copy link
CollaboratorAuthor

@mmmarcos gracias por los comentarios!

Respecto a tener una lógica común que se puede reusar en todos los scripts: ésto no es tan fácil, porque lo que se busca tener es una lista de los archivos que han sido modificados en el PR con respecto a la rama base. Esa información es posbile obtenerla sólo si estás al tanto de la existencia del PR en primer lugar, por lo que no sería algo que se podría hacer de manera local (de forma fácil... con suficiente complejidad sí se puede armar algo así teoréticamente).

Por ejemplo,powrap ya tiene una opción--modified para correr sólo sobre los arcihvos modificados

Efectivamente, pero esa opción corre sólo sobre los archivos modificados localmente:https://github.com/AFPy/powrap/blob/03a472d4823a9d68af68c4575a93c572c4152165/powrap/powrap.py#L159. Esto es diferente a lo que se necesita para evaluar PRs, donde queremos la lista de archivos que se ha modificado en el PR respecto a la rama base.

[...] De hecho creo que esto es exactamente lo que hacepre-commit: corre localmente y ejecuta los checks sólo sobre los archivos modificados.

Si mal no entiendo, pre-commit por defecto detecta los archivos que están incluidos en el commit que se está creando en ese momento, y todos los hooks se corren sobre ellos, si corresponde. Así que, de nuevo, es una semántica diferente a la que se necesita para los PRs.

@mmmarcos
Copy link
Collaborator

Gracias por la explicación@rtobar ahora veo mejor la diferencia :)

Tenés una idea de cuanto tiempo se puede ganar? O hay que mergear la PR primero para ver?
Igual, me parece bien de mergear 👍

@cmaureircmaureir changed the titleAcelera las corridas en CIAcelera las ejecuciones en CINov 1, 2023
@rtobar
Copy link
CollaboratorAuthor

Tenés una idea de cuanto tiempo se puede ganar?

Con estos cambios estamos cortando al menos unos dos minutos de ejecución, que de dividen más o menos en 1.5 minutos de pospell que ahora son alrededor de un segundo más/menos, y otro minuto en tiempo de instalación de paquetes de sistema.

Co-authored-by: Cristián Maureira-Fredes <cmaureir@users.noreply.github.com>
@rtobar
Copy link
CollaboratorAuthor

@cmaureir si estás feliz con los cambios podrías aprobar y mergear? Gracias! Serio bueno empezar a ver estos cambios andando en el resto de los PRs.

Copy link
Collaborator

@cmaureircmaureir left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Muchas gracias por la investigación y trabajo

@cmaureircmaureir merged commit811360b into3.12Nov 6, 2023
@rtobarrtobar deleted the faster-ci branchNovember 3, 2024 12:33
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@cmaureircmaureircmaureir approved these changes

@mmmarcosmmmarcosmmmarcos approved these changes

Assignees
No one assigned
Labels
None yet
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

3 participants
@rtobar@cmaureir@mmmarcos

[8]ページ先頭

©2009-2025 Movatter.jp