Какие инструменты сжатия доступны в Ubuntu, которые могут извлечь выгоду из многоядерного процессора.
Ну, ключевое слово было параллельным. После поиска всех инструментов сжатия, которые были также параллельны, я обнаружил следующее:
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%)
Кроме того, хорошее резюме выше (спасибо Луис), в эти дни люди могут также хотеть рассмотреть 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 ,
XZ Utils поддерживает многопоточное сжатие с версии v.5.2.0, оно было ошибочно задокументировано как многопоточная декомпрессия.
Например: tar -cf - source | xz --threads=0 > destination.tar.xz [ ! d3]
lzop также может быть жизнеспособным вариантом, хотя он однопоточный.
Он использует очень быстрый алгоритм сжатия lzop , который в 5-6 раз быстрее, чем gzip в моем Замечание: Несмотря на то, что он еще не многопоточен, он, вероятно, опередит свиней на 1-4-ядерных системах. Вот почему я решил опубликовать это, даже если он не отвечает на ваш вопрос напрямую. Попробуйте, он может решить проблему с узким местом вашего процессора при использовании только одного процессора и сжатия немного хуже. Я часто обнаружил, что это лучшее решение, чем, например, pigz.
Компрессор LZMA2 p7zip использует оба ядра в моей системе.
Zstandard поддерживает многопоточность с v1.2.0¹. Это очень быстрый компрессор и декомпрессор, предназначенный для замены gzip, и он также может сжимать как эффективный - если не лучше - как LZMA2 / XZ на самых высоких уровнях.
Вы должны использовать v1.2.0 или более новая версия, или скомпилировать последнюю версию из источника, чтобы получить эти преимущества. К счастью, он не тянет много зависимостей.
В v1.1.0 zstd также был сторонний pzstd.Это не совсем ответ, но я думаю, что это достаточно актуально, чтобы поделиться моими сравнениями, сравнивая скорость 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 dumpgzip 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)