acelera a compactação gzip

12

É possível acelerar o processo gzip ?

Estou usando

mysqldump "$database_name" | gzip > $BACKUP_DIR/$database_name.sql.gz

para fazer backup de um banco de dados em um diretório, $BACKUP_DIR .

a manpage diz:

-# --fast --best
Regulate the speed of compression using the specified digit #, where -1 or --fast indi‐ cates the fastest compression method (less compression) and -9 or --best indicates the slowest compression method (best compression). The default compression level is -6 (that is, biased towards high compression at expense of speed).

  • Quão eficaz seria usar --fast ?
  • Isso está efetivamente reduzindo o uso da CPU em um computador moderno?

Meus resultados de teste

Eu não notei nenhuma aceleração:

  • 7 min, 47 segundos (com proporção padrão -6 )
  • 8 min, 36 segundos (com taxa --fast (= 9))

Então, demora mais tempo para usar a compactação rápida?

Somente a compactação mais alta diminui a velocidade:

  • 11 min, 57 segundos (com taxa --best (= 1))

Depois de obter a ideia com lzop , também testei e é realmente mais rápido:

  • 6 min, 14 segundos com lzop -1 -f -o $BACKUP_DIR/$database_name.sql.lzo
por rubo77 29.08.2013 / 17:57

3 respostas

15

Se você tem uma máquina multi-core usando o pigz é muito mais rápido que o tradicional gzip.

pigz, which stands for parallel implementation of gzip, is a fully functional replacement for gzip that exploits multiple processors and multiple cores to the hilt when compressing data. pigz was written by Mark Adler, and uses the zlib and pthread libraries.

Pigz ca pode ser usado como substituto do gzip. Note que apenas a compressão pode ser paralelizada, não a descompressão.

Usando o pigz, a linha de comando se torna

mysqldump "$database_name" | pigz > $BACKUP_DIR/$database_name.sql.gz
    
por 29.08.2013 / 18:33
5

De man gzip :

   -# --fast --best
          Regulate  the  speed  of compression using the
          specified digit #, where -1  or  --fast  indi‐
          cates  the  fastest  compression  method (less
          compression) and -9 or  --best  indicates  the
          slowest compression method (best compression).
          The default compression level is -6 (that  is,
          biased  towards high compression at expense of
          speed).
    
por 29.08.2013 / 18:08
3

Se você precisar que ele seja rápido devido a problemas de bloqueio do banco de dados, e você tiver um disco rápido / grande o suficiente para manter os dados descompactados temporariamente, considere usar este método:

mysqldump "$database_name" > "$BACKUP_DIR"/"$database_name".sql
nice gzip "$BACKUP_DIR"/"$database_name".sql &

Ou seja. armazene o backup primeiro (que é mais rápido do que gzipping IF se o disco for rápido e a CPU estiver lenta) e então o gzip ocorrerá em segundo plano.

Isso também permite que você use um algoritmo de compactação melhor, já que não importa mais (diretamente) quanto tempo dura a compactação.

    
por 31.08.2013 / 12:49