Многоядерные компрессионные инструменты

Какие инструменты сжатия доступны в Ubuntu, которые могут извлечь выгоду из многоядерного процессора.

1
задан 13 April 2017 в 15:23

7 ответов

Ну, ключевое слово было параллельным. После поиска всех инструментов сжатия, которые были также параллельны, я обнаружил следующее:

parallel - Parallel XZ - это утилита сжатия, которая использует преимущества сжатия LZMA разных частей ввода файл на нескольких ядрах и процессорах одновременно.

sudo apt-get install pxz

PLZIP - Lzip - это компрессор данных без потерь, основанный на LZMA алгоритм с очень безопасной проверкой целостности и пользовательским интерфейсом, подобным интерфейсу gzip или bzip2. Lzip распаковывается почти так же быстро, как gzip, и сжимается лучше, чем bzip2, что делает его хорошо подходящим для распространения программного обеспечения и архивирования данных.

Plzip - это многопроцессорная версия lzip, использующая формат файла lzip ; файлы, созданные plzip, полностью совместимы с lzip.

Plzip предназначен для более быстрого сжатия / декомпрессии больших файлов на многопроцессорных машинах, что делает его особенно хорошо подходящим для распространения больших файлов программного обеспечения и архивирования больших объемов данных , В файлах, достаточно больших, plzip может использовать сотни процессоров.

sudo apt-get install plzip

PLZIP - pigz, что означает параллельную реализацию GZip, является

sudo apt-get install pigz

PBZIP2 - pbzip2 - это параллельная реализация блока-сортировочного файла для сортировки файлов bzip2 который использует pthreads и достигает почти линейного ускорения на SMP-машинах. Выход этой версии полностью совместим с bzip2 v1.0.2 (т.е.: все сжатые с pbzip2 могут быть декомпрессированы с помощью bzip2).

sudo apt-get install pbzip2

PBZIP2 - многопоточная программа сжатия, которая может обеспечить очень высокие коэффициенты сжатия и скорость при использовании с большими файлами. Он использует комбинированные алгоритмы сжатия zpaq и lzma для максимального сжатия, lzo для максимальной скорости и уменьшения избыточности rzip на большие расстояния. Он предназначен для масштабирования с увеличением с объемом оперативной памяти, улучшением сжатия. Выбор оптимизации по размеру или скорости позволяет либо улучшить сжатие, чем даже lzma, либо обеспечить лучшую скорость, чем gzip, но с уровнями сжатия в размере bzip2.

sudo apt-get install lrzip

A (с использованием теста Oli):

ОРИГИНАЛЬНЫЙ ФАЙЛ РАЗМЕР - 100 МБ PBZIP2 - 101 МБ (1% больше) PXZ - 101 МБ (1% больше) PLZIP - 102 МБ (1% больше) ) LRZIP - 101 МБ (1% больше) PIGZ - 101 МБ (1% больше)

Небольшой показатель сжатия (с использованием текстового файла):

ОРИГИНАЛЬНЫЙ ФАЙЛ РАЗМЕР - 70 КБ Текстовый файл PBZIP2 - 16,1 КБ (23%) PXZ - 15,4 КБ (22%) PLZIP - 15,5 КБ (22,1%) LRZIP - 15,3 КБ (21,8%) [d24 ] PIGZ - 17,4 КБ (24,8%)

63
ответ дан 25 May 2018 в 01:19
  • 1
    +1 Для более разнообразных форматов сжатия. – Ramchandra Apte 3 November 2013 в 16:06
  • 2
    хороший список и обзор! благодаря! – Felipe Alvarez 9 December 2013 в 08:04
  • 3
    Примеры были бы замечательными. – earthmeLon 5 November 2014 в 01:38
  • 4
    @earthmeLon Прочитайте ответ Оли, в котором упоминается, как создать файл примера. Затем продолжайте использовать команды, которые я использовал. – Luis Alvarado♦ 5 November 2014 в 02:09

Кроме того, хорошее резюме выше (спасибо Луис), в эти дни люди могут также хотеть рассмотреть PIXZ, который, согласно его README (источник: https://github.com/vasi/pixz - я еще не подтвердил само по себе) имеет некоторые преимущества по сравнению с PXZ.

[Compared to PIXZ, PXZ has these advantages and disadvantages:]

    * Simpler code
    * Uses OpenMP instead of pthreads
    * Uses streams instead of blocks, not indexable
    * Uses temp files and doesn't combine them until the whole file is compressed, high disk/memory usage

Другими словами, PIXZ предположительно обладает большей емкостью памяти и диска и имеет дополнительную функцию индексирования, которая ускоряет декомпрессию отдельных компонентов сжатых файлов tar ,

9
ответ дан 25 May 2018 в 01:19
  • 1
    Однако я понимаю, что архивы pixz не совместимы со стандартным форматом xz, как pxz. – Mxx 30 June 2014 в 23:04
  • 2
    @Mxx: форматы файлов совместимы. pixz могут распаковывать архивы xz, а xz могут распаковывать архивы pixz. Однако параметры командной строки на xz и pixz отличаются. – Snowball 24 October 2014 в 12:24
  • 3
    Индексируемые файлы - большая победа для pixz. – ostrokach 2 February 2016 в 13:37

Обновление:

XZ Utils поддерживает многопоточное сжатие с версии v.5.2.0, оно было ошибочно задокументировано как многопоточная декомпрессия.

Например: tar -cf - source | xz --threads=0 > destination.tar.xz [ ! d3]

5
ответ дан 25 May 2018 в 01:19

lzop также может быть жизнеспособным вариантом, хотя он однопоточный.

Он использует очень быстрый алгоритм сжатия lzop , который в 5-6 раз быстрее, чем gzip в моем Замечание: Несмотря на то, что он еще не многопоточен, он, вероятно, опередит свиней на 1-4-ядерных системах. Вот почему я решил опубликовать это, даже если он не отвечает на ваш вопрос напрямую. Попробуйте, он может решить проблему с узким местом вашего процессора при использовании только одного процессора и сжатия немного хуже. Я часто обнаружил, что это лучшее решение, чем, например, pigz.

4
ответ дан 25 May 2018 в 01:19
  • 1
    Разве это не лучше для декомпрессии? Сжатие занимает примерно то же (или хуже), чем gzip – Lennart Rolland 29 May 2014 в 04:36
  • 2
    Я также могу засвидетельствовать, что lzop супер быстрый. Proxmox по умолчанию использует lzop для резервного копирования виртуальных машин. – Lonnie Best 14 October 2014 в 22:34
  • 3
    lz4 еще быстрее (и имеет многопоточную версию). – David Balažic 25 July 2016 в 15:57

Компрессор LZMA2 p7zip использует оба ядра в моей системе.

3
ответ дан 25 May 2018 в 01:19

Zstandard поддерживает многопоточность с v1.2.0¹. Это очень быстрый компрессор и декомпрессор, предназначенный для замены gzip, и он также может сжимать как эффективный - если не лучше - как LZMA2 / XZ на самых высоких уровнях.

Вы должны использовать v1.2.0 или более новая версия, или скомпилировать последнюю версию из источника, чтобы получить эти преимущества. К счастью, он не тянет много зависимостей.

В v1.1.0 zstd также был сторонний pzstd.
1
ответ дан 25 May 2018 в 01:19

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

Метаданные:

Используемое оборудование: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz (4c / 8t) + Nvme SSD GNU / Распространение Linux: Xubuntu 17.10 (artful) gzip версия: 1.6 pigz версия: 2.4 Сжатый файл - это 9.25 GiB SQL dump

gzip quick

time gzip -1kN ./db_dump.sql

real    1m22,271s
user    1m17,738s
sys     0m3,330s

gzip быстрый

time gzip -9kN ./db_dump.sql 

real    10m6,709s
user    10m2,710s
sys     0m3,828s

pigz быстрый

time pigz -1kMN ./db_dump.sql 

real    0m26,610s
user    1m55,389s
sys     0m6,175s

pigz быстрый (no zopfli)

time pigz -9kMN ./db_dump.sql 

real    1m54,383s
user    14m30,435s
sys     0m5,562s

pigz + zopfli алгоритм

time pigz -11kMN ./db_dump.sql 

real    171m33,501s
user    1321m36,144s
sys     0m29,780s

В качестве нижней линии я бы не рекомендовал алгоритм zopfli, поскольку сжатие получило огромную сумму

Результирующие размеры файлов:

Используемое оборудование: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz (4c / 8t) + Nvme SSD quicks: 1680M Распространение GNU / Linux: Xubuntu 17.10 (artful)
1
ответ дан 25 May 2018 в 01:19
  • 1
    Спасибо тебе друг. Результаты выглядят очень хорошо. – Luis Alvarado♦ 19 January 2018 в 21:50

Другие вопросы по тегам:

Похожие вопросы: