Про актуальность многопотокового архиватора, который использовал бы сразу несколько процессоров (ядер) для упаковки файла, я уже говорил. И даже приводил пример архиватора pbzip2 — многопотокового пакователя в .bz2. Недавно отыскалось аналогичное воплощение для .gzИтак, архиватор pigz. Как говорится на сайте, читать это название надо не как “pigs” (типа, множество свиней), а как “пиг-зии”. Пакует, как уже было сказано, в популярный формат .gz. Количество процессоров распознаёт автоматически. Скачать исходники можно на www.zlib.net/pigz, там же находится документация. Версию для openSUSE берём в репозитории software.opensuse.org.
Начнём тестирование. Запакуем, к примеру на 4-процессорной машине архивчик на 1,3ГБ:
flycat:/mnt/g1/0/backups-full # ls -l -rw-r--r-- 1 flycat users 1376542720 Oct 22 13:29 sochi-ticker.tar -rw-r--r-- 1 root root 1376542720 Oct 22 13:30 sochi-ticker1.tar flycat:/mnt/g1/0/backups-full # cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 15 model : 4 model name : Intel(R) Xeon(TM) CPU 3.20GHz stepping : 3 cpu MHz : 3200.067 cache size : 2048 KB ... skip ... flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc pebs bts nopl pni monitor ds_cpl cid cx16 xtpr bogomips : 6400.13 ... skip ... processor : 3 vendor_id : GenuineIntel cpu family : 15 model : 4 model name : Intel(R) Xeon(TM) CPU 3.20GHz stepping : 3 cpu MHz : 3200.067 cache size : 2048 KB ... flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc pebs bts nopl pni monitor ds_cpl cid cx16 xtpr bogomips : 6400.30
Сначала обычным архиватором:
butt2:/mnt/g1/0/backups-full # time gzip -9 sochi-ticker.tar real 6m34.877s user 6m24.924s sys 0m5.680s
А затем параллельным:
butt2:/mnt/g1/0/backups-full # time pigz -9 sochi-ticker1.tar real 2m41.780s user 8m42.309s sys 0m7.396s
Ну что же, разница во времени весьма существенна. Понятное дело, что не в 4 раза для 4 камней — не всё определяется процессорами, сказывается и ввод-вывод, но программа вполне применима для желающих сэкономить время. Думаю, для десктопа — самое то. По поводу серверов — не знаю, не знаю, надо ещё подумать: а стоит ли загружать все ядра сервера?
7zip же! И давно уже.
Хм, я считал, что он кроме своего 7z ничего не понимает.
Ну, посмотрим-посмотрим…
В общем-то я не сомневаюсь в увеличении производительности, но учитывая хорошее умение линукса кэшировать доступ к файлам, нужно было делать минимум по два чередующихся прогона, чтобы второй по счёту не имел форы в виде закэшированных в памяти файлов, которые там появились после первого прогона.
Обратите внимание, что я паковал разные файлы (хотя и аналогичные по содержимому).
разница в скорости удивила) нужно будет попробовать
Не думал, что будет такая большая разница.