Correr mkinitfs manualmente con zstd sin -19 #3

Open
Nulo wants to merge 1 commit 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
Correr mkinitfs manualmente con zstd sin -19
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
cd14e88b19
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.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin manual-mkinitfs-zstd:manual-mkinitfs-zstd
git checkout manual-mkinitfs-zstd

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git checkout dev
git merge --no-ff manual-mkinitfs-zstd
git checkout manual-mkinitfs-zstd
git rebase dev
git checkout dev
git merge --ff-only manual-mkinitfs-zstd
git checkout manual-mkinitfs-zstd
git rebase dev
git checkout dev
git merge --no-ff manual-mkinitfs-zstd
git checkout dev
git merge --squash manual-mkinitfs-zstd
git checkout dev
git merge --ff-only manual-mkinitfs-zstd
git checkout dev
git merge manual-mkinitfs-zstd
git push origin dev
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
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.