Ускоряем создание бекапов Используем мультипроцессорность в gzip

Всем добра.
Есть у меня в арсенале одна машинка под управление FreeBSD, которая делает ежедневные бекапы самописными скриптами samba shares. размер данных растет, время бекапа увеличивается, в итоге получил ситуацию при которой бекап не успел сделаться в нерабочее время. Небольшой анализ выявил, что штатный gzip работает на одном ядре.
Беглое чтение интернет-поисковиков подсказали, что есть портированные архиваторы, которые умеет работать на нескольких процессорах (ядрах).
Свой выбор я остановил на pigz.

  1. Обновляем порты:
    # portsnap fetch update
  2. Устанавливаем pizg
    # cd /usr/ports/archivers/pigz/ && make install clean

Тестируем скорость:

  • Со штатным gzip
    time tar -cjf test_gz.tar.gz /usr/src/ 
    175.352u 14.007s 3:50.95 81.9%  71+173k 79974+1369io 0pf+0w
  • С pizg

    time tar --use-compress-program=/usr/local/bin/pigz -cjf test_pigz.tar.gz /usr/src/
    63.944u 14.120s 0:24.77 315.1%  88+301k 1+1761io 4pf+0w

Видим, что с использованием pigz выросла загрузка процессора с 81,9% до 315,1 и время работы команды уменьшилось.
По итогу первого дня использования, я получил сокращение более чем в 2 раза времени работы скрипта архивации.
Но немного увеличиваются получаемые архивы, для меня это не критично.

ll -h | grep "test_*"
-rw-r--r--  1 root  wheel   171M  3 окт.  10:41 test_gz.tar.gz
-rw-r--r--  1 root  wheel   220M  3 окт.  10:45 test_pigz.tar.gz

Видно, что архив полученный с помощью pigz имеет объем больше.
На практике получил такую картину:

ll -h /backup/sharename/
-rw-r--r--  1 root  wheel    51G  2 окт.  03:37 01.10.2017.tar.gz
-rw-r--r--  1 root  wheel    53G  2 окт.  23:01 02.10.2017.tar.gz

Т.е. архив стал весить на 2Gb больше, но был сделан на 4:31 час раньше.
У pgzip есть опция сжатия от 0 до 9, на практике большого выигрыша я не получил:

time tar --use-compress-program="/usr/local/bin/pigz -9" -cjf test_pigz9.tar.gz /usr/src/
 171.065u 12.868s 0:48.53 378.9% 89+314k 1+1742io 0pf+0w
ll -h | grep "test_*"
-rw-r--r--  1 root  wheel   171M  3 окт.  10:41 test_gz.tar.gz
-rw-r--r--  1 root  wheel   220M  3 окт.  10:45 test_pigz.tar.gz
-rw-r--r--  1 root  wheel   218M  3 окт.  10:49 test_pigz9.tar.gz

Архив с опцией -9 стал весить меньше всего на 2 мегабайта.
Собственно все, надеюсь, что материал кому-нибудь пригодится.

0 0 голосовать
Рейтинг статьи
Подписаться
Уведомление о
guest
0 Комментарий
Встроенные отзывы
Просмотр всех комментариев