Correr mkinitfs manualmente con zstd sin -19 #3

Open
Nulo wants to merge 1 commits from manual-mkinitfs-zstd into dev
Owner

mkinitfs corre un trigger de APK para generar el initramfs, sin embargo, corriendolo directamente podemos especificar usar zstd (que es un algoritmo de compresión rápido y eficiente) en vez de gzip con -C zstd. Para esto, tenemos que desactivar el trigger con disable_trigger=yes en /etc/mkinitfs/mkinitfs.conf.

Esto es una buena idea porque actualmente mkinitfs toma ~2seg de ~3,6seg de una compilación cacheada, entonces usando zstd podemos hacerlo más rápido manteniendo mkinitfs chico. Sin embargo, con -C zstd mkinitfs lo llama con la bandera -19 que especifica usar el nivel de compresión más alto. Esto consigue tamaños aún más chicos pero al costo de que tarde mucho más.

Por eso, tenemos que parchear mkinitfs para correr zstd crudo.

Números

x69 (mi laptop)

Compresión Tiempo Tamaño (medido con du -b)
gzip -9 (por defecto) 3.58s 6956390
zstd -19 (-C zstd) 5.59s 6478800
zstd (parcheado) 2.17s 7166426

CI

Vale la pena mencionar que hay mucha variación en la CI.

Compresión Tiempo Tamaño (medido con du -b)
gzip -9 (por defecto) 12.74s 6.6M
zstd (parcheado) 8.42s 6.8M

Esto probablemente nunca lo mergee excepto que Alpine provea una forma razonable de hacer esto (sin correr mkinitfs manualmente y especialmente sin parchear) pero es interesante saber que es posible.

mkinitfs corre un trigger de APK para generar el initramfs, sin embargo, corriendolo directamente podemos especificar usar `zstd` (que es un algoritmo de compresión rápido y eficiente) en vez de gzip con `-C zstd`. Para esto, tenemos que desactivar el trigger con `disable_trigger=yes` en `/etc/mkinitfs/mkinitfs.conf`. Esto es una buena idea porque actualmente mkinitfs toma ~2seg de ~3,6seg de una compilación cacheada, entonces usando zstd podemos hacerlo más rápido manteniendo mkinitfs chico. Sin embargo, con `-C zstd` mkinitfs lo llama con la bandera `-19` que especifica usar el nivel de compresión más alto. Esto consigue tamaños aún más chicos pero al costo de que tarde mucho más. Por eso, tenemos que parchear mkinitfs para correr `zstd` crudo. ## Números ### x69 (mi laptop) | Compresión | Tiempo | Tamaño (medido con `du -b`) | | ---------- | ------ | ------ | | gzip -9 (por defecto) | 3.58s | 6956390 | | zstd -19 (`-C zstd`) | 5.59s | 6478800 | | zstd (parcheado) | 2.17s | 7166426 | ### CI Vale la pena mencionar que hay mucha variación en la CI. | Compresión | Tiempo | Tamaño (medido con `du -b`) | | ---------- | ------ | ------ | | gzip -9 (por defecto) | 12.74s | 6.6M | | zstd (parcheado) | 8.42s | 6.8M | Esto probablemente nunca lo mergee excepto que Alpine provea una forma razonable de hacer esto (sin correr mkinitfs manualmente y especialmente sin parchear) pero es interesante saber que es posible.
Nulo added 1 commit 2022-07-02 18:42:48 +00:00
ci/woodpecker/push/woodpecker Pipeline was successful Details
ci/woodpecker/pr/woodpecker Pipeline was successful Details
cd14e88b19
Correr mkinitfs manualmente con zstd sin -19
Author
Owner

Por alguna razón parece estar haciendo el mkinitfs normal en la CI...

No, es solo que Woodpecker captura stdout/err muy mal

~~Por alguna razón parece estar haciendo el mkinitfs normal en la CI...~~ No, es solo que Woodpecker captura stdout/err muy mal
Nulo force-pushed manual-mkinitfs-zstd from cd14e88b19 to 296213448d 2022-07-02 19:02:17 +00:00 Compare
Author
Owner

Posibles problemas: el trigger de mkinitfs hace unos trucos para que syslinux funcione bien, quizás se rompe si no los hacemos.

Posibles problemas: el trigger de mkinitfs hace unos trucos para que syslinux funcione bien, quizás se rompe si no los hacemos.
Author
Owner

FYI: reimplementado en the-sequel en 2e9045f4c3

FYI: reimplementado en the-sequel en https://gitea.nulo.in/Nulo/define-alpine-the-sequel/commit/2e9045f4c3e089807f8597db78e88a8fe44c24ba
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
You can also view command line instructions.

Step 1:

From your project repository, check out a new branch and test the changes.
git checkout -b manual-mkinitfs-zstd dev
git pull origin manual-mkinitfs-zstd

Step 2:

Merge the changes and update on Forgejo.
git checkout dev
git merge --no-ff manual-mkinitfs-zstd
git push origin dev
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Nulo/define-alpine#3
No description provided.