Upx
Ultimate Packer for eXecutables (UPX) es una herramienta de compresión que reduce el tamaño de los ejecutables. Quarkus puede comprimir el ejecutable nativo producido para reducir su tamaño. Esta compresión es interesante cuando:
-
construir herramientas CLI, y quiere reducir la huella del disco,
-
construir imágenes de contenedores pequeños.
Tenga en cuenta que la compresión UPX:
-
aumenta el tiempo de construcción, sobre todo si se utilizan niveles de compresión elevados
-
aumenta el uso de RSS de inicio de la aplicación
Sistema vs. Contenedor
La compresión UPX requiere:
-
el comando
upx
para que esté disponible en el sistemaPATH
; -
o haber construido el ejecutable nativo utilizando una construcción en el contenedor.
Si tiene el comando upx
disponible en su ruta, Quarkus lo utiliza. De lo contrario, si construyó la imagen nativa usando una construcción dentro del contenedor (usando quarkus.native.container-build=true
) y si la imagen del constructor proporciona el comando upx
, Quarkus comprime el ejecutable desde dentro del contenedor.
Si no está en uno de estos casos, la compresión falla.
upx es multiplataforma.
|
Configuración de la compresión UPX
A continuación, en la configuración de su aplicación, active la compresión configurando el nivel de compresión que desee:
quarkus.native.compression.level=5
Si el nivel de compresión no se establece, la compresión se desactiva. La compresión se producirá una vez que se construya el ejecutable nativo y sustituirá al ejecutable.
Nivel de compresión
El nivel de compresión va de 1 a 10:
-
1
: compresión más rápida -
9
: mejor compresión -
`10`Mejor compresión (puede ser lenta para archivos grandes)
Parámetros adicionales
Puede pasar un parámetro extra a upx, como --brute
o --ultra-brute
utilizando el parámetro quarkus.native.compression.additional-args
. El valor es una lista de argumentos separada por comas:
quarkus.native.compression.level=3
quarkus.native.compression.additional-args=--ultra-brute,-v
La lista completa de parámetros se encuentra en la documentación de UPX.