segunda-feira, 17 de novembro de 2008

pbzip2: bzip2, em paralelo

Apesar de ser mais lento, muitas vezes o bzip2 é escolhido por causa de sua melhor compressão. Mas agora há um significante aumento na velocidade, pois surgiu o pbzip2 (o prefixo p significa paralelo). Com isso, preferir o bzip2 em processadores multicore ficou ainda mais provável.

Pelo gkrellm (meu favorito) ou top, conseguimos ver que o bzip2 consome apenas uma CPU. Mas, se usarmos o pbzip2, ambas as CPUs são utilizadas. O autor diz que o speedup é quase linear, ou seja, se usado em um dual-core, o tempo de compressão será quase a metade e, no caso de um quad-core, quase um quarto!

Ele é totalmente compatível com o bzip2, ou seja, é possível comprimir o arquivo em um deles e descomprimí-lo usando outro. Porém, senti falta da leitura da entrada padrão, fazendo com que a criação de tarballs tenha que ser feita em dois estágios. Exemplo:
tar cf dir.tar dir/
pbzip2 dir.tar

A computação paralela é o caminho para continuarmos seguindo a Lei de Moore e uma prova disso é que o número de núcleos por processador não pára de aumentar (e não a velocidade de cada um). Contudo, utilizar todos eles ao mesmo tempo de maneira eficiente não é automático, e os algoritmos têm que ser revistos. Em breve, acredito que o pbzip2 substituirá o bzip2, por só oferecer vantagens nos processadores mais modernos enquanto mantém a compatibilidade com o último.

0 comentários: