Почти Линейное Увеличение Производительности Bzip2 На Многопроцессорных Системах

Linux часто использует сжатие gzip и bzip2. Оба они обеспечивают хорошую плотность сжатия и просты в использовании.

При этом bzip2 сжимает большинство файлов эффективнее — но, с другой стороны, медленнее, чем более традиционные gzip или zip. Но вы можете получить эффективность bzip2, значительно увеличив при этом скорость.

Мы говорим об утилите.

pbzip2 - Параллельный BZIP2. Обычно при использовании bzip2 используется только одно ядро процессора, тогда как в современных системах их может быть 2, 4 или, например, 8. Pbzip2 может использовать сразу несколько ядер процессора, что приводит, по мнению авторов, к практически линейному увеличению производительности.

Сжатые файлы, создаваемые pbzip2, полностью совместимы с bzip2 1.0.2 и более новые версии bzip2 (также есть утилита свинья , который, в свою очередь, представляет собой многопоточную реализацию gzip — спасибо альтексхх ).

Ниже приведен результат тестирования скорости сжатия раздела SQL-файла размером 1000 МБ (dd if=dump.sql of=testfile bs=1M count=1000) на компьютере с двумя процессорами Intel Xeon E5520 (4 ядра, 8 потоков, тактовая частота).

2,26 ГГц):

Почти линейное увеличение производительности bzip2 на многопроцессорных системах

Как видно из результатов тестирования, pbzip2, работающий в 4 потока, примерно в 3,6 раза быстрее, чем bzip2, работающий в один поток, что действительно является почти линейным увеличением производительности.

При этом pbzip2, работающий в 16 потоков, оказался медленнее, чем pbzip2, использующий 4 потока — вероятно, из-за скорости операций ввода-вывода.

Также смотрите дополнительные тесты в комментариях (Спасибо Тристан И близь ) — в том числе с использованием раздела tmpfs в оперативной памяти.

pbzip2 используется примерно так же, как и просто bzip2, но есть некоторые дополнительные функции, например результат прогресса завершение операции в процентах.

Чтобы сжать файл:

pbzip2 -k -p4 filename

Где имя файла - имя файла.

По умолчанию сжатый файл называется так же, как и исходный, но в конце добавляется расширение .

bz2 (то есть в данном случае имя_файла.

bz2 ).

Опция -k необходима, чтобы предотвратить удаление исходного кода pbzip2 после завершения сжатия.

Вы также можете добавить опцию -v для отображения подробной информации, включая процент выполнения операции.

Опция -p устанавливает количество потоков (в данном случае 4).

Чтобы разархивировать файл:

pbzip2 -dk -p4 filename.bz2

Где имя_файла.

bz2 - имя файла.

По умолчанию распакованный файл называется так же, как и сжатый, но в конце удаляется расширение .

bz2 (то есть в данном случае имя файла ).

Опция -d необходима для выполнения распаковки.

Соответственно, вместе с выводом подробной информации и ходом операции сжатие будет выглядеть так:

pbzip2 -kv -p4 filename

Распаковать файл можно так:

pbzip2 -dkv -p4 filename.bz2

Если вам необходимо сжать целый каталог, то, как и в случае с gzip и bzip2, создается так называемый tarball (который сам по себе не имеет сжатия), содержащий нужный каталог, и он сжимается необходимой утилитой.

В случае с pbzip2 это можно сделать в одну строку следующим образом:

tar cf myfile.tar.bz2 --use-compress-prog=pbzip2 directory_to_compress/

Или вот так:

tar -c directory_to_compress/ | pbzip2 -c > myfile.tar.bz2

Во втором случае соответственно можно еще добавить -p4 (чтобы установить количество потоков 4).

Теги: #linux #конфигурация Linux #производительность #многопоточность #сжатие #сжатие #bzip2 #bzip2 #pbzip2

Вместе с данным постом часто просматривают: