Cómo comprimir archivos usando todos los núcleos de CPU con Tar

Si alguna vez ha tenido que comprimir grandes volúmenes con tar, sabrás lo doloroso que puede ser. A menudo va muy lento y te encuentras golpeando Ctrl + C para terminar la tarea y simplemente olvidarse de ella. Sin embargo, existen algunas otras herramientas que puede usar tar, y son una excelente manera de hacer uso de las CPU de hoy en día con muchos subprocesos múltiples y acelerar su archivo de tar. Este artículo le muestra cómo hacer que tar use todos los núcleos al comprimir archivos en Linux.

Comprensión e instalación de las herramientas

Las tres herramientas principales en cuestión aquí son pigz, pbzip2 y pxz. Existen algunas diferencias sutiles entre las herramientas, pero las diferencias se encuentran entre gzip, bzip2 y xz. En ese orden respectivo, los niveles de compresión aumentan, lo que significa que un archivo comprimido con gzip será más grande que uno comprimido con xz, pero gzip naturalmente tomará menos tiempo que xz. bzip2 está en algún lugar en el medio.

La «p» que comienza con los nombres de cada una de las herramientas significa «paralelo». La paralelización es algo que se ha vuelto cada vez más relevante a lo largo de los años: qué tan bien algo abarca todos los núcleos de CPU. Con CPU como las líneas Epyc y Threadripper de AMD que pueden alcanzar 64 núcleos y 128 subprocesos, es importante comprender qué aplicaciones pueden hacer uso de eso. Estas funciones de compresión son las principales candidatas.

Para instalar las herramientas, puede recurrir a sus repositorios.

Instalación de Tar All Cores Dnf

Este artículo se centra en pxz en aras de la coherencia. Puedes consultar este tutorial para pigz.

Comprimir archivos con alquitrán

La sintaxis de tar es bastante simple. Para simplemente comprimir un directorio, puede usar un comando como este:

El primero usará gzip, el segundo usará bzip2 y el tercero usará xz. El nombre del archivo y el directorio variarán dependiendo de lo que esté haciendo, pero saqué el kernel de Linux de GitHub a mi directorio «/ home» y lo usaré. Entonces, seguiré adelante y comenzaré ese comando con el time comando en la parte delantera para ver cuánto tarda. También puede ver que xz figura como el porcentaje más alto de mi CPU en este sistema, pero solo fija un núcleo al 100 por ciento.

Tar All Cores Tar Xz
Alquitrán todos los núcleos Htop 1

Y, como puede ver, mis viejos i7-2600 tardaron mucho tiempo en comprimir Linux 5.10-rc3 (alrededor de 28 minutos).

Tar All Cores Xz Time

Aquí es donde estas herramientas de compresión paralela son útiles. Si está comprimiendo un archivo grande y busca hacerlo más rápido, no puedo recomendar estas herramientas lo suficiente.

Uso de herramientas de compresión paralela con Tar

Puede decirle a tar que use un programa de compresión con el --use-compression-program opción, o puede usar un indicador de comando un poco más simple de -I. Un ejemplo de la sintaxis de cualquiera de estas herramientas sería el siguiente:

Probémoslo y veamos cuánto tiempo le toma a mi sistema comprimir el Kernel de Linux con acceso a los ocho subprocesos de mi CPU. Tú puedes ver mi htop lectura que muestra todos los hilos fijados al 100 por ciento de uso debido a pxz.

Tar All Cores Tar Pxz
Alquitrán todos los núcleos Htop 2

Puede ver que tomó mucho menos tiempo comprimir ese archivo (¡aproximadamente siete minutos!), Y eso fue con la multitarea. Tengo una máquina virtual ejecutándose en segundo plano y estoy navegando por la web en este momento. El programador de hardware del kernel de Linux le dará lo que necesita para sus cosas personales, así que si dejó su pxz para ejecutar sin que se ejecuten otras cosas en su sistema, es posible que pueda hacerlo más rápido.

Tar All Cores Pxz Tiempo

Ajustar los niveles de compresión con pigz, pbzip2 y pxz

También puede pasar los niveles de compresión a pxz para hacer que el archivo sea aún más pequeño. Esto requerirá más RAM, CPU y tiempo, pero vale la pena si realmente necesita obtener un archivo pequeño. Aquí hay una comparación de los dos comandos y sus resultados uno al lado del otro.

Tar All Cores Tar Pxz 9
Tar All Cores Pxz 9 Tiempo
Comparación de compresión de todos los núcleos de alquitrán

La compresión no es mucho mayor y el tiempo no necesariamente vale la pena, pero si cada megabyte cuenta, sigue siendo una gran opción.

Espero que haya disfrutado de esta guía sobre el uso de todos los núcleos para comprimir archivos mediante tar. Asegúrese de revisar algunos de nuestros otros contenidos de Linux, como cómo construir una nueva PC para Linux, dominar Apt y convertirse en un gurú de Apt, y cómo instalar Arch Linux en una Raspberry Pi.

Artículos Recomendados


Categorías PC

Deja un comentario