Ya todos conocemos “bzip2“, un algoritmo de compresión sin perdida, pero no todos conocen la existencia del proyecto “pbzip2“, una implementación “paralela” del anterior; un algoritmo de compresión, basado en bzip2, que aprovecha los recursos de una máquina con SMP (Symmetric Multi-Processing).

PBZIP2 is a parallel implementation of the bzip2 block-sorting file compressor that uses pthreads and achieves near-linear speedup on SMP machines. The output of this version is fully compatible with bzip2 v1.0.2 or newer

(Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz)

En la imagen pueden ver los 3 procesos de pbzip2 consumiendo los 2 CPUs al 100%, de esta forma el tiempo de compresión es practicamente la mitad.
A simple vista, si bzip2 se demora 30 segundos, pbzip2 demora 15. Por ejemplo, con un archivo de texto (el típico dump sql) de tamaño 137Mb:
$ time bzip2 poc.sql

real 0m33.010s
user 0m32.788s
sys 0m0.147s

Y con pbzip2:
$ time pbzip2 poc.sql

real 0m19.827s
user 0m36.868s
sys 0m0.960s

Seguir leyendo