Обратил я тут внимание на то что архивирование в 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