Z-стандарт Facebook “zstd” & “pzstd” – средства сжатия данных обеспечивают высокую производительность & эффективность

В Ubuntu 16.04 и многих других, недавних операционных системах до сих пор используют одно поточный вариант сжатия данных & файлов, с помощью утилит bzip2 или gzip по умолчанию, но некоторое время назад появились новые инструменты совместимые с много поточным сжатием, такие как lbzip2, pigz или pixz, теперь вы можете заменить инструменты используемые по умолчания, для получения более быстрого сжатия и распаковки на много-ядерных системах. В этой статье пойдет обсуждение алгоритма сжатия Facebook’s Z-стандарт 1.0, обещающего более быстрое и качественное сжатие. Проект имеет как открытый исходный код, он выпущен под BSD лицензией и предлагает, как одно поточный инструмент zstd, так и много-поточный инструмент pzstd. Так что многие уже начали делать собственные небольшие тесты, результаты были поразительны. Некоторые опасения вызывают патенты, но пока разработчики продолжают работу над выявлением и исправлением ошибок включающих в себя pzstd segfaulting на ARM.

Zstd против Zlib, степень сжатия против скорости – Нажмите чтобы увеличить

Zlib имеет 9 уровень сжатия, в то время как Zstd имеет 19, Facebook протестировал все уровни сжатия и скорость, и нарисовал диаграмму, показанную выше, сравнения скорости сжатия и коэффициент сжатия и Zstd явно превосходит zlib.

Они также сравнили производительность и коэффициент сжатия, и распаковки для различных других, конкурирующих, быстрых алгоритмов используя lzbench, для выполнения тестирования из памяти, во избежании ввода/вывода данных из устройств хранения.

Имя Степень сжатия C.speed D.speed
MB/s MB/s
zstd 1.0.0 -1 2.877 330 940
zlib 1.2.8 -1 2.730 95 360
brotli 0.4 -0 2.708 320 375
QuickLZ 1.5 2.237 510 605
LZO 2.09 2.106 610 870
LZ4 r131 2.101 620 3100
Snappy 1.1.3 2.091 480 1600
LZF 3.6 2.077 375 790

Среди всех этих алгоритмов Zstd имеет самую большую скорость и самый высокий коэффициент сжатия.

Но давайте вместо того чтобы просто доверять Facebook протестируем его самостоятельно. Последняя представленная версия 1.1.2, вот таким образом можно установить ее в Ubuntu 16.04:

Таким образом была установлена последняя, стабильная версия zstd, но в нее по умолчанию не входит поддержка много-поточного режима:

В zstd есть довольно таки много настроек:

Так как мы будем сравнивать результаты с другими алгоритмами, кэш файл отчищался перед каждым тестированием сжатия и распаковки:

Сжатие, с использованием настроек по умолчанию, основных каталогов Linux находящихся на жестком диске, с помощью tar + zstd (одиночный потокц):

и pzstd (множество потоков):

Имейте ввиду, что небольшую задержку вызывает ввод/вывод данных на стороне жесткого диска и если вы хотите сравнивать конкретно производительность компрессора вам необходимо использовать lzbench. Теперь давайте распакуем архив с помощью Z-стандарта:

Ниже приведена таблица сравнения времени распаковки и сжатия, на компьютере с восьмиядерным процессором AMD FX8350 и результаты пользовательского тестирования.

Сжатие Распаковка Размер файла (байт) Степень сжатия
Инструменты Время (с) “Пользовательское” Время (с) Время (с) “Пользовательское” Время (с)
ztsd 130.056 91.608 45.124 21.26 1,881,020,744 1.48
pzstd 58.929 86.56 38.175 23.39 1,883,697,296 1.48
lbzip2 84.216 353.84 37.109 167.416 1,855,837,345 1.50
pigz 61.121 121.332 34.36 15.26 1,903,915,372 1.47
pixz 177.596 1233.88 36.24 78.116 1,782,756,524 1.57
pzstd -19 275.361 1939.536 26.85 21.832 1,794,035,552 1.56

I’ve included both “real time” and “user time”, as the latter shows how much CPU time the task has spent on all the cores of the system. Если “пользовательское” время больше это означает что задача требует большей мощности процессора, но если “пользовательское” время ниже это значит, что инструмент более эффективен и требует меньше мощности. pigz это много-поточная версия алгоритма xz опирающаяся на lzma сжатие, которое обеспечивает более высокую степень сжатия, за счет более длительного времени сжатия, так что следующим шагом проверим pzstd с 19 уровнем сжатия для сравнения:

Степень сжатия Z-стандарта очень похожа на один из lbzip2 с настройками по умолчанию, но сжатие более быстрое и энерго-эффективное. По сравнению с gzip, (p)zstd предлагает лучшую степень сжатия, при работе с настройками по умолчанию и сопоставимой производительностью. pixz предлагает лучшую степень сжатия, но занимает больше времени на сжатие и использует больше ресурсов при распаковке, по сравнению с Z-стандартом и Pigz. Pzstd обладая 19 уровнем сжатия использует еще больше времени, его основным преимуществом является более быстрая скорость распаковки.

Выражаем свою благодарность источнику с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments