Многопоточное архивирование в Linux при помощи tar

Обратил я тут внимание на то что архивирование в Linux через tar занимает только одно ядро и решил поискать как это можно исправить и утилизировать все 4 ядра своего процессора.

В мануале по tar я нашел такую опцию:

-I, –use-compress-program PROG
filter through PROG (must accept -d)

А поиск по интернету выдал мне многопоточные архиваторы:

  • gz:   pigz
  • bz2: pbzip2
  • xz:   pxz

Установить все три можно в Ubuntu командой:

sudo apt-get install pxz pigz pbzip2

Команды для архивации:

  • gz:   tar -czf tarball.tar.gz files
  • bz2: tar -cjf tarball.tar.bz2 files
  • xz:   tar -cJf tarball.tar.xz files

Команды для разархивации:

  • gz: tar -xzf tarball.tar.gz
  • bz2: tar -xjf tarball.tar.bz2
  • xz: tar -xJf tarball.tar.xz

А теперь параллельная версия архивации:

  • gz:   tar -I pigz -cf tarball.tar.gz files
  • bz2: tar -I pbzip2 -cf tarball.tar.bz2 files
  • xz:   tar -I pxz -cf tarball.tar.xz files

И разархивации:

  • gz:   tar -I pigz -xf tarball.tar.gz
  • bz2: tar -I pbzip2 -xf tarball.tar.bz2
  • xz:   tar -I pxz -xf tarball.tar.xz

Воспользуюсь исходниками ядра Linux версии 4.15 буду архивировать и разархивировать на M.2 SSD диске используя CPU Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz 4 cores, 4 threads, 8Gb RAM

Время архивации(больше проверять не вижу смысла):

.                                    gzip           bzip2                 xz
Однопоточное          26.409s    1m23.939s    6m43.628s
Многопоточное        10.048s      34.784s       2m45.230s

dreamway89

dreamway89 wrote 29 posts

Post navigation


Добавить комментарий

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>