viernes, 5 de julio de 2013

Rule #27

The more I read, the more I acquire, the more certain I am that I know nothing.
Voltaire

jueves, 4 de julio de 2013

Comparativa de algoritmos de compresión II - Multicore

Siguiendo la línea de la comparativa de algoritmos de compresión que hice hace tiempo y viendo el avance que ha habido en procesadores con múltiples núcleos quería volver a repetir las pruebas usando aplicaciones que puedan aprovechar todos los núcleos para ver como mejoran los resultados.

Entorno de pruebas

  • Sistema operativo: Debian Wheezy 64 bits
  • Directorio database sin comprimir: 32G
  • CPUs: 2 x Intel Xeon E5-2690 @ 2.90GHz
  • Cores: 32
Todas las aplicaciones están en los repositorios oficiales, excepto pxz pero se puede instalar sin problema el paquete de sid.

Multi Core


Cada aplicación afronta el problema de una forma distinta y usa distintos algoritmos de compresión. Por lo general el fichero empaquetado y comprimido es compatible y se puede descomprimir usando la aplicación original, aunque para la descompresión apenas tiene efecto el multiproceso, en determinados casos puede suponer una mejora.

Hay que tener en cuenta que al usar todos los cores también aumenta considerablemente tanto la carga del servidor como el consumo de ram, aunque según el caso nos puede compensar ampliamente. Estos han sido los resultados de los tests:

pigz 2.2.4


Compresión: Tiempo: 1m48.863s Tamaño: 8,3G
time tar --use-compress-program=pigz -cf database.tar.gz database
Descompresión: Tiempo: 5m3.773s
time tar --use-compress-program=pigz -xf database.tar.gz

plzip 0.9


Compresión: Tiempo: 23m43.777s Tamaño: 4,4G
time tar --use-compress-program=plzip -cf database.tar.gz database
Descompresión: Tiempo: 2m36.047s
time tar --use-compress-program=plzip -xf database.tar.gz

lrzip 0.608


Compresión: Tiempo: 17m26.387s Tamaño: 4,1G
time tar --use-compress-program=lrzip -cf database.tar.lrz database
Descompresión: Tiempo: 5m27.053s
time tar --use-compress-program=lrzip -xf database.tar.lrz

pbzip2 1.1.8


Compresión: Tiempo: 3m46.977s Tamaño: 6,5G
time tar --use-compress-program=pbzip2 -cf database.tar.bz2 database
Descompresión: Tiempo: 2m33.358s
time tar --use-compress-program=pbzip2 -xf database.tar.bz2

pxz 4.999.9beta


Compresión: Tiempo: 16m14.513s Tamaño: 4,2G
time tar --use-compress-program=pxz -cf database.tar.xz database
Descompresión: Tiempo: 7m39.383s
time tar --use-compress-program=pxz -xf database.tar.xz

Conclusiones


Como era de esperar el uso de varios cores mejora considerablemente el rendimiento. Si buscamos velocidad el mejor resultado nos lo va a dar pigz, aunque el archivo final ocupa bastante comparado con el resto de aplicaciones el minuto y medio que tarda en comprimir 32G es impresionante. Por otro lado, si lo que buscamos es compresión lrzip o pxz son las mejores opciones. Y por último pbzip2 alcanza muy buenas medidas tanto en tiempo como en factor de compresión.