ускорить сжатие GZIP

15

Можно ли ускорить gzipпроцесс?

я использую

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

для резервного копирования базы данных в каталог $BACKUP_DIR.

на странице написано:

- # --fast --best
Регулирует скорость сжатия, используя указанную цифру #, где -1 или --fast указывает на самый быстрый метод сжатия (без сжатия), а -9 или --best указывает на самый медленный метод сжатия ( лучшее сжатие). Уровень сжатия по умолчанию равен -6 (то есть смещен в сторону высокого сжатия за счет скорости).

  • Насколько эффективно это будет использовать --fast?
  • Эффективно ли это снижает использование процессора на современном компьютере?

Мои результаты теста

Я не заметил никакого ускорения:

  • 7 минут, 47 секунд (с коэффициентом по умолчанию -6 )
  • 8 минут, 36 секунд (с соотношением --fast(= 9))

Таким образом, кажется, что это займет еще больше времени, чтобы использовать быстрое сжатие?

Только более высокое сжатие действительно замедляет это:

  • 11 минут, 57 секунд (с соотношением --best(= 1))

После того, как lzopя получил идею, я тоже проверил это, и это действительно быстрее:

  • 6 минут, 14 секунд с lzop -1 -f -o $BACKUP_DIR/$database_name.sql.lzo
rubo77
источник
Связанный: unix.stackexchange.com/questions/87111/...
ОДС
Вас беспокоит время процессора или общее время (часы)? - Лучше 9, - Быстро 1.
Стефан Шазелас
3
Если gzip -1не достаточно быстро, используйтеlzop
Стефан Шазелас
1
Существует также, lz4который еще быстрее увидеть этот тест . Но, похоже, lzop и lz4 нужно гораздо больше памяти. будет ли проблема в моем одноядерном ОЗУ объемом 1 ГБ, когда lz4 использует в 30 раз больше памяти при сжатии, чем gzip, когда я сжимаю большие базы данных?
rubo77
lz4 не нужно так много памяти. Если вы используете утилиту lz4c, то почти вся память выделяется для буфера ввода / вывода. Вы можете уменьшить это, используя меньшие буферы (опция -B4 для буферов 64 КБ). Поскольку меньшие буферы также означают худшее сжатие, полезно включить сжатие с цепочкой (опция -BD). См .: fastcompression.blogspot.fr/2013/08/…
Cyan

Ответы:

19

Если у вас многоядерный компьютер, использование pigz намного быстрее, чем традиционный gzip.

pigz, который означает параллельную реализацию gzip, является полностью функциональной заменой gzip, которая использует несколько процессоров и несколько ядер для сжатия при сжатии данных. pigz был написан Марком Адлером и использует библиотеки zlib и pthread.

Свинья может быть использована в качестве замены для gzip. Обратите внимание, что можно распараллелить только сжатие, а не распаковку.

Используя pigz, командная строка становится

mysqldump "$database_name" | pigz > $BACKUP_DIR/$database_name.sql.gz
Marco
источник
это также ускоряет процесс на одноядерном процессоре?
rubo77
@ rubo77 - нет, это раздувает сжатие между несколькими ядрами.
SLM
pigzувеличивает нагрузку на процессор, но снижает время, необходимое для многопроцессорных систем
Стефан Шазелас
Действительно, и это часто то, что желательно. И обычно (в зависимости от аппаратного обеспечения) сжатие gzip зависит от процессора (производительность одного потока), а сжатие PIGZ часто связано с вводом-выводом.
Марко
5

От 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).
Тердон
источник
3

Если вам нужно, чтобы он был быстрым из-за проблем с блокировкой базы данных, и у вас достаточно быстрый / большой диск для временного хранения данных без сжатия, вы можете вместо этого использовать этот метод:

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

Т.е. сначала сохраните резервную копию (что быстрее, чем gzipping, если диск работает быстро, а процессор работает медленно), а затем произойдет gzipping в фоновом режиме.

Это также может позволить вам использовать лучший алгоритм сжатия, поскольку больше не имеет значения (напрямую), сколько времени занимает сжатие.

frostschutz
источник