Как сжимать архивы с использованием всех ядер процессора с помощью Tar

Если вам когда-либо приходилось сжимать большие объемы с помощью tar, вы знаете, насколько это может быть неприятно. Часто это происходит очень медленно, и вы нажимаете Ctrl + C, чтобы завершить задачу и просто забыть об этом. Однако есть и другие инструменты, которые может использовать tar, и они – отличный способ использовать современные многопоточные процессоры и ускорить архивирование tar. В этой статье показано, как заставить tar использовать все ядра при сжатии архивов в Linux.

Здесь речь идет о трех основных инструментах: pigz, pbzip2 и pxz. Между инструментами есть некоторые тонкие различия, но различия лежат между gzip, bzip2 и xz. В этом соответствующем порядке уровни сжатия увеличиваются, что означает, что архив, сжатый с помощью gzip, будет больше, чем архив, сжатый с помощью xz, но gzip, естественно, займет меньше времени, чем xz. bzip2 находится где-то посередине.

Буква «p» в начале названия каждого из инструментов означает «параллельный». Распараллеливание – это то, что с годами становится все более актуальным – насколько хорошо что-то охватывает все ядра ЦП. Имея такие процессоры, как AMD Epyc и Threadripper, которые могут достигать 64 ядер и 128 потоков, важно понимать, какие приложения могут это использовать. Эти функции сжатия – главные кандидаты.

Чтобы установить инструменты, вы можете просто обратиться к своим репозиториям.

sudo apt install pigz pbzip2 pxz # Debian / Ubuntu sudo dnf install pigz pbzip2 pxz # Fedora sudo pacman -Sy pigz pbzip2 pxz # Arch Linux

Tar All Cores Dnf Установить

В этой статье основное внимание уделяется pxz для обеспечения единообразия. Вы можете проверить это руководство для pigz.

Сжатие архивов с помощью Tar

Синтаксис tar довольно прост. Чтобы просто сжать каталог, вы можете использовать такую ​​команду:

tar czf linux-5.10-rc3.tar.gz linux / tar cjf linux-5.10-rc3.tar.bz2 linux / tar cJf linux-5.10-rc3.tar.xz linux /

Первый будет использовать gzip, второй – bzip2, а третий – xz. Имя файла и каталог будут различаться в зависимости от того, что вы делаете, но я вытащил ядро ​​Linux из GitHub в свой каталог «/ home», и я буду его использовать. Итак, я начну эту команду с команды времени впереди, чтобы посмотреть, сколько времени это займет. Вы также можете видеть, что xz указан как занимающий самый высокий процент моего процессора в этой системе, но он фиксирует только одно ядро ​​на 100 процентов.

Tar Все ядра Tar Xz

Смола Все Ядра Htop 1

И, как видите, моим стареющим i7-2600 потребовалось очень много времени для сжатия Linux 5.10-rc3 (около 28 минут).

Смолить все ядра Xz Time

Вот где пригодятся эти инструменты параллельного сжатия. Если вы сжимаете большой файл и хотите сделать это быстрее, я не могу рекомендовать эти инструменты в достаточной степени.

Вы можете либо указать tar использовать программу сжатия с параметром –use-compress-program, либо использовать немного более простой командный флаг -I. Пример синтаксиса любого из этих инструментов будет таким:

tar -I pigz -cf linux-5.10-rc3.tar.gz linux / tar -I pbzip2 -cf linux-5.10-rc3.tar.bz2 linux / tar -I pxz -cf linux-5.10-rc3.tar.xz linux /

Давайте протестируем это и посмотрим, сколько времени потребуется моей системе, чтобы сжать ядро ​​Linux с доступом ко всем восьми потокам моего процессора. Вы можете видеть мои показания htop, показывающие все потоки, закрепленные при 100-процентном использовании из-за pxz.

Tar Все ядра Tar Pxz

Смола Все Ядра Htop 2

Вы можете видеть, что сжатие этого архива заняло существенно меньше времени (около семи минут!), И это было при многозадачности. У меня есть виртуальная машина, работающая в фоновом режиме, и сейчас я просматриваю веб-страницы. Планировщик оборудования ядра Linux предоставит вам все, что вам нужно для ваших личных вещей, поэтому, если вы оставите свою команду pxz для работы без каких-либо других работ, запущенных в вашей системе, вы сможете сделать это быстрее.

Смолить все ядра Pxz Time

Регулировка уровней сжатия с помощью pigz, pbzip2 и pxz

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

Tar Все ядра Tar Pxz 9

Смола все ядра Pxz 9 раз

Сравнение сжатия всех ядер гудрона

Сжатие не намного больше, и время не обязательно того стоит, но если на счету каждый мегабайт, это все равно отличный вариант.

Надеюсь, вам понравилось это руководство по использованию всех ядер для сжатия архивов с помощью tar. Обязательно ознакомьтесь с некоторыми из других наших материалов по Linux, например, как собрать новый ПК для Linux, освоить Apt и стать гуру Apt, а также как установить Arch Linux на Raspberry Pi.

Связанный:

Эта статья полезна? да нет

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *